Bundle Analysis without CLI
Analyze bundles without the Bundle Drop CLI
Bundle Drop Sight analyzes production React Native and Expo JavaScript bundles locally in your browser. No Bundle Drop SDK, CLI, or account is required. Generate files with your app’s tooling, then inspect packages, source files, and changes between builds.
For automatic builds, Git comparisons, emitted assets, and OTA archive measurements, use Sight with the Bundle Drop CLI.
Generate files manually without the Bundle Drop SDK
Use your app's installed React Native or Expo tooling to generate JavaScript and its matching source map together, then load them into Sight.
Bare React Native
Run the command for your platform. Replace index.js with the app's actual entry file if it differs.
npx react-native bundle --platform ios --dev false --minify true --entry-file index.js --bundle-output main.ios.jsbundle --sourcemap-output main.ios.jsbundle.mapnpx react-native bundle --platform android --dev false --minify true --entry-file index.js --bundle-output main.android.bundle --sourcemap-output main.android.bundle.mapExpo
Export one native platform with source maps and bytecode disabled so the analyzer receives JavaScript:
npx expo export --platform ios --source-maps --no-bytecodenpx expo export --platform android --source-maps --no-bytecodeChoose the generated JavaScript file and matching map; output paths vary by Expo SDK. Sight's analysis input must be JavaScript, not Hermes bytecode.
Load one build or compare two
In Analyze, drag and drop or select two files: the JavaScript bundle and its matching .map. Sight accepts bundle filenames ending in .jsbundle, .bundle, or .js, and source-map version 3 JSON ending in .map.
In Compare, provide four files: baseline bundle/map and current bundle/map. Generate and retain one pair from each branch, using the same platform and equivalent production settings.
Manual loading provides JavaScript analysis only. There are no manual controls for Git metadata or asset inventories. Use the CLI workflow for verified Git context, bundled assets, and Bundle Drop OTA measurements.
Read the JavaScript analysis
The JavaScript total is the size of the production JavaScript file in UTF-8 bytes. It includes minified application code, dependencies, runtime code, unmapped bytes, and any source-map comment in that file. Source-map file size is excluded.
Use the Packages view to find large dependencies, then switch to Files for individual source files. Search by package name or source path, filter application, dependency, runtime, and unmapped categories, and navigate the treemap to inspect how bytes are distributed. Fullscreen provides more room for larger projects.
In Compare mode, rows show before, after, and signed changes. Negative values indicate reductions. Use source-map attribution to investigate dependency additions, import changes, or removed features.
Bundle bytes describe build contents. They do not directly measure startup time, memory usage, or the final native application size. Hermes bytecode and compressed archive bytes are separate from the JavaScript attribution used by the treemap.
Export and share results
Single Analyze exports PDF, standalone HTML, PNG, SVG, Markdown, and JSON. Compare exports PDF, standalone HTML, Markdown, and JSON. All exports are generated locally.
PDF uses the browser's print dialog, where you can save as PDF. Markdown is copied to the clipboard. PNG and SVG export the JavaScript treemap with the OTA summary. HTML, Markdown, PDF, and JSON include separate asset data when available and carry the OTA measurement or its unavailable reason. Demo exports retain the Demo example label and an example marker in JSON.
Human-readable reports use row limits: Markdown lists up to 10 entries per summary table; printable asset/comparison tables show up to 18 rows; HTML asset tables show up to 100 rows. Reports indicate truncation. Choose JSON for the complete normalized file, package, and asset data rather than relying on a visual summary. Temporary source roots are omitted from exported Git provenance.
Troubleshooting
The source map does not match the bundle. Regenerate both files in the same command, for the same platform and build. Do not pair a new bundle with an older map or load Hermes bytecode as JavaScript.
Assets or OTA size are missing. Manual loading provides JavaScript analysis only. Use the CLI workflow for asset inventories and Bundle Drop OTA measurements.
