Migrate from Sentry

Swap Sentry Cloud or self-hosted Sentry for Epure — change dsn, zero out discarded product lines, and verify the first issue.

You keep the official Sentry SDK for your runtime. Epure is not a fork of the client. Migration is mostly host + project id in dsn, plus turning off product lines Epure discards on ingest.

Compare stacks first: Epure vs Sentry. Need a greenfield path instead? Quickstart.

What stays the same

KeepNotes
SDK package (@sentry/node, sentry-sdk, …)No @epure/* client
Sentry.init options (release, environment, integrations)Replace only dsn
Envelope / store wire shapeSame HTTP paths under your host
Issue grouping modelDeterministic fingerprint, not ML

What changes

Sentry habitEpure adjustment
dsn points at *.ingest.sentry.ioPoint at https://your-host/{project_id} with your public key
Traces, replay, profiles enabledSet sample rates to 0 (items discarded)
Org / project in Sentry UINew workspace + projects on your Epure host
SaaS quotas and spike protectionPer-fingerprint spike valve + hourly ingest cap per project
JS symbolication everywhereJS/TS sourcemaps only; other languages stay raw frames

Self-host Sentry → Epure

You are leaving Kafka, ClickHouse, and a large container fleet for two Compose services (Rust + PostgreSQL 16). You are not importing historical Sentry issues — only forward ingest from the SDK swap.

Migration checklist

Run Epure and create a project

Install or use an existing host. Register, create a project (or use seed fixtures locally), open Settings → SDK connection, create a DSN key.

Map environments and releases

Match environment tags you already use (production, staging, …). Keep release strings if you rely on regressions or sourcemaps — Releases.

Update dsn in every service

One Epure project per instrumented surface, or share a project when you prefer a single feed. SPA + API often means Browser + Node inits: Pick your SDK.

Sentry.init({
  dsn: "https://YOUR_PUBLIC_KEY@your-host.example/YOUR_PROJECT_ID",
  environment: "production",
  release: "my-app@1.4.0",
  tracesSampleRate: 0,
  profilesSampleRate: 0,
  replaysSessionSampleRate: 0,
  replaysOnErrorSampleRate: 0,
});

Sentry JS 8.x: add enableTracing: false when the option exists. CI docs use 7.120.0: SDK matrix.

Re-point CI sourcemaps (JS/TS)

If you used @sentry/cli or Vite plugins against Sentry, change the auth host and project id to Epure. Walkthrough: Source maps.

Verify one exception per project

Expect 202 and an issue row. Empty feed after 202 → Verify.

Recreate alerts and webhooks

Epure does not import Sentry alert rules. Configure Alerts in the dashboard and webhooks for Slack/Discord: Alerts, Webhooks API.

What Epure does not replace (yet)

Sentry product lineEpure
Performance / transactionsDiscarded on ingest
Session replayDiscarded
ProfilingDiscarded
iOS / Android native crashesOut of scope — JVM .NET / Other
Historical issue importRe-ingest only
Can I run Sentry and Epure in parallel?

Yes. Use two Sentry.init calls only if you maintain two SDK instances (unusual). The usual pattern is dual-send via separate projects or a short overlap window: old DSN in staging, Epure DSN in production, then cut over.

Do I need to change my Sentry auth token in CI?

Release file uploads use DSN-style ingest auth, not SaaS user tokens. Point upload tooling at POST /api/{project_id}/releases/{version}/files/ on your Epure host: Ingest.

Will grouping match Sentry exactly?

No. Epure fingerprints SHA-256(exception type + top in-app frame). You can set SDK fingerprint overrides or merge issues in the UI: Issues.