Provenance
Error Tracking

Releases

Track deployments and link errors to specific versions

Releases

Releases track your deployments and link errors to specific versions. This enables:

  • Knowing which release introduced an error
  • Regression detection (resolved error reappears in a new release)
  • Filtering errors by release
  • Source map resolution per release

Creating Releases

provenance releases create \
  --origin my-app \
  --version 1.2.3 \
  --environment production \
  --commit abc123 \
  --branch main
const api = await provenance.api();
await api.origins.createRelease('my-app', {
  version: '1.2.3',
  environment: 'production',
  metadata: { commitSha: 'abc123', branch: 'main' },
});
curl -X POST https://your-api/api/origins/my-app/releases \
  -H "x-api-key: your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "version": "1.2.3",
    "environment": "production",
    "metadata": { "commitSha": "abc123", "branch": "main" }
  }'

The origin identifier can be a UUID or a mnemonic (e.g. my-app).

Releases are created automatically when you upload source maps as part of your build pipeline.

Render — add to your build command:

NEXT_PUBLIC_RELEASE_VERSION=$RENDER_GIT_COMMIT npm run build && node scripts/upload-sourcemaps.js

GitHub Actions:

- name: Upload source maps
  run: node scripts/upload-sourcemaps.js
  env:
    RELEASE_VERSION: ${{ github.sha }}
    PROVENANCE_API_URL: ${{ secrets.PROVENANCE_API_URL }}
    PROVENANCE_API_KEY: ${{ secrets.PROVENANCE_API_KEY }}
    PROVENANCE_ORIGIN_ID: my-app

The upload script creates the release and uploads source maps in one step.

Release Lifecycle

StatusMeaning
activeCurrent deployment for this origin + environment
supersededReplaced by a newer release
rolled_backManually marked as rolled back

Auto-Supersede

When you create a new release for the same origin + environment, the previous active release is automatically marked as superseded. Only one release can be active per origin + environment at a time.

Regression Detection

  1. You resolve an error issue and specify the release: resolved in v1.2.3
  2. A new occurrence of the same error arrives tagged with v1.3.0
  3. Since v1.3.0 ≠ v1.2.3, the issue auto-transitions to regressed

This tells you the fix didn't hold in the new release.

Current Release

The origin config tracks the current release:

{
  "errorTracking": {
    "currentRelease": "1.2.3"
  }
}

SDKs automatically tag captured errors with this release. It's updated automatically when you create a new release via the API.