Custom logs - Jam Documenation

Installation

Install the Jam SDK into your project:

npm install '@jam.dev/sdk'
yarn add '@jam.dev/sdk'

Usage

Call jam.metadata() once at the root of your app, in the same place you initialize your stores and render your root element. The callback you pass is invoked each time a Jam is captured, so the data is always live and never stale.

import { jam } from "@jam.dev/sdk";

jam.metadata(() => {
  return {
    userId: 5492,
    workspaceId: 'd3b59ce8-95f1-410c-bb5e-9dc598599336',
    timeSincePageLoad: performance.now(),
    // and any other debug data you'd need
  };
});

Once configured, your metadata appears inside every Jam filed from your site.

What data you can include

Beyond static values and local variables, you can pass in:

When is metadata captured?

Metadata is captured at the moment the bug reporter creates a Jam. Because the function you pass to jam.metadata() is called at capture time, the data reflects the live state of your app, not a stale snapshot from when the page loaded.

Limits and constraints

When calling jam.metadata(), the returned object must meet all of the following requirements:

  1. Must be an Object instance: for example, { a: 1, b: 2 }. Passing window (a Window instance) will not work.
  2. Under 10 KB when serialized.
  3. Serializable: if JSON.stringify cannot stringify it, Jam cannot store it.

Error handling

If your app throws an error, or any of the above constraints are not met, Jam will:

If jam.metadata() throws or returns an invalid value, the Jam is still created, but without your custom metadata. Check your browser console if you expect metadata and don’t see it in a Jam.