[iOS] Can't produce sourcemap with Hermes
Hi! I can't produce a working sourcemap when building in iOS with Hermes activated.
I've created an issue in react native: https://github.com/facebook/react-native/issues/32497 but I would like to know if someone from Rollbar has some insight in this or a workaround (or something I'm missing).
Thank you!
Can you post what steps you're following to build your source map? Also, what is the error or problem you're seeing with the source map?
Hi @waltjones ! Of course:
The sourcemap is generated in an XCode build phase, I've tried a few things:
Without Hermes:
export NODE_BINARY=node
export PROJECT_ROOT="${PROJECT_DIR}/../"
export EXTRA_PACKAGER_ARGS="--sourcemap-output sourcemap.ios.js --entry-file index.js --sourcemap-sources-root ./"
../../../node_modules/react-native/scripts/react-native-xcode.sh index.js
And then making the app crash yields this in Rollbar

If I activate Hermes and use the same method as above:

If I change the script to this:
export NODE_BINARY=node
export PROJECT_ROOT="${PROJECT_DIR}/../"
export SOURCEMAP_FILE="${PROJECT_DIR}/../sourcemap.ios.js"
export EXTRA_PACKAGER_ARGS="--entry-file index.js --sourcemap-sources-root ./"
../../../node_modules/react-native/scripts/react-native-xcode.sh index.js
Then the issue I created in react-native repo happens and no sourcemap is created.
Hi @waltjones, I've tried creating the sourcemap manually for Hermes, like this:
yarn react-native bundle --platform ios --dev false --entry-file index.js --bundle-output main.jsbundle --sourcemap-output main.jsbundle.map --sourcemap-sources-root ./
ios/Pods/hermes-engine/destroot/bin/hermesc -O --emit-binary -output-source-map -out=main.jsbundle.hbc main.jsbundle
node ../../node_modules/react-native/scripts/compose-source-maps.js main.jsbundle.map main.jsbundle.hbc.map -o sourcemap.ios.js
Sourcemap is successfully created, and it seems that Rollbar can make "real" paths, but they are wrong:

As you can see in the image, the function name that makes the crash is indeed "crash", but the path "...src/app/screens/Accounts/components/SOSRecharge/index.js" is not the correct one. The correct one would be "...src/app/screens/Auth/flavours/common/index.js".