Skip to content

Commit 43be869

Browse files
committed
feat(pressability): gate native hierarchy measurement
1 parent 7aa9495 commit 43be869

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

packages/react-native/Libraries/Pressability/Pressability.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,8 +804,12 @@ export default class Pressability {
804804

805805
if (typeof this._responderID === 'number') {
806806
UIManager.measure(this._responderID, this._measureCallback);
807-
} else {
807+
} else if (
808+
ReactNativeFeatureFlags.shouldPressabilityUseNativeViewHierarchyForMeasurement()
809+
) {
808810
this._responderID.measureAsyncOnUI(this._measureCallback);
811+
} else {
812+
this._responderID.measure(this._measureCallback);
809813
}
810814
}
811815

packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,6 +1067,17 @@ const definitions: FeatureFlagDefinitions = {
10671067
},
10681068
ossReleaseStage: 'none',
10691069
},
1070+
shouldPressabilityUseNativeViewHierarchyForMeasurement: {
1071+
defaultValue: false,
1072+
metadata: {
1073+
dateAdded: '2026-06-18',
1074+
description:
1075+
'When enabled, Pressability measures host instances from the native view hierarchy on the UI thread instead of using shadow tree layout metrics.',
1076+
expectedReleaseValue: true,
1077+
purpose: 'experimentation',
1078+
},
1079+
ossReleaseStage: 'none',
1080+
},
10701081
shouldUseAnimatedObjectForTransform: {
10711082
defaultValue: false,
10721083
metadata: {

0 commit comments

Comments
 (0)