Meteor Method Tracing built for DDP
See every Meteor method call with timing breakdowns, MongoDB queries, outbound HTTP and error context. Stop guessing which method is slow and fix it with the data already in front of you.
Why method tracing matters
Methods are where your app spends its time
In a Meteor application, nearly every user action is a DDP method call. Sign ins, form submits, admin actions and background triggers all flow through Meteor.methods. When a method is slow, your UI feels slow. When a method throws, a user sees an error. A method profiler that understands DDP is the fastest path from a vague report of "the app is laggy" to a concrete line of code to change.
Generic APM tools treat a Meteor method as just another HTTP handler, so they miss the structure that matters: sync vs async execution, the this.unblock() boundary, the MongoDB calls that fan out inside a single invocation and the user session that triggered it. SkySignal was written for Meteor, so it sees all of that.
What a single method trace contains
Every traced method is a structured timeline, not a single number. Drill into any call to see exactly where the time went.
Timing breakdown
Total duration, compute time, wait time and async boundary tracking so you can tell CPU-bound code from I/O waits.
MongoDB queries
Every query issued inside a method is captured with collection, filter shape, duration and whether an index was used.
Outbound HTTP
Fetch and undici calls made from inside methods are traced via Node diagnostics_channel so third-party latency is visible.
Errors and context
Stack traces, user id, session id and sanitized arguments travel with every failed method so reproducing is trivial.
How it works
From DDP packet to flame graph in one install
01
Install the agent
Add the skysignal:agent Atmosphere package. The agent wraps the DDP method dispatcher on boot - no code changes to your methods.
02
Collect in-process
Every inbound method starts a trace. MongoDB queries, outbound HTTP and awaited work are tied to the trace via AsyncLocalStorage.
03
Ship and query
Traces are batched and streamed to SkySignal. Sort by p95, filter by user or error, and jump from an alert straight to the offending call.
N+1 and unblock detection
Methods that call findOne inside a loop are flagged as N+1 candidates. Methods that never call this.unblock() and hold the DDP queue are highlighted separately - both are single click fixes that you would never find in a generic trace list.
Async-aware in Meteor 3
Meteor 3 methods are natively async. SkySignal uses AsyncLocalStorage to keep trace context alive across every await so awaited collection calls, aggregations and outbound fetches are all attributed to the right method. Meteor 2 fibers-based apps are fully supported too.
Stop guessing. Start tracing.
Free for 14 days. No credit card. 5 minute install.