Overview
Releases in Proliferate represent specific versions of your application. They’re primarily used to associate source maps with error events, enabling you to see original source code in stack traces even when your production code is minified or transpiled.What is a Release?
A release is a versioned deployment of your application. Each release can have:- Version identifier: Typically a git commit SHA, semantic version, or build number
- Source maps: Files that map minified code back to original source
- URL prefix: The base URL pattern for matching error stack traces
The Release Workflow
Source map upload follows a three-step workflow:1
Create Release
Create a new release with a version identifier (usually automated by your build tool)
2
Upload Source Maps
Upload all source map files for this release
3
Finalize Release
Mark the release as complete and ready for use
Build plugins (Next.js, Webpack, Vite) handle this workflow automatically. Manual uploads are only needed for custom build processes.
Creating a Release
Automatic (Build Plugins)
The recommended approach is using build plugins that automatically create releases during your build process:next.config.js
Manual (API)
Create a release manually using the API:Version identifier (git SHA, semver, build number). Max 128 characters.
URL prefix for matching stack trace URLs. Use
~/ for root-relative paths.Uploading Source Maps
After creating a release, upload your source map files:Release version to associate this source map with
The URL of the JavaScript file (as it appears in stack traces)
The .map file
URL prefix (should match the release’s url_prefix)
Finalizing a Release
After all source maps are uploaded, finalize the release to mark it as complete:Finalizing a release is optional but recommended. It signals that the release is complete and helps with debugging if source maps are missing.
Viewing Releases
List all releases for a project in the dashboard or via API:Get a Specific Release
List Source Maps for a Release
Version Naming Strategies
Git Commit SHA (Recommended)
Use the full git commit SHA as your release version:- Unique per deployment
- Easy to correlate errors with code
- Works with GitHub source linking
- Not human-readable
Semantic Versioning
Use semver for user-facing releases:- Human-readable
- Matches release tags
- Need to update manually
- May have multiple deployments per version
Build Number
Use CI/CD build numbers:- Auto-incremented
- Unique per build
- No direct code correlation
Hybrid Approach
Combine approaches for the best of both worlds:v1.2.3-a1b2c3d4
How Source Maps Work
When an error occurs in production:1
SDK Captures Error
The SDK captures the minified stack trace and sends it with the
release field set2
Backend Matches Release
Proliferate finds the release matching the error’s version
3
Maps Stack Frames
Each stack frame’s URL, line, and column are mapped using the corresponding source map
4
Displays Original Code
The dashboard shows the original source code with proper file names, line numbers, and function names
URL Prefix Patterns
Theurl_prefix helps match stack trace URLs to your source maps.
Root-Relative (~/)
For URLs like https://example.com/static/js/main.js:
https://example.com/static/js/main.js matches.
Absolute URL
For CDN-hosted assets:Multiple Prefixes
If you serve assets from multiple domains, create separate releases or upload source maps with different URL patterns.Deleting Releases
Remove old releases to save storage:Best Practices
Automatic Uploads in CI/CD
Always upload source maps as part of your deployment pipeline:.github/workflows/deploy.yml
Version from Environment
Use environment variables in CI:Clean Up Old Releases
Periodically delete releases older than your retention policy (e.g., 90 days) to save storage.Test Source Maps Locally
Before deploying, verify source maps work:Don’t Upload Source Maps to Production
Keep.map files out of your production bundle:
webpack.config.js

