Source maps - Manual upload
If you’re not on EAS Build (local Xcode/Gradle build, GitHub Actions CI, etc.), upload source maps manually with the bundled CLI.
Command
Section titled “Command”npx @pionne/react-native upload-sourcemaps \ --token <PIONNE_AUTH_TOKEN> \ --project <PIONNE_PROJECT_ID> \ --release 1.0.0 \ --platform ios \ --map ios/build/Build/Products/Release-iphoneos/main.jsbundle.mapOptions
Section titled “Options”| Flag | Description |
|---|---|
--token | Required. User auth token (not the pio_live_...) |
--project | Required. Project UUID |
--release | Required. Must match the value passed to Pionne.init({ release }) |
--platform | Required. ios or android |
--map | Path to the .map. If omitted, auto-detected |
--api | Override the API URL (default https://api.pionne.app) |
Auto-detection of Metro paths
Section titled “Auto-detection of Metro paths”Without --map, the CLI looks in:
ios/build/Build/Products/Release-iphoneos/main.jsbundle.mapios/build/Build/Products/Release-iphonesimulator/main.jsbundle.mapios/main.jsbundle.mapandroid/app/build/intermediates/sourcemaps/react/release/index.android.bundle.mapandroid/app/build/generated/sourcemaps/react/release/index.android.bundle.mapandroid/app/build/intermediates/assets/release/index.android.bundle.mapGitHub Actions example
Section titled “GitHub Actions example”- name: Upload sourcemaps to Pionne run: | npx @pionne/react-native upload-sourcemaps \ --token ${{ secrets.PIONNE_AUTH_TOKEN }} \ --project ${{ secrets.PIONNE_PROJECT_ID }} \ --release ${{ github.sha }} \ --platform android \ --map android/app/build/generated/sourcemaps/react/release/index.android.bundle.mapVerify the upload
Section titled “Verify the upload”The CLI prints:
✓ Uploaded sourcemap (2.4 MB) for project abc-123, release 1.0.0, platform iosOn the server side, the entry shows up in Settings → Source maps for the project.
Common errors
Section titled “Common errors”| Error | Cause |
|---|---|
401 Unauthorized | --token invalid or expired |
404 Project not found | --project wrong UUID |
413 Payload too large | Server-side limit. With @pionne/react-native ≥ 0.8.2 the auto-gzip prevents this on most shared hosts; on stricter hosts contact support to bump the limit. |
release mismatch on event | The release passed doesn’t match Pionne.init({ release }) |