Introduction
Production React builds are minified, so a stack trace from a real user looks like this:src/components/Chat.tsx:142,
and shows the surrounding lines.
The maps are uploaded privately and deleted from your build output before you
deploy. They are never served publicly, so your source code stays private.
Complete the React installation first.
Setting a release requires
@lerix-dev/lerix-core 1.1.0 or newer.1. Enable source maps
- Vite
- Create React App
Generate hidden source maps in
vite.config:vite.config.ts
'hidden' generates the .map files without adding a
//# sourceMappingURL comment to the shipped JavaScript, so browsers
never try to load them. The output folder is dist..js.map files appear next to the
bundles.
2. Create a private API key
Uploading source maps needs a private key, separate from the public project key your app uses.- Open your project in the Lerix Dashboard.
- Go to Project settings → API keys.
- Create a key with the Upload source maps permission (or Full access).
3. Upload the maps after each build
After the build and before you deploy, run the Lerix CLI on the build output:dist (Vite) or build (Create React App)) and uses the version from package.json as the release. To set
them yourself: npx @lerix-dev/lerix-cli upload dist --release 1.4.0.
The CLI uploads every *.js.map file in the folder (it skips node_modules
and CSS maps), then deletes the .map files from the build output so they are
never deployed. If any upload fails, it keeps the maps and exits with code 1,
so you can retry the step. The CLI requires Node.js 18.17 or newer.
Upload on every build
Instead of running the command yourself, install the CLI in your project and let npm run it after each build:package.json
npm run build uploads the maps. --optional keeps local builds
working: on a machine without LERIX_SECRET_KEY (a developer’s laptop), the
upload is skipped instead of failing the build, and the .map files are still
deleted. Set the keys in your CI or build server, where the release build runs.
pnpm and Yarn 2+ don’t run
postbuild scripts. Chain the command instead:
"build": "vite build && lerix upload --optional".Options
Each option can also be set with an environment variable.4. Pass the same release to the SDK
Setrelease in the LerixProvider options to the value you passed to
--release:
release, but setting it is
recommended. The release also replaces the 0.0.0 app version previously
shown for web apps.
Example: GitHub Actions
This workflow builds a Vite app, uploads the maps, then deploys. AddLERIX_API_KEY, LERIX_PROJECT_ID and LERIX_SECRET_KEY as repository
secrets.
.github/workflows/deploy.yml
REACT_APP_LERIX_RELEASE and read it
from process.env.REACT_APP_LERIX_RELEASE instead.
What you see in the dashboard
New errors show the original file, line and function, with the surrounding code. Click Show minified to see the stack exactly as the browser sent it. The AI assistant, GitHub issues and the MCP server all receive the readable stack too.- Only errors reported after the maps are uploaded are mapped. Earlier errors keep their minified stack.
- Lerix keeps the newest 5,000 maps per project.
- Each map can be up to 50 MB.