Introduction
Production Angular builds are minified, so a stack trace from a real user looks like this:src/app/chat/chat.page.ts: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 Angular installation first.
Setting a release requires
@lerix-dev/lerix-core 1.1.0 or newer.1. Enable hidden source maps
Inangular.json, turn on source maps for the production configuration under
projects.<your-app>.architect.build.configurations.production:
angular.json
"hidden": true generates the .map files without adding a
//# sourceMappingURL comment to the shipped JavaScript, so browsers never
try to load them.
Run ng build and check that .js.map files appear next to the bundles. The
output folder is usually dist/<your-app>/browser.
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
Afterng build and before you deploy, run the Lerix CLI on the build output:
angular.json (outputPath)) and uses the version from package.json as the release. To set
them yourself: npx @lerix-dev/lerix-cli upload dist/my-app/browser --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": "ng 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 provideLerix() to the value you passed to --release:
app.config.ts
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 the app, uploads the maps, then deploys. AddLERIX_API_KEY, LERIX_PROJECT_ID and LERIX_SECRET_KEY as repository
secrets.
.github/workflows/deploy.yml
app.config.ts
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.