Skip to content

Features

Tracing that shows where the time goes

A trace is one operation from start to finish; a span is one timed step inside it. Buglapse builds traces automatically for page loads, navigations and HTTP requests, and lets you time your own code in one call.

All Buglapse features

Tracing

From a slow request to the slow step

  • Waterfall view

    Every span with its duration, parent, operation and status, laid out on a timeline — the slow step is visible without reading a single log.

  • Automatic spans

    In the browser a span opens for the initial page load and for every route change, with fetch requests under it. In Node.js each incoming request is a root span and outgoing HTTP calls are recorded.

  • Browser and server together

    A request that starts in the browser and continues in your Node.js server is shown as one trace, so the frontend and the backend part of a slow page sit side by side.

  • Span metrics

    Attach named numbers to a span — rows imported, payload bytes, order total — and see them charted on the trace page. They cost nothing beyond the span itself.

How it works

Time your own code

  1. 1

    Enable tracing integrations

    Browser tracing and the Node.js HTTP integrations create spans for page loads, navigations and requests without any changes to your code.

  2. 2

    Wrap what matters

    Put a step into span or asyncSpan. It is timed and sent when the callback returns, resolves or throws; a span that throws is marked as failed.

  3. 3

    Open the trace

    Find the trace by name, duration or status and read the waterfall. Errors and logs captured during the operation are linked to it.

checkout.ts
import { asyncSpan } from '@buglapse/node'

await asyncSpan('checkout', async () => {
  await asyncSpan('reserve-stock', () => reserve(cart))
  await asyncSpan('charge-card', () => charge(cart))
})

In detail

How traces are built

Nesting without passing ids

There is no separate call to start a trace: the first span with no active parent becomes the root of a new one. A span started inside another becomes its child automatically. In Node.js the active span follows the asynchronous call chain, so concurrent requests each build their own tree and never see each other's spans. For work that overlaps in time, such as parallel requests, a leaf span that you end yourself keeps the tree correct.

Jobs, scripts and background work

Anything that is not an incoming HTTP request becomes a trace as soon as you wrap it in a root span: a queue job, a cron run, a migration script. Every span can carry a status, extra data and metrics, so a trace of an import job can show how many rows it handled and where it stalled.

On each plan

Compare all plans
On each plan
Free Pro Team
Spans / month100,0001,000,00010,000,000
Traces7 days14 days30 days

FAQ

Common questions

Still have questions?

Drop us a line — we'll help with setup, plans or self-hosting.

Contact us

or email hello@buglapse.com

Do I have to instrument everything by hand?
No. Page loads, route changes, fetch requests, incoming server requests and outgoing HTTP calls are traced by the integrations. Manual spans are for the steps specific to your application.
Can I trace queue jobs and cron tasks?
Yes. Wrap the job in a span and it becomes the root of its own trace, with every nested span, log and error attached to it.
How is tracing counted?
Tracing is counted in spans: each stored span counts toward the monthly span quota of the organization. Span metrics are free and do not change the count.

See also

Logs

Structured logs next to errors and traces, searchable by message, level and attribute.

Learn more: Logs

Error tracking

Every error grouped into one issue with a readable stack trace, breadcrumbs, the steps to the error and the affected users.

Learn more: Error tracking

Node.js

Errors, request traces, logs and event loop stalls from your Node.js server.

Learn more: Node.js

Ready to see what's happening in your app?

Create a project on the free plan and send your first event in a couple of minutes.

Still have questions? Email hello@buglapse.com