Skip to content

Hermes iOS sourcemaps not symbolicated despite Debug ID match (Expo SDK 54 / RN 0.81 / EAS Build) #5683

@ReneGreen27

Description

@ReneGreen27

What React Native libraries do you use?

Expo Application Services (EAS)

Are you using sentry.io or on-premise?

sentry.io (SaS)

@sentry/react-native SDK Version

7.8.0

How does your development environment look like?

Expo SDK 54 / RN 0.81.5 / Hermes enabled

EAS iOS production build (TestFlight)

Hermes bundle + map built via expo export -> hermesc -> compose-source-maps.js

Uploaded with sentry-cli sourcemaps upload --debug-id-reference




Sentry.init()

Sentry.init({
dsn: "< DSN>",
sendDefaultPii: true,
// no custom release or dist passed
});

Steps to Reproduce

We are seeing a Hermes iOS build where sourcemaps are uploaded correctly with Debug IDs, release/dist matches the event, and source maps exist, but stack frames remain unsymbolicated.

Steps to repro:

  • Expo SDK 54, React Native 0.81.5, Hermes enabled.
  • EAS Build used for iOS (production profile, TestFlight distribution).
  • Build generates Hermes bundle and sourcemap with Debug ID via standard expo export + hermesc + compose-source-maps.js flow.
  • Uploaded to Sentry using sentry-cli sourcemaps upload --debug-id-reference.
  • Trigger JS error in TestFlight app.

Event shows:

"contexts": { "react_native": { "js_engine": "hermes", "hermes_debug_info": true } }, "debug_meta": { "images": [ { "type": "sourcemap", "code_file": "app:///main.jsbundle", "debug_id": "<matching Debug ID>" } ] }, "exception": { "values": [ { "stacktrace": { "frames": [ { "filename": "app:///main.jsbundle", "lineno": 12345, "colno": 123, "data": { "symbolicated": false } } ] } } ] }

Additional things we tried:

  • We attempted the JSC-style sourcemap upload as a cross-check; still no symbolication.
  • Native iOS Podfile and Xcode project confirm Hermes is active (js_engine: "hermes").
  • Related Sentry issues describing similar symptoms:
    https://github.com/getsentry/sentry/issues/35815

#2249

Expo + EAS build setup:

expo export --platform ios --output-dir dist-sentry --source-maps

Hermes compilation and map composition using hermesc + compose-source-maps.js

sentry-cli sourcemaps upload --debug-id-reference

Hermes Debug ID is present and matches runtime bundle.

Examples contained in internal ticket #172505

Expected Result

We expect frames symbolicated, orig_filename / orig_lineno populated.

Actual Result

Frames remain unsymbolicated, data.symbolicated: false, even though Debug ID matches uploaded artifact.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    Waiting for: Product Owner

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions