Repository navigation
[0.88] Bump Hermes to 260318099.0.4 #1430
Description
Target Branch
0.88
Link to commit or PR to be picked
Hermes release 260318099.0.4, to be cut from 260318099.0.0-stable and pinned into 0.88-stable.
Description
0.88 pins 260318099.0.3 today. One fix and one re-land have landed on the Hermes stable branch beyond the hermes-v260318099.0.3 tag and neither reaches the release until a new tag is cut and RN is bumped to it.
The fix
892dc627d Avoid reserve() in ConsecutiveStringStorage (D121660203, grafts D121478636)
Lazy compilation appends to the string storage every time a newly compiled function adds strings. ConsecutiveStringStorage::appendStorage called reserve() before copying and on libc++ reserve() sizes to exactly the requested capacity rather than growing geometrically, so repeated appends were quadratic. Adds a lazy-string-growth micro-benchmark.
The re-land, which needs a decision before pinning
ace586d90 Back out "Back out D116775223 (VariableScope rescan pick)" (D120733339)
This is not a fix. It is a back-out of a back-out, so its effect is to put a previously reverted change back into the release. The chain:
- D116775223 landed the original VariableScope rescan pick
- D118959426 backed it out for a SIGSEGV in AR effects on Messenger Android
- D120733339 re-lands it
Its stated justification is that the crash could not be reproduced and that another fix may have already covered it. That other fix could not be located on 260318099.0.0-stable or on static_h, so the claim is unverified from the branches alone.
It is also a byte-exact restoration rather than a reworked version. All five touched files (IR.h, IR.cpp, IRBuilder.cpp, Utils.cpp, VariableTest.cpp) match their content at the original pick and differ from hermes-v260318099.0.3.
This was foreseen. #1413 recorded that static_h still carried the change and that it was the source the next stable sync would pull from, so its return was expected rather than accidental.
Also in the cut, no behaviour change
| Commit | Diff | |
|---|---|---|
e3371863e |
D120562343 | Doc comment on IEventLoopControl::scheduleTask |
d412d3bd8 |
D121160587 | JSIDynamicTest.cpp, test only |
0ad1d016d |
D121664017 | Version bump to .0.4 (facebook/hermes#2197) |
The version bump is listed because it is load-bearing rather than incidental. RN Build Static Hermes has no version input: getMainVersion() reads npm/hermes-compiler/package.json verbatim, so the file has to name .0.4 before the workflow can cut it. It read 260318099.0.3 until #2197 landed, which meant a dispatch would have re-cut an already-published version. The stable ref is protected and rejects direct pushes, so the bump had to go through a PR.
Steps
- Cut
hermes-v260318099.0.4withrelease-type=releaseandupdate-latest-v1=true. Thelatest-v1tag points at.0.3today and26xxxxis the newest line, so it should move. - Verify the tag actually contains
892dc627dandace586d90before pinning.hermes-v260318099.0.2was tagged eight hours before a crash fix was backed out and shipped the bad version anyway, so tag contents get checked rather than assumed. - Bump
packages/react-native/sdks/hermes-engine/version.propertiesandpackages/react-native/package.jsonon0.88-stable. Both read260318099.0.3today. Do not hand-commitpackages/rn-tester/Podfile.lock; the publish workflow regenerates it.
Prior record
#1413 covers the .0.3 cut and the JSI implementation batch that went into it.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone / Picked
Activity
github-actions commentedon Sep 26, 2026
Thank you for opening a new React Native Pick Request.
These are the criteria we follow when accepting or rejecting a code change into a React Native release branch (source).
If your Pick Request does not satisfy the criteria below, please close it as it will not be considered.
✅ Which Pick Requests we accept
TurboModule.getEnforcingfunction is throwing an unexpected assertion error.react-native-macosis not behaving as expected or is regressingReactRootView.java) if it is causing a breaking change for the React Native ecosystem.❌ Which Pick Requests we don't accept
ℹ️ What makes for a good Pick Request
In order for your Pick Request to be considered, please do the following:
main, or one PR against the release branch.Bump Hermes to 260318099.0.4
fabriziocucci commentedon Sep 27, 2026
Done.
hermes-v260318099.0.4was cut from260318099.0.0-stable(run 36312658384) and is on npm withlatest-v1moved onto it. The tag was verified to contain both fixes before pinning:892dc627dace586d90Pinned into
0.88-stableas993be7d6c69, bumping bothversion.propertiesandpackage.jsonfrom260318099.0.3to260318099.0.4.Podfile.lockwas left alone sincepublish-npm.ymlregenerates it.Follow-up: facebook/hermes#2211 bumps the Hermes branch to
260318099.0.5so the next cut does not re-cut.0.4. That step was missed after.0.3and is what blocked this release.