A tool to find the source location from JS bundles and stack traces.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Command-line interface for metro-symbolicate supporting multiple input formats and symbolication options.
Reads stack traces from standard input and symbolicates them using the provided source map.
metro-symbolicate <source-map-file>Usage Examples:
# Symbolicate stack trace from file
cat error-stack-trace.txt | metro-symbolicate bundle.js.map
# Symbolicate stack trace piped from another command
node app.js 2>&1 | metro-symbolicate bundle.js.map
# With function name options
cat stack.txt | metro-symbolicate bundle.js.map --no-function-namesSymbolicates specific line and column coordinates in the bundled code.
metro-symbolicate <source-map-file> <line> [column]Parameters:
line - Line number in the bundled code (1-based by default)column - Column number in the bundled code (0-based by default, optional)Usage Examples:
# Symbolicate line 42, column 15
metro-symbolicate bundle.js.map 42 15
# Symbolicate line 100, column defaults to 0
metro-symbolicate bundle.js.map 100
# With custom line/column start offsets
metro-symbolicate bundle.js.map 42 15 --input-line-start 0 --input-column-start 1Symbolicates coordinates within a specific module in segmented bundles (e.g., RAM bundles).
metro-symbolicate <source-map-file> <moduleId>.js <line> [column]Parameters:
moduleId - Module identifier followed by .jsline - Line number within the modulecolumn - Column number within the module (optional)Usage Examples:
# Symbolicate line 10 in module 123
metro-symbolicate bundle.js.map 123.js 10
# Symbolicate line 10, column 5 in module 456
metro-symbolicate bundle.js.map 456.js 10 5Symbolicates React Native profiler maps (.profmap files).
metro-symbolicate <source-map-file> <file>.profmapUsage Examples:
# Symbolicate profiler map
metro-symbolicate bundle.js.map trace.profmap > symbolicated-trace.profmap
# Process profiler data from React Native
metro-symbolicate index.android.bundle.map profile-12345.profmapSymbolicates Chrome DevTools CPU profiles (.cpuprofile files).
metro-symbolicate <source-map-file> <file>.cpuprofileUsage Examples:
# Symbolicate CPU profile
metro-symbolicate bundle.js.map cpu-profile.cpuprofile
# Process Chrome DevTools performance data
metro-symbolicate app.js.map performance-profile.cpuprofileSymbolicates Chrome DevTools heap snapshots and heap timelines.
metro-symbolicate <source-map-file> <file>.heapsnapshot
metro-symbolicate <source-map-file> <file>.heaptimelineUsage Examples:
# Symbolicate heap snapshot
metro-symbolicate bundle.js.map heap-snapshot.heapsnapshot > symbolicated.json
# Symbolicate heap timeline
metro-symbolicate bundle.js.map allocation-timeline.heaptimeline > timeline.jsonProcesses JSONL attribution files for bundle size analysis.
metro-symbolicate <source-map-file> --attribution < input.jsonl > output.jsonlUsage Examples:
# Process bundle attribution data
metro-symbolicate bundle.js.map --attribution < bundle-sizes.jsonl > attributed-sizes.jsonl
# Chain with bundle analysis tools
analyze-bundle bundle.js | metro-symbolicate bundle.js.map --attribution > results.jsonlSpecial modes for processing Hermes JavaScript engine crash dumps and coverage traces.
metro-symbolicate <source-map-file> --hermes-crash
metro-symbolicate <source-map-file> --hermes-coverageHermes Crash Mode: Processes Hermes crash dump JSON from stdin and outputs symbolicated stack traces.
cat hermes-crash.json | metro-symbolicate bundle.js.map --hermes-crashHermes Coverage Mode: Processes Hermes coverage trace JSON from stdin for code coverage analysis.
cat coverage-trace.json | metro-symbolicate bundle.js.map --hermes-coverage--no-function-namesUse identifier names instead of function names in symbolicated output. By default, metro-symbolicate attempts to use function names from source map metadata.
--hermes-crash
--hermes-coverageSpecial processing modes for Hermes JavaScript engine. These options are mutually exclusive.
--hermes-crash: Process Hermes minidump crash information--hermes-coverage: Process Hermes code coverage tracesControl how line and column numbers are interpreted and displayed.
--input-line-start <number> # Default: 1
--input-column-start <number> # Default: 0
--output-line-start <number> # Default: 1
--output-column-start <number> # Default: 0Usage Examples:
# 0-based input, 1-based output (common for some tools)
metro-symbolicate bundle.js.map 0 5 --input-line-start 0 --output-line-start 1
# All 1-based numbering
metro-symbolicate bundle.js.map 1 6 --input-line-start 1 --input-column-start 1Metro-symbolicate can work with directories containing multiple source map files instead of a single source map file.
metro-symbolicate <source-map-directory>/Usage Examples:
# Use directory of source maps
metro-symbolicate ./source-maps/ 42 15
# Process stack trace with directory
cat stack.txt | metro-symbolicate ./maps/The CLI returns appropriate exit codes:
0: Success1: Error (invalid arguments, file not found, parsing errors, etc.)Common error scenarios:
--hermes-crash with --hermes-coverage)