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
| Keep | Notes |
|---|---|
SDK package (@sentry/node, sentry-sdk, …) | No @epure/* client |
Sentry.init options (release, environment, integrations) | Replace only dsn |
| Envelope / store wire shape | Same HTTP paths under your host |
| Issue grouping model | Deterministic fingerprint, not ML |
What changes
| Sentry habit | Epure adjustment |
|---|---|
dsn points at *.ingest.sentry.io | Point at https://your-host/{project_id} with your public key |
| Traces, replay, profiles enabled | Set sample rates to 0 (items discarded) |
| Org / project in Sentry UI | New workspace + projects on your Epure host |
| SaaS quotas and spike protection | Per-fingerprint spike valve + hourly ingest cap per project |
| JS symbolication everywhere | JS/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 line | Epure |
|---|---|
| Performance / transactions | Discarded on ingest |
| Session replay | Discarded |
| Profiling | Discarded |
| iOS / Android native crashes | Out of scope — JVM .NET / Other |
| Historical issue import | Re-ingest only |
FAQ
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.