Skip to content

Wire the Android pull model in C++ behind the feature flag#57579

Open
bartlomiejbloniarz wants to merge 3 commits into
mainfrom
export-D112309053
Open

Wire the Android pull model in C++ behind the feature flag#57579
bartlomiejbloniarz wants to merge 3 commits into
mainfrom
export-D112309053

Conversation

@bartlomiejbloniarz

Copy link
Copy Markdown
Contributor

Summary:
Makes enableMountingCoordinatorPullModelAndroid functional. With the flag on, the commit thread only signals transaction availability and the UI thread pulls and applies at mount time (matching iOS/macOS); with the flag off (default), behavior is byte-for-byte identical.

  • schedulerShouldRenderTransactions: notifies via JNI (FabricMountingManager::onTransactionAvailable) instead of pulling and building the batch.
  • schedulerDidFinishTransaction: no-op under the pull model.
  • FabricUIManagerBinding::pullAndExecuteTransaction (new JNI method): pulls the surface's transaction on the UI thread and runs executeMount.
  • FabricMountingManager::executeMount: gains a synchronous mode that executes the batch directly on the UI thread.
  • The pull flag implies accumulated rawProps — a correctness requirement so multi-revision diffs stay lossless.

Changelog:

[Android] [Added] - Wire the pull-model mounting path in C++ behind enableMountingCoordinatorPullModelAndroid

Differential Revision: D112309053

Bartlomiej Bloniarz and others added 3 commits July 16, 2026 06:32
Summary:
Adds the `enableMountingCoordinatorPullModelAndroid` experiment flag (default off) that gates the Android pull-model mounting migration. Config entry plus regenerated accessors only — no behavior change.

## Changelog:
[Android] [Added] - Add `enableMountingCoordinatorPullModelAndroid` feature flag

Differential Revision: D112309049
Summary:
Java side of the pull model — dead code until the C++ wiring lands:
- `PullTransactionMountItem`: asks C++ (via `FabricUIManagerBinding.pullAndExecuteTransaction`) to pull the surface's pending transaction and apply it synchronously on the UI thread.
- `FabricUIManager.onTransactionAvailable` (JNI entry): enqueues a `PullTransactionMountItem`.
- `FabricUIManagerBinding.pullAndExecuteTransaction`: extern declaration.

One item is enqueued per notification, mirroring iOS; redundant items no-op in C++.

## Changelog:
[Android] [Added] - Add inert Java plumbing (`PullTransactionMountItem`, `FabricUIManager.onTransactionAvailable`) for the pull model

Differential Revision: D112309050
Summary:
Makes `enableMountingCoordinatorPullModelAndroid` functional. With the flag on, the commit thread only signals transaction availability and the UI thread pulls and applies at mount time (matching iOS/macOS); with the flag off (default), behavior is byte-for-byte identical.
- `schedulerShouldRenderTransactions`: notifies via JNI (`FabricMountingManager::onTransactionAvailable`) instead of pulling and building the batch.
- `schedulerDidFinishTransaction`: no-op under the pull model.
- `FabricUIManagerBinding::pullAndExecuteTransaction` (new JNI method): pulls the surface's transaction on the UI thread and runs `executeMount`.
- `FabricMountingManager::executeMount`: gains a `synchronous` mode that executes the batch directly on the UI thread.
- The pull flag implies accumulated rawProps — a correctness requirement so multi-revision diffs stay lossless.

## Changelog:
[Android] [Added] - Wire the pull-model mounting path in C++ behind `enableMountingCoordinatorPullModelAndroid`

Differential Revision: D112309053
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 16, 2026
@facebook-github-tools facebook-github-tools Bot added p: Software Mansion Partner: Software Mansion Partner p: Facebook Partner: Facebook labels Jul 16, 2026
@meta-codesync

meta-codesync Bot commented Jul 16, 2026

Copy link
Copy Markdown

@bartlomiejbloniarz has exported this pull request. If you are a Meta employee, you can view the originating Diff in D112309053.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook p: Software Mansion Partner: Software Mansion Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant