Skip to content

Commit bf9810a

Browse files
mdvaccafacebook-github-bot
authored andcommitted
[skip ci] Introduce feature flag to greacefuly fail when an unregistered component is rendered in Android (facebook#51175)
Summary: Introduce feature flag to greacefuly fail when an unregistered component is rendered in Android changelog: [internal] internal Reviewed By: mlord93 Differential Revision: D74333595
1 parent bbc1e12 commit bf9810a

20 files changed

+167
-50
lines changed

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

+7-1
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<<453f8c0a593b173c197fcf54ed834a1b>>
7+
* @generated SignedSource<<0d36e8bfd1d3d3ab4c70d012fda838a3>>
88
*/
99

1010
/**
@@ -132,6 +132,12 @@ public object ReactNativeFeatureFlags {
132132
@JvmStatic
133133
public fun enableFontScaleChangesUpdatingLayout(): Boolean = accessor.enableFontScaleChangesUpdatingLayout()
134134

135+
/**
136+
* Enables gracefuly failure when an unregistered component is rendered in Android.
137+
*/
138+
@JvmStatic
139+
public fun enableGracefulUnregisteredComponentFailureAndroid(): Boolean = accessor.enableGracefulUnregisteredComponentFailureAndroid()
140+
135141
/**
136142
* iOS Views will clip to their padding box vs border box
137143
*/

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

+11-1
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<<a51441451ec25033040ba044ee3371fc>>
7+
* @generated SignedSource<<ceda812b118bfe44039471b6efe14845>>
88
*/
99

1010
/**
@@ -37,6 +37,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
3737
private var enableFabricRendererCache: Boolean? = null
3838
private var enableFixForParentTagDuringReparentingCache: Boolean? = null
3939
private var enableFontScaleChangesUpdatingLayoutCache: Boolean? = null
40+
private var enableGracefulUnregisteredComponentFailureAndroidCache: Boolean? = null
4041
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
4142
private var enableJSRuntimeGCOnMemoryPressureOnIOSCache: Boolean? = null
4243
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
@@ -221,6 +222,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
221222
return cached
222223
}
223224

225+
override fun enableGracefulUnregisteredComponentFailureAndroid(): Boolean {
226+
var cached = enableGracefulUnregisteredComponentFailureAndroidCache
227+
if (cached == null) {
228+
cached = ReactNativeFeatureFlagsCxxInterop.enableGracefulUnregisteredComponentFailureAndroid()
229+
enableGracefulUnregisteredComponentFailureAndroidCache = cached
230+
}
231+
return cached
232+
}
233+
224234
override fun enableIOSViewClipToPaddingBox(): Boolean {
225235
var cached = enableIOSViewClipToPaddingBoxCache
226236
if (cached == null) {

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

+3-1
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<<9d0b02395a08331bca956ea600602a31>>
7+
* @generated SignedSource<<95358914a3bb384370c92d1cf7799157>>
88
*/
99

1010
/**
@@ -62,6 +62,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
6262

6363
@DoNotStrip @JvmStatic public external fun enableFontScaleChangesUpdatingLayout(): Boolean
6464

65+
@DoNotStrip @JvmStatic public external fun enableGracefulUnregisteredComponentFailureAndroid(): Boolean
66+
6567
@DoNotStrip @JvmStatic public external fun enableIOSViewClipToPaddingBox(): Boolean
6668

6769
@DoNotStrip @JvmStatic public external fun enableJSRuntimeGCOnMemoryPressureOnIOS(): Boolean

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

+3-1
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<<cf12cdfdfb343e79247379b5549ae92a>>
7+
* @generated SignedSource<<6a1f3285b5de9165d496c716d0b2c9c4>>
88
*/
99

1010
/**
@@ -57,6 +57,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
5757

5858
override fun enableFontScaleChangesUpdatingLayout(): Boolean = false
5959

60+
override fun enableGracefulUnregisteredComponentFailureAndroid(): Boolean = false
61+
6062
override fun enableIOSViewClipToPaddingBox(): Boolean = false
6163

6264
override fun enableJSRuntimeGCOnMemoryPressureOnIOS(): Boolean = false

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

+12-1
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<<4c81ed8a06c192eb4007219d163650e5>>
7+
* @generated SignedSource<<5b9e7dc6c273440e92f0501f5270a9c9>>
88
*/
99

1010
/**
@@ -41,6 +41,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
4141
private var enableFabricRendererCache: Boolean? = null
4242
private var enableFixForParentTagDuringReparentingCache: Boolean? = null
4343
private var enableFontScaleChangesUpdatingLayoutCache: Boolean? = null
44+
private var enableGracefulUnregisteredComponentFailureAndroidCache: Boolean? = null
4445
private var enableIOSViewClipToPaddingBoxCache: Boolean? = null
4546
private var enableJSRuntimeGCOnMemoryPressureOnIOSCache: Boolean? = null
4647
private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
@@ -242,6 +243,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
242243
return cached
243244
}
244245

246+
override fun enableGracefulUnregisteredComponentFailureAndroid(): Boolean {
247+
var cached = enableGracefulUnregisteredComponentFailureAndroidCache
248+
if (cached == null) {
249+
cached = currentProvider.enableGracefulUnregisteredComponentFailureAndroid()
250+
accessedFeatureFlags.add("enableGracefulUnregisteredComponentFailureAndroid")
251+
enableGracefulUnregisteredComponentFailureAndroidCache = cached
252+
}
253+
return cached
254+
}
255+
245256
override fun enableIOSViewClipToPaddingBox(): Boolean {
246257
var cached = enableIOSViewClipToPaddingBoxCache
247258
if (cached == null) {

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

+3-1
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<<2482f57e0652cfaa4806b5333c50ad9f>>
7+
* @generated SignedSource<<33ecc2f26b06289f69a759b1f92602b8>>
88
*/
99

1010
/**
@@ -57,6 +57,8 @@ public interface ReactNativeFeatureFlagsProvider {
5757

5858
@DoNotStrip public fun enableFontScaleChangesUpdatingLayout(): Boolean
5959

60+
@DoNotStrip public fun enableGracefulUnregisteredComponentFailureAndroid(): Boolean
61+
6062
@DoNotStrip public fun enableIOSViewClipToPaddingBox(): Boolean
6163

6264
@DoNotStrip public fun enableJSRuntimeGCOnMemoryPressureOnIOS(): Boolean

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

+15-1
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<<49dbfe02e06cc5d6b12683ed91ea1d13>>
7+
* @generated SignedSource<<f5c20095bd8ddc744ec7d09faea35106>>
88
*/
99

1010
/**
@@ -141,6 +141,12 @@ class ReactNativeFeatureFlagsJavaProvider
141141
return method(javaProvider_);
142142
}
143143

144+
bool enableGracefulUnregisteredComponentFailureAndroid() override {
145+
static const auto method =
146+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableGracefulUnregisteredComponentFailureAndroid");
147+
return method(javaProvider_);
148+
}
149+
144150
bool enableIOSViewClipToPaddingBox() override {
145151
static const auto method =
146152
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableIOSViewClipToPaddingBox");
@@ -410,6 +416,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableFontScaleChangesUpdatingLayout(
410416
return ReactNativeFeatureFlags::enableFontScaleChangesUpdatingLayout();
411417
}
412418

419+
bool JReactNativeFeatureFlagsCxxInterop::enableGracefulUnregisteredComponentFailureAndroid(
420+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
421+
return ReactNativeFeatureFlags::enableGracefulUnregisteredComponentFailureAndroid();
422+
}
423+
413424
bool JReactNativeFeatureFlagsCxxInterop::enableIOSViewClipToPaddingBox(
414425
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
415426
return ReactNativeFeatureFlags::enableIOSViewClipToPaddingBox();
@@ -642,6 +653,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
642653
makeNativeMethod(
643654
"enableFontScaleChangesUpdatingLayout",
644655
JReactNativeFeatureFlagsCxxInterop::enableFontScaleChangesUpdatingLayout),
656+
makeNativeMethod(
657+
"enableGracefulUnregisteredComponentFailureAndroid",
658+
JReactNativeFeatureFlagsCxxInterop::enableGracefulUnregisteredComponentFailureAndroid),
645659
makeNativeMethod(
646660
"enableIOSViewClipToPaddingBox",
647661
JReactNativeFeatureFlagsCxxInterop::enableIOSViewClipToPaddingBox),

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

+4-1
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<<ae23312f2dccee934a8a91c05625662a>>
7+
* @generated SignedSource<<0cf6e6f96fa13fef8ffb65f960a60285>>
88
*/
99

1010
/**
@@ -81,6 +81,9 @@ class JReactNativeFeatureFlagsCxxInterop
8181
static bool enableFontScaleChangesUpdatingLayout(
8282
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
8383

84+
static bool enableGracefulUnregisteredComponentFailureAndroid(
85+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
86+
8487
static bool enableIOSViewClipToPaddingBox(
8588
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
8689

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

+5-1
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<<8410561a80edd67b4528181b1f8557fe>>
7+
* @generated SignedSource<<d003d3ac6c908343b99a26884b969b5d>>
88
*/
99

1010
/**
@@ -94,6 +94,10 @@ bool ReactNativeFeatureFlags::enableFontScaleChangesUpdatingLayout() {
9494
return getAccessor().enableFontScaleChangesUpdatingLayout();
9595
}
9696

97+
bool ReactNativeFeatureFlags::enableGracefulUnregisteredComponentFailureAndroid() {
98+
return getAccessor().enableGracefulUnregisteredComponentFailureAndroid();
99+
}
100+
97101
bool ReactNativeFeatureFlags::enableIOSViewClipToPaddingBox() {
98102
return getAccessor().enableIOSViewClipToPaddingBox();
99103
}

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

+6-1
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<<8b135b02d868914f6b3487f09e8955ff>>
7+
* @generated SignedSource<<28a469bce1a0280a46a059187b27f017>>
88
*/
99

1010
/**
@@ -124,6 +124,11 @@ class ReactNativeFeatureFlags {
124124
*/
125125
RN_EXPORT static bool enableFontScaleChangesUpdatingLayout();
126126

127+
/**
128+
* Enables gracefuly failure when an unregistered component is rendered in Android.
129+
*/
130+
RN_EXPORT static bool enableGracefulUnregisteredComponentFailureAndroid();
131+
127132
/**
128133
* iOS Views will clip to their padding box vs border box
129134
*/

0 commit comments

Comments
 (0)