Sentry SDKs that work with Epure error tracking
Epure error tracking is compatible with the official Sentry SDKs for errors: @sentry/nextjs, @sentry/node, @sentry/browser, Python sentry-sdk, sentry-go, sentry-ruby, sentry/sentry-laravel, sentry-java, Sentry for .NET and more work after a dsn change. Ingest tests post 102 envelopes from 22 Sentry SDK fixture families, and each is accepted and stored. Epure keeps errors and drops transactions, replays and profiles.
There is no Epure SDK. JS and TS frames are symbolicated with source maps; other languages show raw frames. To switch an existing app, follow switch from Sentry and keep the Sentry SDK.
Which Sentry SDK versions are tested with Epure?
Every row below is a folder under fixtures/sentry/ in the engine repo. The versions are the SDK versions written in each fixture's envelope header. A fixture passes when POST /api/<project-id>/envelope/ returns 202, raw and gzip, and the event's issue appears in the database; the feedback fixtures must also create their feedback rows (ingest_envelope.rs, Epure v0.2.0, checked 6 Nov 2026).
| SDK package | Fixture SDK versions | Envelopes | Kept | Dropped | Stack frames | Setup |
|---|---|---|---|---|---|---|
@sentry/nextjs | 7.120.0, 8.30.0, 9.1.0, 10.76.2, 11.10.0 | 6 | Errors, breadcrumbs, context | Transactions, replays, profiles | JS/TS source maps | Next.js |
@sentry/node | 6.19.7, 7.120.0, 8.38.0, 9.1.0, 10.76.2, 11.10.0 | 7 | Errors, breadcrumbs, context | Transactions, profiles | JS/TS source maps | Node |
@sentry/browser | 6.19.7, 7.120.0, 8.38.0, 9.1.0, 10.76.2, 11.10.0 | 7 | Errors, breadcrumbs, context | Transactions, replays | JS/TS source maps | Browser |
@sentry/react | 10.76.2, 11.10.0 | 3 | Errors, breadcrumbs, context | Transactions, replays | JS/TS source maps | Browser |
@sentry/vue, @sentry/nuxt | 8.55.0, 10.76.2 (vue); 11.10.0 (nuxt) | 3 | Errors, breadcrumbs, context | Transactions, replays | JS/TS source maps | JavaScript |
@sentry/sveltekit | 8.55.0, 10.76.2, 11.10.0 | 3 | Errors, breadcrumbs, context | Transactions, replays | JS/TS source maps | JavaScript |
@sentry/astro | 8.55.0, 10.76.2, 11.10.0 | 3 | Errors, breadcrumbs, context | Transactions, replays | JS/TS source maps | JavaScript |
@sentry/remix | 8.55.0, 10.76.2, 11.10.0 | 3 | Errors, breadcrumbs, context | Transactions, replays | JS/TS source maps | JavaScript |
@sentry/nestjs | 10.56.0, 11.10.0 | 3 | Errors, breadcrumbs, context | Transactions | JS/TS source maps | Node |
@sentry/profiling-node | 10.56.0, 11.10.0 | 3 | The error event | Profiles, profile chunks | JS/TS source maps | Node |
@sentry/electron | 5.12.0, 6.11.0, 7.20.2, 8.3.0 | 4 | Errors, breadcrumbs, context | Transactions, native crash attachments | JS/TS source maps; no minidumps | Other runtimes |
Python sentry-sdk | 1.0.0, 1.45.0, 2.0.0, 2.13.0, 2.22.0, 2.73.0 | 7, plus 5 store payloads | Errors, breadcrumbs, context | Transactions, profiles | Raw frames | Python |
sentry-go | 0.11.0, 0.20.0, 0.28.0, 0.31.0, 0.35.0, 0.50.0 | 7 | Errors, breadcrumbs, context | Transactions | Raw frames | Go |
sentry-ruby | 4.4.0, 5.18.0, 6.2.0, 7.2.0 | 5 | Errors, breadcrumbs, context | Transactions | Raw frames | Ruby |
sentry/sentry, sentry/sentry-laravel | 3.22.0, 4.8.0, 4.35.0; Laravel 4.8.0 | 4 | Errors, breadcrumbs, context | Transactions | Raw frames | PHP |
sentry-java | 5.7.0, 6.34.0, 7.8.0, 8.0.0, 8.16.0 | 6 | Errors, breadcrumbs, context | Transactions | Raw frames; no ProGuard | Java |
Sentry (.NET) | 3.41.0, 4.9.0, 5.0.0, 6.0.0, 6.12.1 | 6 | Errors, breadcrumbs, context | Transactions | Raw frames | .NET |
sentry (Rust crate) | 0.28.0, 0.31.0, 0.35.0, 0.49.5 | 5 | Errors, breadcrumbs, context | Transactions | Raw frames | Other runtimes |
sentry-cocoa | 7.31.0, 8.45.0, 9.32.0 | 4 | Errors, accepted only | Transactions, attachments | Raw frames; no dSYM | Not supported |
sentry_flutter | 6.0.0, 7.0.0, 8.0.0, 9.0.0, 10.2.0 | 6 | Errors, accepted only | Transactions, attachments | Raw frames; no Dart symbols | Not supported |
@sentry/react-native | 5.36.0, 6.22.0, 7.13.0, 8.33.0 | 4 | Errors, accepted only | Transactions, attachments | Raw frames; no native symbols | Not supported |
User feedback (feedbackIntegration, user_report) | @sentry/browser 10.76.2, @sentry/react 11.10.0 | 3 | Feedback, linked to its event | None | n/a | Issues |
Where a row has two or three distinct versions but more envelopes, the extra envelope is the folder's default envelope.txt, which carries one of the listed versions. "Kept" and "Dropped" come from the envelope parser and the stored-event code, not from per-fixture assertions: a fixture proves the event is accepted and grouped into an issue.
Mobile and native are outside Epure's scope
The iOS, Flutter and React Native fixtures prove that their error events are accepted and grouped. Epure does not process dSYM, ProGuard, Dart or native symbol files, so their frames stay as the device sent them. Mobile and game teams are better served by Sentry.
Is Epure compatible with the Sentry SDK for everything?
No. Epure error tracking is compatible with the Sentry SDK for errors, not for every Sentry product. The ingest route answers on the paths the SDK already uses, /api/<project-id>/envelope/ and the older /api/<project-id>/store/, with the public key from the DSN. It stores error events, user feedback and Sentry Crons check-ins. Tracing, session replay, profiling, logs and metrics have no Epure counterpart.
Epure reads each item in an envelope by its type:
Envelope item type | What Epure does | Response |
|---|---|---|
event | Groups it into an issue and stores the event | 202 with {"id": "<event-uuid>"} |
feedback, user_report | Stores user feedback, linked to the event id | 202 |
check_in | Records a cron monitor check-in | 200 with the check-in id |
transaction, replay_event, profile, profile_chunk, statsd | Drops it | 202, nothing stored |
attachment, log and any other type | Drops it | 202, nothing stored |
An envelope that carries an event next to dropped items still produces the issue. Duplicate SDK event ids are dropped for 7 days, so a retried send with the same id is not counted twice.
What does Epure keep from a Sentry error event?
Epure keeps the fields used to triage an error and drops the rest. From each stored event it keeps the exception chain with stack frames, the most recent breadcrumbs, contexts (browser, OS, runtime), tags, extra, release, environment, the SDK name and version, the request with a short list of safe headers, and an SDK fingerprint if you set one. It drops module lists, debug images and full header sets.
Privacy defaults apply on top: client IP addresses are never stored, and end-user email and username are off unless the project opts in (data and privacy).
Which Sentry SDK options should you change for Epure?
Change dsn and turn off what Epure drops. Set tracesSampleRate to 0 (Python: traces_sample_rate=0.0), remove replayIntegration() and the profiling integration, and set environment to production, staging or local, the three names the v0.2.0 Issues view filters on.
Sentry.init({
dsn: process.env.SENTRY_DSN, // https://<public-key>@app.epure.sh/<project-id>
environment: "production",
tracesSampleRate: 0,
// no replayIntegration(), no profiling integration
});sentry_sdk.init(
dsn=os.environ["SENTRY_DSN"],
environment="production",
traces_sample_rate=0.0,
)Where the DSN lives in each framework, and what to rebuild after changing it: change the Sentry DSN.
Which platforms get readable stack traces in Epure?
JavaScript and TypeScript get original file, function and line when you upload source maps for the event's release; Epure parses source map files up to 32 MiB each, and accepts sentry-cli uploads. Python, Ruby, PHP, Go, .NET and Rust show raw frames, exactly as the SDK sent them. Java obfuscated with ProGuard and every mobile or native platform stay unsymbolicated. Upload steps: source maps.
Which Sentry SDKs have no Epure fixture?
Any Sentry SDK without a row above is untested: for example sentry-native, Unity, Unreal, Godot, sentry-android and sentry-elixir. They speak the same envelope format, but nobody has run them against Epure's tests, and the native ones need symbol files Epure does not read. Before relying on one, send one test error and check the issue, then open an issue on the engine repo with the SDK name and version so it can become a fixture.
How do you check your Sentry SDK works with Epure?
Send one named error from the deployed app and check two things: the request to /api/<project-id>/envelope/ returned 202 Accepted, and an issue appeared under the matching environment.
Sentry.captureException(new Error("Epure SDK check"));
// expected: 202 Accepted, body {"id":"<event-uuid>"}, then one issueAny other response names its cause: 401 invalid_dsn (wrong key), 404 project_not_found (wrong project number), 403 subscription_inactive (no active Cloud plan). Every code, with its fix, is in event sent but no issue in Epure.
To run the fixture suite yourself on a checkout of the engine, with a local PostgreSQL:
DATABASE_URL=postgres://<user>:<password>@localhost:5432/<db> \
cargo test -p epure-server --test ingest_envelopeFAQ
Do I need an Epure npm package to use the Sentry SDK?
No. Keep the official Sentry package for your runtime and change dsn. The packages @epure-sh/cli and @epure-sh/mcp are for your coding agent to read issues, not for sending errors.
Does Epure support Sentry tracing or session replay?
No. Envelopes with transactions, spans, replays or profiles get 202 and are not stored, so the SDK does not fail. Set the sample rates to 0 to stop sending them. If you rely on traces or replays, Sentry is the better fit; see Epure vs Sentry.
Why pin a Sentry SDK version?
You don't have to. The fixtures span majors from 6.x to 11.x for JavaScript and 1.x to 2.x for Python. Pinning only makes sure the version you deploy is the one you tested in staging.
Can I send events with curl only?
Yes. A JSON event posted to /api/<project-id>/store/ with the X-Sentry-Auth header returns 202; the command is in change the Sentry DSN. See also other runtimes.
What does Epure cost with the Sentry SDK?
Cloud Pro is $29 a month for 200,000 events with unlimited seats and no automatic overage, after a 14-day trial with no card. Self-hosting is free under AGPL-3.0. Details on Epure pricing.
Next
Installation
Install Epure with Docker Compose on a VPS or import one-click deploy templates for Render, Railway, Coolify, and Dokploy. Two containers, PostgreSQL 16, GET /health, then point your Sentry SDK DSN.
Pick your SDK
Which Sentry package for React, Next.js, Express, Django, Rails, Laravel, Spring, ASP.NET, and more, then point dsn at Epure.