/assets/index-4f3c.js:1:58213 with mangled names like fe and pe. Upload your build’s source maps and Autter resolves every frame to the original file, line and function, with the lines of code around it, before it groups the error. The same defect then stays one issue across builds, releases, preview domains and minifiers.
You need three things: an upload key, the plugin for your bundler, and a verify step before you deploy.
This page describes
@autter/runtime-cli 1.4.0 and ingester 1.13.0. Earlier versions do not support Next.js 16, name functions a minifier inlined after their caller, and do not say which map is missing.1. Create an upload key
In the Autter platform, open the repository’s Runtime settings and create a key under Source map upload key. The key starts withautter_rtu_. It can upload and check source maps and nothing else, so a leaked CI secret cannot send or forge telemetry. You see it once.
Store it as AUTTER_RUNTIME_KEY where your production build runs, never in client code:
autter_rt_…) also works. A browser client key (autter_rtc_…) is refused.
2. Add the plugin
The quickest way is to let the CLI wire it in. Run this once in your app’s directory:setup detects your build tool (Vite and the frameworks built on it, Next.js, webpack, Rollup, Create React App, Angular, Parcel, esbuild), your package manager and your CI. It adds the plugin, says where AUTTER_RUNTIME_KEY goes, and never writes a key. It is safe to re-run; --dry-run shows the plan without writing anything.
To add it by hand, install the CLI and use the integration for your bundler:
- Vite
- webpack
- Next.js
- Rollup
- Any build (CLI)
vite.config.ts
base.AUTTER_RUNTIME_KEY is set, and then deletes the maps it created, so they are never deployed. Without a key it changes nothing and prints one line saying so, so local builds and fork pull requests stay green.
The release defaults to the commit being built (GITHUB_SHA, VERCEL_GIT_COMMIT_SHA, CF_PAGES_COMMIT_SHA, GIT_SHA, then git rev-parse HEAD). Debug ids match maps to the exact bundle that threw, even when the release your SDK reports differs.
3. Verify before you deploy
Runverify on the directory you deploy, with AUTTER_RUNTIME_KEY set so it also checks the ingester:
.map file is left in the output (it would expose your source), or when a bundle’s map is not on the ingester. It exits 1 with the reason per file; --json prints a machine-readable report.
In CI
A complete GitHub Actions job. Any CI follows the same three steps: build with the key, verify, deploy..github/workflows/deploy.yml
upload-sourcemaps action injects, uploads and verifies in one step:
How it works
- Inject. Every bundle that has a source map gets a debug id, derived from the bundle’s bytes. The browser SDK (
@autter/runtime-browser1.6.0 or later) sends the debug ids of the bundles in each error’s stack. - Upload. Each map goes to the ingester with its debug id, the release, the path the bundle is served from, your own files’ source (
sourcesContent; dependencies’ source is never sent), and the functions of the bundle and of your original files. - Symbolicate, then group. When an error arrives, the ingester finds each frame’s map by debug id (else by release and path), resolves the frame to its original file, line and function, and only then computes the issue’s identity. The identity uses the error type and the in-app frames’ functions and file names, never line numbers, chunk hashes or the release, so a new deploy does not open a new issue.
When a map is missing
If a frame stays minified, the issue page marks it minified and says which bundle’s map is missing, for which release and debug id, and why:
Repository Runtime settings also flag a repository whose browser frames are more than 30% unresolved over the last 7 days.
Server bundles
Bundled Node and edge code (tsup, esbuild, webpack and Next.js server output, Vite SSR, Cloudflare Workers) works the same way. The plugins handle it automatically; with the CLI:service.version must equal the upload release.
Troubleshooting
- Frames stay minified. Check that you deployed the files the plugin injected, that
@autter/runtime-browseris 1.6.0 or later, and thatverifypassed for that build. The issue page says which bundle’s map is missing. next buildfails with “using Turbopack, with awebpackconfig and noturbopackconfig”. Upgrade@autter/runtime-clito 1.4.0 or later.- A frame is named after the function that called it. The minifier inlined the function and the map was uploaded by a CLI before 1.4.0. Upload with the current
@autter/runtime-cli. 403 upload_key_not_allowed. An upload key was used to send telemetry. Backends and relays need the server key.- Subresource integrity. Injection changes bundle bytes after the build, so recompute SRI hashes after injecting.
docs/SOURCE-MAPS.md in the Autter Runtime repository.
