Releases

The release option tags every event and error with the version of your app that produced it. This lets you compare error rates between deploys, see which version introduced a bug, and track whether a fix actually resolved an issue.

Setting a release

Pass release to init(). Any string works — semver, git SHA, or a deploy ID:

import { init } from "@emit-vision/sdk-js";
 
init({
  apiKey: process.env.EMIT_VISION_API_KEY,
  release: process.env.APP_VERSION ?? "dev", // e.g. "2.4.1" or "abc1234"
  environment: "production",
});

Good sources for the release string:

SourceExample value
npm package.json version"3.1.0"
Git commit SHA (short)"abc1234"
CI deploy ID"deploy-20260519-142"
Conventional: name@version"[email protected]"

If you use the name@version format, the dashboard can extract the package name and version separately, which is useful when you have multiple services sending to the same project.

What you see in the dashboard

The Releases tab shows:

  • Each unique release value seen in the last 30 days
  • New errors — errors first seen in that release
  • Resolved errors — errors from a previous release not seen since
  • Error rate — events-to-errors ratio for the release period
  • Adoption — what fraction of sessions are on the new release

Release-aware error grouping

In the Errors tab, every error group shows:

  • First seen in — the release where this error was first captured
  • Last seen in — the most recent release where it appeared
  • Affected releases — all releases where at least one occurrence was recorded

This lets you verify that a bug fix actually worked: if the error's "last seen in" matches the release before your fix, it's resolved.

Node.js

Set release in the Node SDK the same way, typically from an env var populated at deploy time:

import { init } from "@emit-vision/sdk-node";
 
init({
  apiKey: process.env.EMIT_VISION_API_KEY,
  release: process.env.APP_RELEASE ?? "local",
  environment: process.env.NODE_ENV ?? "development",
});

Per-event overrides

If you need to tag a specific event with a different release (e.g., a background job running an older version), pass it in options:

import { captureEvent } from "@emit-vision/sdk-js";
 
captureEvent(
  "migration_completed",
  { version: "v3" },
  {
    release: "[email protected]",
  },
);

This overrides the global release for that single event only.