Skip to content

Rea4 to 0.86.0 discord - #65

Merged
delekta merged 4 commits into
0.86.0-discordfrom
rea4-to-0.86.0-discord
Nov 4, 2026
Merged

delekta merged 4 commits into
0.86.0-discordfrom
rea4-to-0.86.0-discord

Conversation

@delekta

@delekta delekta commented Nov 4, 2026 •

Copy link
Copy Markdown

Summary

Merges the Reanimated 4 changes from rea4-discord into 0.86.0-discord, so the main fork branch matches what the client ships today.

discord/discord#339627 (the Reanimated 4.8 + react-native-worklets upgrade) pinned the client to 0.86.0-discord-rea4-5, a release built from a side branch (rea4-discord). The rest of the fork's release flow targets 0.86.0-discord. The clyde ci bump-external-react-native-version pipeline uses it as the default branch, so if these commits stay only on rea4-discord, the next routine RN bump will ship without them and break the Reanimated 4 setup.

This PR contains only the 4 code commits from rea4-discord. It leaves out the CI-generated Updated version to 0.86.0-discord-rea4-5 commit: that version string doesn't follow the <upstream>-discord-<n> format the release script parses, so the next pipeline run would fail on it.

rea4-discord was branched from 0.86.0-discord-32, the current head of 0.86.0-discord, so this PR is a clean fast-forward with no conflicts.

Changes

Revert "[Android] shadow-tree commit-lifecycle hooks (react#100)" (a239c8e7)
The shadowTreeCommitSucceeded / shadowTreeCommitFinalized hooks existed only so Reanimated's props-registry equality eviction could be race-free. That eviction turned out to have no performance impact and was removed from our Reanimated fork, so nothing uses these hooks anymore. Reverting removes our divergence from upstream in ShadowTree, ShadowTreeDelegate, UIManager and UIManagerCommitHook. It also restores the configureEventEmitterCallback() call in SampleTurboModuleSpec.cpp, which the original commit had commented out by accident.

Add enableMountingCoordinatorPullModelAndroid feature flag (eeefbe15)
Cherry-pick of react/react-native@ece0efe (react#57581). It adds the flag definition and its generated accessors, with no behavior change. The generated files were regenerated with yarn featureflags because our flag set has diverged from upstream.

Default enableMountingCoordinatorPullModelAndroid to true (71d8fec5)
This records intent and has no effect for now. Nothing reads the flag yet, because the Android pull-model mounting migration it gates lands in later upstream commits we haven't cherry-picked. Before that migration is backported, enableExclusivePropsUpdateAndroid and enablePropsUpdateReconciliationAndroid, which are both still false, need to be revisited.

Enable preventShadowTreeCommitExhaustion by default (d6ffd1d9)
Reanimated requires this flag before its DISABLE_COMMIT_PAUSING_MECHANISM flag can be turned on safely. Without it, React commits can be starved and the app stops responding. This is a prerequisite for discord/discord#317388. See the Reanimated feature flags docs.

Impact

None for the client. The code is identical to 0.86.0-discord-rea4-5, which the client already runs. The only difference is the version string.

After merge

  1. Run the "Bump React Native version" Buildkite pipeline on its default branch. It will publish 0.86.0-discord-33 and push the matching tag.
  2. In the monorepo, run clyde mobile set-react-native-version 0.86.0-discord-33 <sha> to point the client back to the 0.86.0-discord line.
  3. rea4-discord can then be deleted. Keep the 0.86.0-discord-rea4-5 tag, because older monorepo commits reference it.

piaskowyk and others added 4 commits October 20, 2026 18:00
This reverts commit 9eee718.

The shadowTreeCommitSucceeded / shadowTreeCommitFinalized hooks existed
only to make Reanimated's props-registry equality eviction race-free.
That eviction turned out to be performance neutral and has been removed
from the Reanimated fork, so nothing overrides these hooks anymore and
the fork can drop the divergence from upstream in ShadowTree,
ShadowTreeDelegate, UIManager and UIManagerCommitHook.

Also restores the configureEventEmitterCallback() call in
SampleTurboModuleSpec.cpp, which that commit had incidentally commented
out.

Co-authored-by: Cursor <cursoragent@cursor.com>
Adds the `enableMountingCoordinatorPullModelAndroid` experiment flag
(default off) that gates the Android pull-model mounting migration.
Config entry plus regenerated accessors only - no behavior change.

Cherry-pick of react/react-native@ece0efe.

The generated feature flag files conflicted because this fork's flag set
has diverged from upstream, so they were regenerated from the config with
`yarn featureflags` instead of being merged by hand.

Co-authored-by: Cursor <cursoragent@cursor.com>
Flip the flag's defaultValue to true and regenerate the feature-flag
boilerplate with `yarn featureflags --update`. The config's own metadata
already declared expectedReleaseValue: true.

Neither app-side provider overrides the flag, so the default applies
directly: ReactNativeNewArchitectureFeatureFlagsDefaults (Android) and
ReactNativeFeatureFlagsOverridesOSSStable (iOS) both inherit it.

Note: this is inert on this branch. The flag has no consumers here or
upstream at ece0efe -- that commit only defines it, and the migration it
gates (PullTransactionMountItem enqueued in MountItemDispatcher, so the UI
thread pulls the transaction instead of the commit thread building the
batch in schedulerShouldRenderTransactions) lands in later upstream
commits that are not cherry-picked here. Setting true now records intent
so the path is on once the implementation arrives.

This is a separate mechanism from usePullModelOnAndroid, which this fork
already defaults to true and which does have consumers in
FabricUIManagerBinding.cpp and FabricUIManager.java. Upstream has since
removed that flag, having graduated it.

Before the implementation is backported, check the dependencies named in
the flag description: enableAccumulatedUpdatesInRawPropsAndroid is already
true, but enableExclusivePropsUpdateAndroid and
enablePropsUpdateReconciliationAndroid are both still false, and the
latter two are required when Props 2.0 is in use.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reanimated requires this React Native flag to be enabled before its own
DISABLE_COMMIT_PAUSING_MECHANISM flag can be turned on safely; without it,
React commits can be starved and the app becomes unresponsive.

See https://docs.swmansion.com/react-native-reanimated/docs/guides/feature-flags/#disable_commit_pausing_mechanism

Co-authored-by: Cursor <cursoragent@cursor.com>
@delekta
delekta requested review from SzymczakJ and kosmydel November 4, 2026 13:38
@delekta
delekta merged commit 0f992f6 into 0.86.0-discord Nov 4, 2026
39 checks passed
@delekta
delekta deleted the rea4-to-0.86.0-discord branch November 4, 2026 13:41
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.

3 participants