Skip to content

feat(release-react): compile Hermes bytecode, and add bundle-react - #14

Merged
ciehanski merged 1 commit into
mainfrom
feat/hermes-and-bundle-react
Sep 29, 2026
Merged

ciehanski merged 1 commit into
mainfrom
feat/hermes-and-bundle-react

Conversation

@ciehanski

Copy link
Copy Markdown
Member

--useHermes, --extraHermesFlags and --podFile were documented but ignored, so Hermes apps got a plain JS bundle. Now release-react compiles with the hermesc that ships with React Native and swaps the bundle in place before anything hashes or uploads it. Source maps get composed with Metro's so traces still resolve.

Detection is hermesEnabled in gradle.properties on Android, :hermes_enabled in the Podfile on iOS (including Expo's generated line). The RN 0.70+ template enables Hermes without writing either, so it reads as off. Guessing "on" would compile bytecode into a JSC app and brick it, so those projects pass --useHermes. --no-useHermes opts out.

Also adds dpctl bundle-react <platform>: same zip, without releasing it.

During review, bundle-react turned out to have the same signing bug #10 fixed in release. It signed against path.join(dir, "..") while the zip uses path.dirname, which only differ for ., which is exactly what you pass when bundling in place. Fixed, with a test that uses outputDir: "." since an absolute path passes even when it's broken.

Metro and hermesc also now run without DEPLOYPULSE_ACCESS_KEY in their environment. Bundlers run Babel plugins out of your own node_modules and none of them need a full access key.

@ciehanski
ciehanski merged commit 82e7453 into main Sep 29, 2026
3 checks passed
@ciehanski
ciehanski deleted the feat/hermes-and-bundle-react branch September 29, 2026 03:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant