Skip to content

Commit 7aa503e

Browse files
lunaleapsmeta-codesync[bot]
authored andcommitted
Gate with feature flag for canary
Summary: Changelog: [Internal] - Add feature flag around IntersectionObserver for canary Differential Revision: D86547485
1 parent 7c91517 commit 7aa503e

24 files changed

+208
-73
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<01feab16132bc07b79b359178e322327>>
7+
* @generated SignedSource<<2e4bcb17ed3cb0ab683c92d659d7b5f6>>
88
*/
99

1010
/**
@@ -228,6 +228,12 @@ public object ReactNativeFeatureFlags {
228228
@JvmStatic
229229
public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = accessor.enableInteropViewManagerClassLookUpOptimizationIOS()
230230

231+
/**
232+
* Enables the IntersectionObserver Web API polyfill in React Native.
233+
*/
234+
@JvmStatic
235+
public fun enableIntersectionObserver(): Boolean = accessor.enableIntersectionObserver()
236+
231237
/**
232238
* Enables key up/down/press events to be sent to JS from components
233239
*/

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<405bf283e4631e166cd57f5dfe30d5f9>>
7+
* @generated SignedSource<<165b79da1364dcd73532070abc595ef0>>
88
*/
99

1010
/**
@@ -53,6 +53,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
5353
private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
5454
private var enableImperativeFocusCache: Boolean? = null
5555
private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
56+
private var enableIntersectionObserverCache: Boolean? = null
5657
private var enableKeyEventsCache: Boolean? = null
5758
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
5859
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
@@ -402,6 +403,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
402403
return cached
403404
}
404405

406+
override fun enableIntersectionObserver(): Boolean {
407+
var cached = enableIntersectionObserverCache
408+
if (cached == null) {
409+
cached = ReactNativeFeatureFlagsCxxInterop.enableIntersectionObserver()
410+
enableIntersectionObserverCache = cached
411+
}
412+
return cached
413+
}
414+
405415
override fun enableKeyEvents(): Boolean {
406416
var cached = enableKeyEventsCache
407417
if (cached == null) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<bffd645aa55b941acff92ca4efe6192a>>
7+
* @generated SignedSource<<f0572c9db76a79947fb057f01b1a9d1b>>
88
*/
99

1010
/**
@@ -94,6 +94,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
9494

9595
@DoNotStrip @JvmStatic public external fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
9696

97+
@DoNotStrip @JvmStatic public external fun enableIntersectionObserver(): Boolean
98+
9799
@DoNotStrip @JvmStatic public external fun enableKeyEvents(): Boolean
98100

99101
@DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnAndroid(): Boolean

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<a25d191472f7777804175ef9f56521d6>>
7+
* @generated SignedSource<<016b2e8286eaa016e36a164a25488dbf>>
88
*/
99

1010
/**
@@ -89,6 +89,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
8989

9090
override fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = false
9191

92+
override fun enableIntersectionObserver(): Boolean = false
93+
9294
override fun enableKeyEvents(): Boolean = false
9395

9496
override fun enableLayoutAnimationsOnAndroid(): Boolean = false

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<e8531e8c374d0ea1e604a2f3d5000078>>
7+
* @generated SignedSource<<57f35dd4533b246f66ecc9f8de7dcb00>>
88
*/
99

1010
/**
@@ -57,6 +57,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
5757
private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
5858
private var enableImperativeFocusCache: Boolean? = null
5959
private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
60+
private var enableIntersectionObserverCache: Boolean? = null
6061
private var enableKeyEventsCache: Boolean? = null
6162
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
6263
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
@@ -439,6 +440,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
439440
return cached
440441
}
441442

443+
override fun enableIntersectionObserver(): Boolean {
444+
var cached = enableIntersectionObserverCache
445+
if (cached == null) {
446+
cached = currentProvider.enableIntersectionObserver()
447+
accessedFeatureFlags.add("enableIntersectionObserver")
448+
enableIntersectionObserverCache = cached
449+
}
450+
return cached
451+
}
452+
442453
override fun enableKeyEvents(): Boolean {
443454
var cached = enableKeyEventsCache
444455
if (cached == null) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<f82b5905d822f8009c054a9443f86e39>>
7+
* @generated SignedSource<<78d3d9f431df6c93f326aaed3467dc25>>
88
*/
99

1010
/**
@@ -27,6 +27,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android : ReactN
2727

2828
override fun enableFabricRenderer(): Boolean = true
2929

30+
override fun enableIntersectionObserver(): Boolean = true
31+
3032
override fun useNativeViewConfigsInBridgelessMode(): Boolean = true
3133

3234
override fun useTurboModuleInterop(): Boolean = true

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<2325f5410537941e25998ca8c59bf51d>>
7+
* @generated SignedSource<<db7b1a599a6b61420bbeb5bd3b372a2b>>
88
*/
99

1010
/**
@@ -89,6 +89,8 @@ public interface ReactNativeFeatureFlagsProvider {
8989

9090
@DoNotStrip public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
9191

92+
@DoNotStrip public fun enableIntersectionObserver(): Boolean
93+
9294
@DoNotStrip public fun enableKeyEvents(): Boolean
9395

9496
@DoNotStrip public fun enableLayoutAnimationsOnAndroid(): Boolean

packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<95ebd4929bf0f98aa059ad4b8139f7b3>>
7+
* @generated SignedSource<<056a135bbc61330ab53b2f974fb06bdd>>
88
*/
99

1010
/**
@@ -237,6 +237,12 @@ class ReactNativeFeatureFlagsJavaProvider
237237
return method(javaProvider_);
238238
}
239239

240+
bool enableIntersectionObserver() override {
241+
static const auto method =
242+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableIntersectionObserver");
243+
return method(javaProvider_);
244+
}
245+
240246
bool enableKeyEvents() override {
241247
static const auto method =
242248
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableKeyEvents");
@@ -712,6 +718,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOpti
712718
return ReactNativeFeatureFlags::enableInteropViewManagerClassLookUpOptimizationIOS();
713719
}
714720

721+
bool JReactNativeFeatureFlagsCxxInterop::enableIntersectionObserver(
722+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
723+
return ReactNativeFeatureFlags::enableIntersectionObserver();
724+
}
725+
715726
bool JReactNativeFeatureFlagsCxxInterop::enableKeyEvents(
716727
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
717728
return ReactNativeFeatureFlags::enableKeyEvents();
@@ -1097,6 +1108,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
10971108
makeNativeMethod(
10981109
"enableInteropViewManagerClassLookUpOptimizationIOS",
10991110
JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOptimizationIOS),
1111+
makeNativeMethod(
1112+
"enableIntersectionObserver",
1113+
JReactNativeFeatureFlagsCxxInterop::enableIntersectionObserver),
11001114
makeNativeMethod(
11011115
"enableKeyEvents",
11021116
JReactNativeFeatureFlagsCxxInterop::enableKeyEvents),

packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<155f615584a7738dc5b89205c2ecad8b>>
7+
* @generated SignedSource<<36c1f8093aeea810f5f2501413aa02c5>>
88
*/
99

1010
/**
@@ -129,6 +129,9 @@ class JReactNativeFeatureFlagsCxxInterop
129129
static bool enableInteropViewManagerClassLookUpOptimizationIOS(
130130
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
131131

132+
static bool enableIntersectionObserver(
133+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
134+
132135
static bool enableKeyEvents(
133136
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
134137

packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<1a4d03b0d58e389dc9e9af0adf7afa9f>>
7+
* @generated SignedSource<<a6bfd67adde332bd08dc4a41a4ccd85a>>
88
*/
99

1010
/**
@@ -158,6 +158,10 @@ bool ReactNativeFeatureFlags::enableInteropViewManagerClassLookUpOptimizationIOS
158158
return getAccessor().enableInteropViewManagerClassLookUpOptimizationIOS();
159159
}
160160

161+
bool ReactNativeFeatureFlags::enableIntersectionObserver() {
162+
return getAccessor().enableIntersectionObserver();
163+
}
164+
161165
bool ReactNativeFeatureFlags::enableKeyEvents() {
162166
return getAccessor().enableKeyEvents();
163167
}

0 commit comments

Comments
 (0)