Skip to content

Disable single-op batching under C++ native animated, otherwise enable by default (#57316)#57316

Closed
zeyap wants to merge 1 commit into
react:mainfrom
zeyap:export-D109468772
Closed

Disable single-op batching under C++ native animated, otherwise enable by default (#57316)#57316
zeyap wants to merge 1 commit into
react:mainfrom
zeyap:export-D109468772

Conversation

@zeyap

@zeyap zeyap commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary:

Single-op batching (queueAndExecuteBatchedOperations) is incompatible with the C++ native animated backend. Move that guard out of per-product feature-flag overrides and into NativeAnimatedHelper: isSingleOpBatching is now gated on Platform.OS === 'android', queueAndExecuteBatchedOperations being available, and !cxxNativeAnimatedEnabled(). With the invariant centralized, the redundant animatedShouldUseSingleOp overrides in the panel-app and igvr override files are removed (igvr keeps a passthrough override file wired into IGVRPrelude).

Single-op batching is most meaningful only on Android: it collapses many per-operation JNI crossings into a single call, a significant win on the legacy bridge path. On other platforms (and on the C++/JSI path) the calls do not cross JNI, so batching would help performance only marginally while hurting debuggability — the ops are packed into an opaque serialized buffer and callbacks are rerouted through the device event emitter. That trade-off is why it stays Android-only and off under C++ native animated.

Behavior note: with C++ native animated enabled (the default), this is a no-op — single-op was already forced off. Where C++ native animated is disabled on Android, single-op is now on by default (it was previously gated by the animatedShouldUseSingleOp flag, which defaulted to off).

Changelog:[Internal]

Reviewed By: christophpurrer

Differential Revision: D109468772

@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 Jun 23, 2026
@meta-codesync

meta-codesync Bot commented Jun 23, 2026

Copy link
Copy Markdown

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

…e by default (react#57316)

Summary:

Single-op batching (`queueAndExecuteBatchedOperations`) is incompatible with the C++ native animated backend. Move that guard out of per-product feature-flag overrides and into `NativeAnimatedHelper`: `isSingleOpBatching` is now gated on `Platform.OS === 'android'`, `queueAndExecuteBatchedOperations` being available, and `!cxxNativeAnimatedEnabled()`. With the invariant centralized, the redundant `animatedShouldUseSingleOp` overrides in the panel-app and igvr override files are removed (igvr keeps a passthrough override file wired into IGVRPrelude).

**Single-op batching is most meaningful only on Android**: it collapses many per-operation JNI crossings into a single call, a significant win on the legacy bridge path. On other platforms (and on the C++/JSI path) the calls do not cross JNI, so batching would help performance only marginally while hurting debuggability — the ops are packed into an opaque serialized buffer and callbacks are rerouted through the device event emitter. That trade-off is why it stays Android-only and off under C++ native animated.

Behavior note: with C++ native animated enabled (the default), this is a no-op — single-op was already forced off. Where C++ native animated is disabled on Android, single-op is now on by default (it was previously gated by the `animatedShouldUseSingleOp` flag, which defaulted to off).

Changelog:[Internal]

Reviewed By: christophpurrer

Differential Revision: D109468772
@meta-codesync meta-codesync Bot changed the title Disable single-op batching under C++ native animated, otherwise enable by default Disable single-op batching under C++ native animated, otherwise enable by default (#57316) Jun 24, 2026
@zeyap zeyap force-pushed the export-D109468772 branch from 590932f to bd322e9 Compare June 24, 2026 13:08
@meta-codesync meta-codesync Bot closed this in 2bbd70a Jun 24, 2026
@meta-codesync meta-codesync Bot added the Merged This PR has been merged. label Jun 24, 2026
@meta-codesync

meta-codesync Bot commented Jun 24, 2026

Copy link
Copy Markdown

This pull request has been merged in 2bbd70a.

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. Merged This PR has been merged. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant