Dashboard Get started

Source Maps

When you deploy minified or transpiled JavaScript, stack traces reference line 1 column 89432 of main.chunk.js — useless for debugging. Upload source maps and Lightarch resolves those positions back to your original source files.

Screenshot needed

Source Maps page: left sidebar showing release list 'v1.2.3 (3 files, 2h ago)', 'v1.2.2 (3 files, 2d ago)'. Right panel: 'Resolve a stack frame' form with Release dropdown showing v1.2.3, File field='main.chunk.js', Line='1', Column='89432'. Resolve button. Below: result box showing 'Frame resolved ✓' with source_file=/src/components/payment/PaymentForm.tsx, line=147, col=12, and source code snippet highlighted.

Upload source maps

After each build, upload your .map files using the CLI:

bash
# Install CLI
npm install -g @lightarch/cli

# Authenticate
la login

# Upload all .map files from your dist directory
 --release v1.2.3 ./dist

# With a dynamic release name
 --release "$(git rev-parse --short HEAD)" ./dist
Add this to your CI/CD pipeline after every successful build. The release name can be a version number, git commit SHA, or any identifier you use to tag deployments.

Add to CI (GitHub Actions example)

.github/workflows/deploy.yml
- name: Build
  run: npm run build

- name: Upload source maps to Lightarch
  run: |
    npm install -g @lightarch/cli
     --release ${{ github.sha }} ./dist
  env:
    EO_TOKEN: ${{ secrets.EO_TOKEN }}
    LA_DSN:   ${{ secrets.LA_DSN }}

Resolve a frame

When you see a minified stack frame in an error, use the resolver on the Source Maps page or the API to find the original location:

bash
# Via curl
curl -X POST https://la-dashboard-worker.lightarch.workers.dev/api/sourcemaps/resolve \
  -H "Authorization: Bearer YOUR_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "release": "v1.2.3",
    "file": "main.chunk.js",
    "line": 1,
    "col": 89432
  }'

Response:

json
{
  "source_file": "/src/components/payment/PaymentForm.tsx",
  "source_line": 147,
  "source_col": 12,
  "source_content": "throw new CardDeclinedError(response.error);"
}
Resolved frames are cached in D1 by their SHA-256 hash. Repeat lookups for the same position are instant.