SkySignal APM for VS Code
Performance insights for Meteor applications, directly in your editor.
SkySignal APM surfaces real-time metrics, diagnostics, and optimization hints from your production Meteor app without leaving VS Code. See method latency, error rates, N+1 queries, observer leaks, and more — right where you write your code.
Features
Hover over any Meteor.methods, Meteor.publish, Meteor.subscribe, or Mongo.Collection reference to see live performance data:
- Color-coded type badge (METHOD, PUBLICATION, COLLECTION, SUBSCRIPTION)
- Headline metrics: latency (avg/p95), error rate, call volume, observer counts
- Warning pills for critical issues (N+1 queries, COLLSCAN, observer leaks)
- Click View Details to open a rich detail panel
Code Lenses
Clickable annotations above method and publication definitions showing key metrics at a glance:
847 calls/24h | avg 142ms | 2.3% errors | 2 issues
Each metric (calls, latency, errors, issues) can be individually toggled in settings.
A dedicated activity bar panel organizes your application's performance data:
SKYSIGNAL (my-app) [refresh] [settings]
Methods (24)
orders.create 285ms 4.1%
users.search 89ms 0.2%
...
Publications (8)
userData 12 observers
...
Collections (15)
Errors (3 active groups)
Code Health
Deprecated APIs: 7 sync calls
Vulnerabilities: 2 high
Observer Leaks: 1 suspected
- Single-click navigates to the definition in your codebase
- Double-click opens a rich detail panel
- Sortable by name, latency, error rate, or call volume
Inline Diagnostics
Squiggly underlines and Problems panel entries for performance issues detected in production:
- High error rates or latency (configurable thresholds)
- N+1 query patterns
- COLLSCAN (missing index) warnings
- Observer leak suspects
- Deprecated sync API usage
- Missing field projections in publications
- npm vulnerability findings
Each diagnostic category can be individually enabled/disabled.
Detail Panels
Rich webview panels with charts and tables for deep-diving into specific methods, publications, collections, or errors:
Method Detail — latency time series chart, time breakdown (db/http/async/wait/compute), N+1 patterns, slow queries, recent errors with stack traces
Publication Detail — observer type distribution (changeStream/oplog/polling), over-fetching analysis, linked observer table with leak confidence scores
Collection Detail — index list with sizes, slow queries with explain hints, methods that read/write the collection
Error Detail — occurrence frequency chart, full stack trace with clickable file paths, triggering method context
Status Bar
A persistent status bar item shows connection status and data freshness:
SkySignal: 30s ago
Click to refresh. Shows a warning icon when data is stale or the connection is lost.
Requirements
- A SkySignal APM account with the
@skysignal/agent package installed in your Meteor.js application
- SkySignal server running with REST API v2 enabled (v2.x+)
- VS Code 1.85.0 or later
- Meteor.js workspace (the extension activates when a
.meteor/ directory is detected)
Getting Started
- Install the extension from the VS Code Marketplace
- Open your Meteor.js project in VS Code
- Run SkySignal: Login from the Command Palette (
Ctrl+Shift+P)
- Enter your SkySignal server URL, email, and password
- Select the site to monitor (or let auto-detection match it from your
settings*.json)
The extension begins polling immediately. Hover over any Meteor construct to see live data.
Extension Settings
Connection
| Setting |
Default |
Description |
skysignal.serverUrl |
https://dash.skysignal.app |
SkySignal instance URL |
skysignal.siteId |
"" |
Manual site ID override |
skysignal.autoDetectSite |
true |
Auto-detect site from Meteor settings files |
Data
| Setting |
Default |
Description |
skysignal.defaultTimeRange |
24h |
Default time window (1h, 6h, 24h, 7d, 30d) |
skysignal.pollInterval |
60 |
Background poll interval in seconds (minimum: 10) |
Hovers
| Setting |
Default |
Description |
skysignal.hovers.enabled |
true |
Enable hover tooltips |
skysignal.hovers.methods |
true |
Show hovers for Meteor methods |
skysignal.hovers.publications |
true |
Show hovers for publications |
skysignal.hovers.collections |
true |
Show hovers for collections |
skysignal.hovers.subscriptions |
true |
Show hovers for subscriptions |
Code Lenses
| Setting |
Default |
Description |
skysignal.codeLens.enabled |
true |
Enable code lenses |
skysignal.codeLens.showCalls |
true |
Show call count |
skysignal.codeLens.showLatency |
true |
Show average latency |
skysignal.codeLens.showErrors |
true |
Show error rate |
skysignal.codeLens.showIssues |
true |
Show issue count |
Diagnostics
| Setting |
Default |
Description |
skysignal.diagnostics.enabled |
true |
Enable inline diagnostics |
skysignal.diagnostics.errorRateThreshold |
5 |
Error rate % to trigger a warning |
skysignal.diagnostics.latencyP95Threshold |
500 |
P95 latency (ms) to trigger a warning |
skysignal.diagnostics.n1Detection |
true |
Flag N+1 query patterns |
skysignal.diagnostics.collscanDetection |
true |
Flag COLLSCAN (missing index) |
skysignal.diagnostics.deprecatedApis |
true |
Flag deprecated sync API usage |
skysignal.diagnostics.missingProjection |
true |
Flag publications without field projections |
skysignal.diagnostics.observerLeaks |
true |
Flag suspected observer leaks |
skysignal.diagnostics.observerLeakConfidence |
60 |
Minimum confidence score (0-100) to report a leak |
skysignal.diagnostics.vulnerabilities |
true |
Flag npm vulnerabilities |
| Setting |
Default |
Description |
skysignal.sidebar.sortBy |
errorRate |
Sort order (name, latency, errorRate, calls) |
skysignal.sidebar.showHealthy |
true |
Show items with no issues |
Commands
| Command |
Description |
SkySignal: Login |
Authenticate with your SkySignal server |
SkySignal: Logout |
Disconnect and clear stored credentials |
SkySignal: Refresh Data |
Force an immediate data refresh |
SkySignal: Select Site |
Switch the monitored site |
SkySignal: Open Detail Panel |
Open a detail panel for a specific construct |
License
Proprietary. All rights reserved.