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:
| Source | Example 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
releasevalue 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.