Skip to content

Commit ba5acdb

Browse files
huntiefacebook-github-bot
authored andcommitted
Introduce enableNetworkEventReporting and enableResourceTimingAPI feature flags
Summary: Changelog: [Internal] Reviewed By: rubennorte Differential Revision: D73995231 fbshipit-source-id: ade6f858b14928a32fa022d4e9a85704bc944726
1 parent 07073fb commit ba5acdb

20 files changed

+273
-41
lines changed

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

Lines changed: 13 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<<519e6095d6c91fbbb4225a066c9cbe26>>
7+
* @generated SignedSource<<62ec58d76b9e14b3e1e4e10e62fc196a>>
88
*/
99

1010
/**
@@ -162,6 +162,12 @@ public object ReactNativeFeatureFlags {
162162
@JvmStatic
163163
public fun enableNativeCSSParsing(): Boolean = accessor.enableNativeCSSParsing()
164164

165+
/**
166+
* Enable network event reporting hooks in each native platform through `NetworkReporter`. This flag should be combined with `enableResourceTimingAPI` and `fuseboxNetworkInspectionEnabled` to enable end-to-end reporting behaviour via the Web Performance API and CDP debugging respectively.
167+
*/
168+
@JvmStatic
169+
public fun enableNetworkEventReporting(): Boolean = accessor.enableNetworkEventReporting()
170+
165171
/**
166172
* Use BackgroundDrawable and BorderDrawable instead of CSSBackgroundDrawable
167173
*/
@@ -174,6 +180,12 @@ public object ReactNativeFeatureFlags {
174180
@JvmStatic
175181
public fun enablePropsUpdateReconciliationAndroid(): Boolean = accessor.enablePropsUpdateReconciliationAndroid()
176182

183+
/**
184+
* Enables the reporting of network resource timings through `PerformanceObserver`.
185+
*/
186+
@JvmStatic
187+
public fun enableResourceTimingAPI(): Boolean = accessor.enableResourceTimingAPI()
188+
177189
/**
178190
* Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
179191
*/

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

Lines changed: 21 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<<a70b3ffda510a41144b061036d4f1d48>>
7+
* @generated SignedSource<<03596dcddbe8976adfcf454b9b35e3c3>>
88
*/
99

1010
/**
@@ -42,8 +42,10 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
4242
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
4343
private var enableMainQueueModulesOnIOSCache: Boolean? = null
4444
private var enableNativeCSSParsingCache: Boolean? = null
45+
private var enableNetworkEventReportingCache: Boolean? = null
4546
private var enableNewBackgroundAndBorderDrawablesCache: Boolean? = null
4647
private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
48+
private var enableResourceTimingAPICache: Boolean? = null
4749
private var enableSynchronousStateUpdatesCache: Boolean? = null
4850
private var enableViewCullingCache: Boolean? = null
4951
private var enableViewRecyclingCache: Boolean? = null
@@ -262,6 +264,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
262264
return cached
263265
}
264266

267+
override fun enableNetworkEventReporting(): Boolean {
268+
var cached = enableNetworkEventReportingCache
269+
if (cached == null) {
270+
cached = ReactNativeFeatureFlagsCxxInterop.enableNetworkEventReporting()
271+
enableNetworkEventReportingCache = cached
272+
}
273+
return cached
274+
}
275+
265276
override fun enableNewBackgroundAndBorderDrawables(): Boolean {
266277
var cached = enableNewBackgroundAndBorderDrawablesCache
267278
if (cached == null) {
@@ -280,6 +291,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
280291
return cached
281292
}
282293

294+
override fun enableResourceTimingAPI(): Boolean {
295+
var cached = enableResourceTimingAPICache
296+
if (cached == null) {
297+
cached = ReactNativeFeatureFlagsCxxInterop.enableResourceTimingAPI()
298+
enableResourceTimingAPICache = cached
299+
}
300+
return cached
301+
}
302+
283303
override fun enableSynchronousStateUpdates(): Boolean {
284304
var cached = enableSynchronousStateUpdatesCache
285305
if (cached == null) {

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

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<<6107b2e4611a6cd6ad67420eee468601>>
7+
* @generated SignedSource<<eeeeed4a48a3627d5d51635da9c15cb7>>
88
*/
99

1010
/**
@@ -72,10 +72,14 @@ public object ReactNativeFeatureFlagsCxxInterop {
7272

7373
@DoNotStrip @JvmStatic public external fun enableNativeCSSParsing(): Boolean
7474

75+
@DoNotStrip @JvmStatic public external fun enableNetworkEventReporting(): Boolean
76+
7577
@DoNotStrip @JvmStatic public external fun enableNewBackgroundAndBorderDrawables(): Boolean
7678

7779
@DoNotStrip @JvmStatic public external fun enablePropsUpdateReconciliationAndroid(): Boolean
7880

81+
@DoNotStrip @JvmStatic public external fun enableResourceTimingAPI(): Boolean
82+
7983
@DoNotStrip @JvmStatic public external fun enableSynchronousStateUpdates(): Boolean
8084

8185
@DoNotStrip @JvmStatic public external fun enableViewCulling(): Boolean

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

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<<ad976c46e40f6d8a945041388865ec60>>
7+
* @generated SignedSource<<7d343ae73a15daf1a4d8d85ba959dd81>>
88
*/
99

1010
/**
@@ -67,10 +67,14 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
6767

6868
override fun enableNativeCSSParsing(): Boolean = false
6969

70+
override fun enableNetworkEventReporting(): Boolean = false
71+
7072
override fun enableNewBackgroundAndBorderDrawables(): Boolean = true
7173

7274
override fun enablePropsUpdateReconciliationAndroid(): Boolean = false
7375

76+
override fun enableResourceTimingAPI(): Boolean = false
77+
7478
override fun enableSynchronousStateUpdates(): Boolean = false
7579

7680
override fun enableViewCulling(): Boolean = false

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

Lines changed: 23 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<<580a0bc36f98e9680387089a9740bba8>>
7+
* @generated SignedSource<<f4ae0172bfb1c4d64213c0cd14320bdd>>
88
*/
99

1010
/**
@@ -46,8 +46,10 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
4646
private var enableLayoutAnimationsOnIOSCache: Boolean? = null
4747
private var enableMainQueueModulesOnIOSCache: Boolean? = null
4848
private var enableNativeCSSParsingCache: Boolean? = null
49+
private var enableNetworkEventReportingCache: Boolean? = null
4950
private var enableNewBackgroundAndBorderDrawablesCache: Boolean? = null
5051
private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
52+
private var enableResourceTimingAPICache: Boolean? = null
5153
private var enableSynchronousStateUpdatesCache: Boolean? = null
5254
private var enableViewCullingCache: Boolean? = null
5355
private var enableViewRecyclingCache: Boolean? = null
@@ -288,6 +290,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
288290
return cached
289291
}
290292

293+
override fun enableNetworkEventReporting(): Boolean {
294+
var cached = enableNetworkEventReportingCache
295+
if (cached == null) {
296+
cached = currentProvider.enableNetworkEventReporting()
297+
accessedFeatureFlags.add("enableNetworkEventReporting")
298+
enableNetworkEventReportingCache = cached
299+
}
300+
return cached
301+
}
302+
291303
override fun enableNewBackgroundAndBorderDrawables(): Boolean {
292304
var cached = enableNewBackgroundAndBorderDrawablesCache
293305
if (cached == null) {
@@ -308,6 +320,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
308320
return cached
309321
}
310322

323+
override fun enableResourceTimingAPI(): Boolean {
324+
var cached = enableResourceTimingAPICache
325+
if (cached == null) {
326+
cached = currentProvider.enableResourceTimingAPI()
327+
accessedFeatureFlags.add("enableResourceTimingAPI")
328+
enableResourceTimingAPICache = cached
329+
}
330+
return cached
331+
}
332+
311333
override fun enableSynchronousStateUpdates(): Boolean {
312334
var cached = enableSynchronousStateUpdatesCache
313335
if (cached == null) {

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

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<<b4a944a07650cf46f90d86419b11bbee>>
7+
* @generated SignedSource<<3b830939241e6fde03e6e63faa7232ff>>
88
*/
99

1010
/**
@@ -67,10 +67,14 @@ public interface ReactNativeFeatureFlagsProvider {
6767

6868
@DoNotStrip public fun enableNativeCSSParsing(): Boolean
6969

70+
@DoNotStrip public fun enableNetworkEventReporting(): Boolean
71+
7072
@DoNotStrip public fun enableNewBackgroundAndBorderDrawables(): Boolean
7173

7274
@DoNotStrip public fun enablePropsUpdateReconciliationAndroid(): Boolean
7375

76+
@DoNotStrip public fun enableResourceTimingAPI(): Boolean
77+
7478
@DoNotStrip public fun enableSynchronousStateUpdates(): Boolean
7579

7680
@DoNotStrip public fun enableViewCulling(): Boolean

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

Lines changed: 29 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<<b07fb300852699f3066090549af0b994>>
7+
* @generated SignedSource<<a176560c48267f25dd8fdb5a1a232d37>>
88
*/
99

1010
/**
@@ -171,6 +171,12 @@ class ReactNativeFeatureFlagsJavaProvider
171171
return method(javaProvider_);
172172
}
173173

174+
bool enableNetworkEventReporting() override {
175+
static const auto method =
176+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableNetworkEventReporting");
177+
return method(javaProvider_);
178+
}
179+
174180
bool enableNewBackgroundAndBorderDrawables() override {
175181
static const auto method =
176182
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableNewBackgroundAndBorderDrawables");
@@ -183,6 +189,12 @@ class ReactNativeFeatureFlagsJavaProvider
183189
return method(javaProvider_);
184190
}
185191

192+
bool enableResourceTimingAPI() override {
193+
static const auto method =
194+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableResourceTimingAPI");
195+
return method(javaProvider_);
196+
}
197+
186198
bool enableSynchronousStateUpdates() override {
187199
static const auto method =
188200
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableSynchronousStateUpdates");
@@ -411,6 +423,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing(
411423
return ReactNativeFeatureFlags::enableNativeCSSParsing();
412424
}
413425

426+
bool JReactNativeFeatureFlagsCxxInterop::enableNetworkEventReporting(
427+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
428+
return ReactNativeFeatureFlags::enableNetworkEventReporting();
429+
}
430+
414431
bool JReactNativeFeatureFlagsCxxInterop::enableNewBackgroundAndBorderDrawables(
415432
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
416433
return ReactNativeFeatureFlags::enableNewBackgroundAndBorderDrawables();
@@ -421,6 +438,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enablePropsUpdateReconciliationAndroid(
421438
return ReactNativeFeatureFlags::enablePropsUpdateReconciliationAndroid();
422439
}
423440

441+
bool JReactNativeFeatureFlagsCxxInterop::enableResourceTimingAPI(
442+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
443+
return ReactNativeFeatureFlags::enableResourceTimingAPI();
444+
}
445+
424446
bool JReactNativeFeatureFlagsCxxInterop::enableSynchronousStateUpdates(
425447
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
426448
return ReactNativeFeatureFlags::enableSynchronousStateUpdates();
@@ -613,12 +635,18 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
613635
makeNativeMethod(
614636
"enableNativeCSSParsing",
615637
JReactNativeFeatureFlagsCxxInterop::enableNativeCSSParsing),
638+
makeNativeMethod(
639+
"enableNetworkEventReporting",
640+
JReactNativeFeatureFlagsCxxInterop::enableNetworkEventReporting),
616641
makeNativeMethod(
617642
"enableNewBackgroundAndBorderDrawables",
618643
JReactNativeFeatureFlagsCxxInterop::enableNewBackgroundAndBorderDrawables),
619644
makeNativeMethod(
620645
"enablePropsUpdateReconciliationAndroid",
621646
JReactNativeFeatureFlagsCxxInterop::enablePropsUpdateReconciliationAndroid),
647+
makeNativeMethod(
648+
"enableResourceTimingAPI",
649+
JReactNativeFeatureFlagsCxxInterop::enableResourceTimingAPI),
622650
makeNativeMethod(
623651
"enableSynchronousStateUpdates",
624652
JReactNativeFeatureFlagsCxxInterop::enableSynchronousStateUpdates),

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

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<<963cdfe340c23ca3ca6e43020a3ab608>>
7+
* @generated SignedSource<<dae3956726e1cbbb2b78d9fffaeca6dd>>
88
*/
99

1010
/**
@@ -96,12 +96,18 @@ class JReactNativeFeatureFlagsCxxInterop
9696
static bool enableNativeCSSParsing(
9797
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
9898

99+
static bool enableNetworkEventReporting(
100+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
101+
99102
static bool enableNewBackgroundAndBorderDrawables(
100103
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
101104

102105
static bool enablePropsUpdateReconciliationAndroid(
103106
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
104107

108+
static bool enableResourceTimingAPI(
109+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
110+
105111
static bool enableSynchronousStateUpdates(
106112
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
107113

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

Lines changed: 9 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<<da8e7e537e16a1338c7a56b1d17b2c6e>>
7+
* @generated SignedSource<<42e3fd2958733abb652f73d87b5b4a7d>>
88
*/
99

1010
/**
@@ -114,6 +114,10 @@ bool ReactNativeFeatureFlags::enableNativeCSSParsing() {
114114
return getAccessor().enableNativeCSSParsing();
115115
}
116116

117+
bool ReactNativeFeatureFlags::enableNetworkEventReporting() {
118+
return getAccessor().enableNetworkEventReporting();
119+
}
120+
117121
bool ReactNativeFeatureFlags::enableNewBackgroundAndBorderDrawables() {
118122
return getAccessor().enableNewBackgroundAndBorderDrawables();
119123
}
@@ -122,6 +126,10 @@ bool ReactNativeFeatureFlags::enablePropsUpdateReconciliationAndroid() {
122126
return getAccessor().enablePropsUpdateReconciliationAndroid();
123127
}
124128

129+
bool ReactNativeFeatureFlags::enableResourceTimingAPI() {
130+
return getAccessor().enableResourceTimingAPI();
131+
}
132+
125133
bool ReactNativeFeatureFlags::enableSynchronousStateUpdates() {
126134
return getAccessor().enableSynchronousStateUpdates();
127135
}

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

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<<43fcd5c23c1eb9b91d3bc26d5543a4b7>>
7+
* @generated SignedSource<<871f96445659d2f927efeda5480b6f96>>
88
*/
99

1010
/**
@@ -149,6 +149,11 @@ class ReactNativeFeatureFlags {
149149
*/
150150
RN_EXPORT static bool enableNativeCSSParsing();
151151

152+
/**
153+
* Enable network event reporting hooks in each native platform through `NetworkReporter`. This flag should be combined with `enableResourceTimingAPI` and `fuseboxNetworkInspectionEnabled` to enable end-to-end reporting behaviour via the Web Performance API and CDP debugging respectively.
154+
*/
155+
RN_EXPORT static bool enableNetworkEventReporting();
156+
152157
/**
153158
* Use BackgroundDrawable and BorderDrawable instead of CSSBackgroundDrawable
154159
*/
@@ -159,6 +164,11 @@ class ReactNativeFeatureFlags {
159164
*/
160165
RN_EXPORT static bool enablePropsUpdateReconciliationAndroid();
161166

167+
/**
168+
* Enables the reporting of network resource timings through `PerformanceObserver`.
169+
*/
170+
RN_EXPORT static bool enableResourceTimingAPI();
171+
162172
/**
163173
* Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
164174
*/

0 commit comments

Comments
 (0)