[Patch Tracker] react-native - Fix outdated Hermes URL

Open Beginner friendly
#105,383 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
65/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
cmake, kotlin, react-native
Domain
build-system

Research direction

The patch changes ReactAndroid/build.gradle.kts in React Native’s downloadHermes and unzipHermes tasks. Read those tasks and compare Hermes extraction with the folly, fmt, and fast_float extraction mentioned in the issue. The patch is already linked in PR #105381 and upstream has merged the fix, so this issue is mainly for tracking removal after a React Native version bump.

Written by the indexing model from the issue text.

Description

Reviewing Weekly

Patch Information

Library Name: react-native
Library Version: 0.86.0
Patch Number: 048
Patch Description: fix-hermes-tarball-root-after-repo-move
Full Patch Filename: react-native+0.86.0+048+fix-hermes-tarball-root-after-repo-move.patch

Patch Details
Reason for Patch

On ~2026-10-28 the Hermes repository moved from facebook/hermes to meta/hermes. Every Android build that compiles React Native from source (the artifacts publish workflow, any build that misses the prebuilt artifacts, BUILD_RN_FROM_SOURCE=1) started failing at :packages:react-native:ReactAndroid:hermes-engine:configureBuildForHermes with:

CMake Error: The source directory ".../node_modules/react-native/sdks/hermes" does not appear to contain CMakeLists.txt.

downloadHermes still fetches https://github.com/facebook/hermes/tarball/<tag>, which GitHub redirects, so the download works. GitHub names the archive's top-level folder <owner>-<repo>-<sha>, so it is now meta-hermes-<sha>/ instead of facebook-hermes-<sha>/. unzipHermes only flattened paths starting with facebook-hermes-, so the sources land one folder too deep and CMake finds no CMakeLists.txt in sdks/hermes.

Builds that use the prebuilt artifacts do not download Hermes and are not affected. iOS is not affected either: hermes-engine.podspec downloads the prebuilt hermes-ios tarball from Maven Central and never reads this archive.

Changes Made

Backport of the upstream fix, identical to the upstream commit (no comments of our own):

  • downloadHermes fetches from https://github.com/meta/hermes/tarball/<tag> instead of relying on the redirect.
  • unzipHermes strips the archive's single top-level folder whatever its name (eachFile { path = path.substringAfter("/") }), the same way folly, fmt and fast_float are extracted in ReactAndroid/build.gradle.kts, and sets includeEmptyDirs = false so the empty wrapper folder is not recreated.

The doLast step added by patch +024 to the same unzipHermes task is left untouched; it depends on sdks/hermes being flattened correctly, which this patch restores.

Upstream Status

Upstream fix is merged so this patch can be removed once we bump to a react-native version that includes this fix.

Related Information

PR Introducing Patch: https://github.com/Expensify/App/pull/105381

Additional Notes
Checklist
  • Patch file is correctly named and placed in the appropriate directory
  • Patch is documented in the corresponding details.md file
  • This issue is linked in the details.md file
  • Upstream PR/issue has been created (if applicable)
Dominant language
TypeScript
Stars
5k
Forks
4k
Avg merge
3d 5h
Merged PRs (30d)
594

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Expensify/App

All issues in Expensify/App

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.