react-native 0.83.0-nightly-20250927-99b7cb77a → 0.83.0-nightly-20250929-2f40224fa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +6 -0
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +9 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +21 -3
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -1
- package/ReactCommon/react/renderer/mounting/internal/CullingContext.cpp +14 -0
- package/package.json +8 -8
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
|
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
|
|
|
29
29
|
static major: number = 0;
|
|
30
30
|
static minor: number = 83;
|
|
31
31
|
static patch: number = 0;
|
|
32
|
-
static prerelease: string | null = 'nightly-
|
|
32
|
+
static prerelease: string | null = 'nightly-20250929-2f40224fa';
|
|
33
33
|
|
|
34
34
|
static getVersionString(): string {
|
|
35
35
|
return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
|
package/React/Base/RCTVersion.m
CHANGED
|
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
|
|
|
24
24
|
RCTVersionMajor: @(0),
|
|
25
25
|
RCTVersionMinor: @(83),
|
|
26
26
|
RCTVersionPatch: @(0),
|
|
27
|
-
RCTVersionPrerelease: @"nightly-
|
|
27
|
+
RCTVersionPrerelease: @"nightly-20250929-2f40224fa",
|
|
28
28
|
};
|
|
29
29
|
});
|
|
30
30
|
return __rnVersion;
|
|
@@ -452,6 +452,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useTurb
|
|
|
452
452
|
rt
|
|
453
453
|
);
|
|
454
454
|
}
|
|
455
|
+
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_viewCullingOutsetRatio(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
456
|
+
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->viewCullingOutsetRatio(
|
|
457
|
+
rt
|
|
458
|
+
);
|
|
459
|
+
}
|
|
455
460
|
static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_virtualViewHysteresisRatio(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
456
461
|
return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->virtualViewHysteresisRatio(
|
|
457
462
|
rt
|
|
@@ -539,6 +544,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
|
|
|
539
544
|
methodMap_["useShadowNodeStateOnClone"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useShadowNodeStateOnClone};
|
|
540
545
|
methodMap_["useTurboModuleInterop"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useTurboModuleInterop};
|
|
541
546
|
methodMap_["useTurboModules"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_useTurboModules};
|
|
547
|
+
methodMap_["viewCullingOutsetRatio"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_viewCullingOutsetRatio};
|
|
542
548
|
methodMap_["virtualViewHysteresisRatio"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_virtualViewHysteresisRatio};
|
|
543
549
|
methodMap_["virtualViewPrerenderRatio"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_virtualViewPrerenderRatio};
|
|
544
550
|
}
|
|
@@ -400,6 +400,7 @@ public:
|
|
|
400
400
|
virtual bool useShadowNodeStateOnClone(jsi::Runtime &rt) = 0;
|
|
401
401
|
virtual bool useTurboModuleInterop(jsi::Runtime &rt) = 0;
|
|
402
402
|
virtual bool useTurboModules(jsi::Runtime &rt) = 0;
|
|
403
|
+
virtual double viewCullingOutsetRatio(jsi::Runtime &rt) = 0;
|
|
403
404
|
virtual double virtualViewHysteresisRatio(jsi::Runtime &rt) = 0;
|
|
404
405
|
virtual double virtualViewPrerenderRatio(jsi::Runtime &rt) = 0;
|
|
405
406
|
|
|
@@ -1024,6 +1025,14 @@ private:
|
|
|
1024
1025
|
return bridging::callFromJs<bool>(
|
|
1025
1026
|
rt, &T::useTurboModules, jsInvoker_, instance_);
|
|
1026
1027
|
}
|
|
1028
|
+
double viewCullingOutsetRatio(jsi::Runtime &rt) override {
|
|
1029
|
+
static_assert(
|
|
1030
|
+
bridging::getParameterCount(&T::viewCullingOutsetRatio) == 1,
|
|
1031
|
+
"Expected viewCullingOutsetRatio(...) to have 1 parameters");
|
|
1032
|
+
|
|
1033
|
+
return bridging::callFromJs<double>(
|
|
1034
|
+
rt, &T::viewCullingOutsetRatio, jsInvoker_, instance_);
|
|
1035
|
+
}
|
|
1027
1036
|
double virtualViewHysteresisRatio(jsi::Runtime &rt) override {
|
|
1028
1037
|
static_assert(
|
|
1029
1038
|
bridging::getParameterCount(&T::virtualViewHysteresisRatio) == 1,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<f707e26d09b6f7962ec97296a1a215b6>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -468,6 +468,12 @@ public object ReactNativeFeatureFlags {
|
|
|
468
468
|
@JvmStatic
|
|
469
469
|
public fun useTurboModules(): Boolean = accessor.useTurboModules()
|
|
470
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Outset the culling context frame with the provided ratio. The culling context frame size will be outset by width * ratio on the left and right, and height * ratio on the top and bottom.
|
|
473
|
+
*/
|
|
474
|
+
@JvmStatic
|
|
475
|
+
public fun viewCullingOutsetRatio(): Double = accessor.viewCullingOutsetRatio()
|
|
476
|
+
|
|
471
477
|
/**
|
|
472
478
|
* Sets a hysteresis window for transition between prerender and hidden modes.
|
|
473
479
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<e7cfc5135c7b3c731324297e92e41e3f>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -93,6 +93,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
93
93
|
private var useShadowNodeStateOnCloneCache: Boolean? = null
|
|
94
94
|
private var useTurboModuleInteropCache: Boolean? = null
|
|
95
95
|
private var useTurboModulesCache: Boolean? = null
|
|
96
|
+
private var viewCullingOutsetRatioCache: Double? = null
|
|
96
97
|
private var virtualViewHysteresisRatioCache: Double? = null
|
|
97
98
|
private var virtualViewPrerenderRatioCache: Double? = null
|
|
98
99
|
|
|
@@ -753,6 +754,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
|
|
753
754
|
return cached
|
|
754
755
|
}
|
|
755
756
|
|
|
757
|
+
override fun viewCullingOutsetRatio(): Double {
|
|
758
|
+
var cached = viewCullingOutsetRatioCache
|
|
759
|
+
if (cached == null) {
|
|
760
|
+
cached = ReactNativeFeatureFlagsCxxInterop.viewCullingOutsetRatio()
|
|
761
|
+
viewCullingOutsetRatioCache = cached
|
|
762
|
+
}
|
|
763
|
+
return cached
|
|
764
|
+
}
|
|
765
|
+
|
|
756
766
|
override fun virtualViewHysteresisRatio(): Double {
|
|
757
767
|
var cached = virtualViewHysteresisRatioCache
|
|
758
768
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<3254fef626b10ef21d8d9ee1bdbb1880>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -174,6 +174,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
|
|
|
174
174
|
|
|
175
175
|
@DoNotStrip @JvmStatic public external fun useTurboModules(): Boolean
|
|
176
176
|
|
|
177
|
+
@DoNotStrip @JvmStatic public external fun viewCullingOutsetRatio(): Double
|
|
178
|
+
|
|
177
179
|
@DoNotStrip @JvmStatic public external fun virtualViewHysteresisRatio(): Double
|
|
178
180
|
|
|
179
181
|
@DoNotStrip @JvmStatic public external fun virtualViewPrerenderRatio(): Double
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<9f7eb1bb5e24fd8ee87accf60209cce3>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -169,6 +169,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
|
|
|
169
169
|
|
|
170
170
|
override fun useTurboModules(): Boolean = false
|
|
171
171
|
|
|
172
|
+
override fun viewCullingOutsetRatio(): Double = 0.0
|
|
173
|
+
|
|
172
174
|
override fun virtualViewHysteresisRatio(): Double = 0.0
|
|
173
175
|
|
|
174
176
|
override fun virtualViewPrerenderRatio(): Double = 5.0
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<9e6e04ca37edd1ad9265b74e251ff4de>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -97,6 +97,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
97
97
|
private var useShadowNodeStateOnCloneCache: Boolean? = null
|
|
98
98
|
private var useTurboModuleInteropCache: Boolean? = null
|
|
99
99
|
private var useTurboModulesCache: Boolean? = null
|
|
100
|
+
private var viewCullingOutsetRatioCache: Double? = null
|
|
100
101
|
private var virtualViewHysteresisRatioCache: Double? = null
|
|
101
102
|
private var virtualViewPrerenderRatioCache: Double? = null
|
|
102
103
|
|
|
@@ -830,6 +831,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
|
|
830
831
|
return cached
|
|
831
832
|
}
|
|
832
833
|
|
|
834
|
+
override fun viewCullingOutsetRatio(): Double {
|
|
835
|
+
var cached = viewCullingOutsetRatioCache
|
|
836
|
+
if (cached == null) {
|
|
837
|
+
cached = currentProvider.viewCullingOutsetRatio()
|
|
838
|
+
accessedFeatureFlags.add("viewCullingOutsetRatio")
|
|
839
|
+
viewCullingOutsetRatioCache = cached
|
|
840
|
+
}
|
|
841
|
+
return cached
|
|
842
|
+
}
|
|
843
|
+
|
|
833
844
|
override fun virtualViewHysteresisRatio(): Double {
|
|
834
845
|
var cached = virtualViewHysteresisRatioCache
|
|
835
846
|
if (cached == null) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<65e895433fc609bd7c2b5d7faa507f46>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -169,6 +169,8 @@ public interface ReactNativeFeatureFlagsProvider {
|
|
|
169
169
|
|
|
170
170
|
@DoNotStrip public fun useTurboModules(): Boolean
|
|
171
171
|
|
|
172
|
+
@DoNotStrip public fun viewCullingOutsetRatio(): Double
|
|
173
|
+
|
|
172
174
|
@DoNotStrip public fun virtualViewHysteresisRatio(): Double
|
|
173
175
|
|
|
174
176
|
@DoNotStrip public fun virtualViewPrerenderRatio(): Double
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<7a0a26494846d6b4881bea01beabb9d6>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -477,6 +477,12 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
477
477
|
return method(javaProvider_);
|
|
478
478
|
}
|
|
479
479
|
|
|
480
|
+
double viewCullingOutsetRatio() override {
|
|
481
|
+
static const auto method =
|
|
482
|
+
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jdouble()>("viewCullingOutsetRatio");
|
|
483
|
+
return method(javaProvider_);
|
|
484
|
+
}
|
|
485
|
+
|
|
480
486
|
double virtualViewHysteresisRatio() override {
|
|
481
487
|
static const auto method =
|
|
482
488
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jdouble()>("virtualViewHysteresisRatio");
|
|
@@ -858,6 +864,11 @@ bool JReactNativeFeatureFlagsCxxInterop::useTurboModules(
|
|
|
858
864
|
return ReactNativeFeatureFlags::useTurboModules();
|
|
859
865
|
}
|
|
860
866
|
|
|
867
|
+
double JReactNativeFeatureFlagsCxxInterop::viewCullingOutsetRatio(
|
|
868
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
869
|
+
return ReactNativeFeatureFlags::viewCullingOutsetRatio();
|
|
870
|
+
}
|
|
871
|
+
|
|
861
872
|
double JReactNativeFeatureFlagsCxxInterop::virtualViewHysteresisRatio(
|
|
862
873
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
863
874
|
return ReactNativeFeatureFlags::virtualViewHysteresisRatio();
|
|
@@ -1118,6 +1129,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1118
1129
|
makeNativeMethod(
|
|
1119
1130
|
"useTurboModules",
|
|
1120
1131
|
JReactNativeFeatureFlagsCxxInterop::useTurboModules),
|
|
1132
|
+
makeNativeMethod(
|
|
1133
|
+
"viewCullingOutsetRatio",
|
|
1134
|
+
JReactNativeFeatureFlagsCxxInterop::viewCullingOutsetRatio),
|
|
1121
1135
|
makeNativeMethod(
|
|
1122
1136
|
"virtualViewHysteresisRatio",
|
|
1123
1137
|
JReactNativeFeatureFlagsCxxInterop::virtualViewHysteresisRatio),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<ad2e322ef177ced7eb07412552596a5b>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -249,6 +249,9 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
249
249
|
static bool useTurboModules(
|
|
250
250
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
251
251
|
|
|
252
|
+
static double viewCullingOutsetRatio(
|
|
253
|
+
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
254
|
+
|
|
252
255
|
static double virtualViewHysteresisRatio(
|
|
253
256
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
254
257
|
|
|
@@ -22,7 +22,7 @@ constexpr struct {
|
|
|
22
22
|
int32_t Major = 0;
|
|
23
23
|
int32_t Minor = 83;
|
|
24
24
|
int32_t Patch = 0;
|
|
25
|
-
std::string_view Prerelease = "nightly-
|
|
25
|
+
std::string_view Prerelease = "nightly-20250929-2f40224fa";
|
|
26
26
|
} ReactNativeVersion;
|
|
27
27
|
|
|
28
28
|
} // namespace facebook::react
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<f01f3d1a08880a7fa9d3490e6bd9c61a>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -318,6 +318,10 @@ bool ReactNativeFeatureFlags::useTurboModules() {
|
|
|
318
318
|
return getAccessor().useTurboModules();
|
|
319
319
|
}
|
|
320
320
|
|
|
321
|
+
double ReactNativeFeatureFlags::viewCullingOutsetRatio() {
|
|
322
|
+
return getAccessor().viewCullingOutsetRatio();
|
|
323
|
+
}
|
|
324
|
+
|
|
321
325
|
double ReactNativeFeatureFlags::virtualViewHysteresisRatio() {
|
|
322
326
|
return getAccessor().virtualViewHysteresisRatio();
|
|
323
327
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<559a8be87c24238e70fceded8ac962a0>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -404,6 +404,11 @@ class ReactNativeFeatureFlags {
|
|
|
404
404
|
*/
|
|
405
405
|
RN_EXPORT static bool useTurboModules();
|
|
406
406
|
|
|
407
|
+
/**
|
|
408
|
+
* Outset the culling context frame with the provided ratio. The culling context frame size will be outset by width * ratio on the left and right, and height * ratio on the top and bottom.
|
|
409
|
+
*/
|
|
410
|
+
RN_EXPORT static double viewCullingOutsetRatio();
|
|
411
|
+
|
|
407
412
|
/**
|
|
408
413
|
* Sets a hysteresis window for transition between prerender and hidden modes.
|
|
409
414
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<379732a049a8539a1cde814996ff4791>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -1343,6 +1343,24 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() {
|
|
|
1343
1343
|
return flagValue.value();
|
|
1344
1344
|
}
|
|
1345
1345
|
|
|
1346
|
+
double ReactNativeFeatureFlagsAccessor::viewCullingOutsetRatio() {
|
|
1347
|
+
auto flagValue = viewCullingOutsetRatio_.load();
|
|
1348
|
+
|
|
1349
|
+
if (!flagValue.has_value()) {
|
|
1350
|
+
// This block is not exclusive but it is not necessary.
|
|
1351
|
+
// If multiple threads try to initialize the feature flag, we would only
|
|
1352
|
+
// be accessing the provider multiple times but the end state of this
|
|
1353
|
+
// instance and the returned flag value would be the same.
|
|
1354
|
+
|
|
1355
|
+
markFlagAsAccessed(73, "viewCullingOutsetRatio");
|
|
1356
|
+
|
|
1357
|
+
flagValue = currentProvider_->viewCullingOutsetRatio();
|
|
1358
|
+
viewCullingOutsetRatio_ = flagValue;
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
return flagValue.value();
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1346
1364
|
double ReactNativeFeatureFlagsAccessor::virtualViewHysteresisRatio() {
|
|
1347
1365
|
auto flagValue = virtualViewHysteresisRatio_.load();
|
|
1348
1366
|
|
|
@@ -1352,7 +1370,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewHysteresisRatio() {
|
|
|
1352
1370
|
// be accessing the provider multiple times but the end state of this
|
|
1353
1371
|
// instance and the returned flag value would be the same.
|
|
1354
1372
|
|
|
1355
|
-
markFlagAsAccessed(
|
|
1373
|
+
markFlagAsAccessed(74, "virtualViewHysteresisRatio");
|
|
1356
1374
|
|
|
1357
1375
|
flagValue = currentProvider_->virtualViewHysteresisRatio();
|
|
1358
1376
|
virtualViewHysteresisRatio_ = flagValue;
|
|
@@ -1370,7 +1388,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewPrerenderRatio() {
|
|
|
1370
1388
|
// be accessing the provider multiple times but the end state of this
|
|
1371
1389
|
// instance and the returned flag value would be the same.
|
|
1372
1390
|
|
|
1373
|
-
markFlagAsAccessed(
|
|
1391
|
+
markFlagAsAccessed(75, "virtualViewPrerenderRatio");
|
|
1374
1392
|
|
|
1375
1393
|
flagValue = currentProvider_->virtualViewPrerenderRatio();
|
|
1376
1394
|
virtualViewPrerenderRatio_ = flagValue;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<ae0e9dbf8605126b358f776226e68130>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -105,6 +105,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
105
105
|
bool useShadowNodeStateOnClone();
|
|
106
106
|
bool useTurboModuleInterop();
|
|
107
107
|
bool useTurboModules();
|
|
108
|
+
double viewCullingOutsetRatio();
|
|
108
109
|
double virtualViewHysteresisRatio();
|
|
109
110
|
double virtualViewPrerenderRatio();
|
|
110
111
|
|
|
@@ -118,7 +119,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
118
119
|
std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
|
|
119
120
|
bool wasOverridden_;
|
|
120
121
|
|
|
121
|
-
std::array<std::atomic<const char*>,
|
|
122
|
+
std::array<std::atomic<const char*>, 76> accessedFeatureFlags_;
|
|
122
123
|
|
|
123
124
|
std::atomic<std::optional<bool>> commonTestFlag_;
|
|
124
125
|
std::atomic<std::optional<bool>> cdpInteractionMetricsEnabled_;
|
|
@@ -193,6 +194,7 @@ class ReactNativeFeatureFlagsAccessor {
|
|
|
193
194
|
std::atomic<std::optional<bool>> useShadowNodeStateOnClone_;
|
|
194
195
|
std::atomic<std::optional<bool>> useTurboModuleInterop_;
|
|
195
196
|
std::atomic<std::optional<bool>> useTurboModules_;
|
|
197
|
+
std::atomic<std::optional<double>> viewCullingOutsetRatio_;
|
|
196
198
|
std::atomic<std::optional<double>> virtualViewHysteresisRatio_;
|
|
197
199
|
std::atomic<std::optional<double>> virtualViewPrerenderRatio_;
|
|
198
200
|
};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<e8eb056e546c41e5863073e460362020>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -319,6 +319,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
|
|
|
319
319
|
return false;
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
+
double viewCullingOutsetRatio() override {
|
|
323
|
+
return 0.0;
|
|
324
|
+
}
|
|
325
|
+
|
|
322
326
|
double virtualViewHysteresisRatio() override {
|
|
323
327
|
return 0.0;
|
|
324
328
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<00b4d80631374e0714c8aa9f65060220>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -702,6 +702,15 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
|
|
|
702
702
|
return ReactNativeFeatureFlagsDefaults::useTurboModules();
|
|
703
703
|
}
|
|
704
704
|
|
|
705
|
+
double viewCullingOutsetRatio() override {
|
|
706
|
+
auto value = values_["viewCullingOutsetRatio"];
|
|
707
|
+
if (!value.isNull()) {
|
|
708
|
+
return value.getDouble();
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
return ReactNativeFeatureFlagsDefaults::viewCullingOutsetRatio();
|
|
712
|
+
}
|
|
713
|
+
|
|
705
714
|
double virtualViewHysteresisRatio() override {
|
|
706
715
|
auto value = values_["virtualViewHysteresisRatio"];
|
|
707
716
|
if (!value.isNull()) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<fde4b531c2b0f19bef7bc69aaf3c5639>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -98,6 +98,7 @@ class ReactNativeFeatureFlagsProvider {
|
|
|
98
98
|
virtual bool useShadowNodeStateOnClone() = 0;
|
|
99
99
|
virtual bool useTurboModuleInterop() = 0;
|
|
100
100
|
virtual bool useTurboModules() = 0;
|
|
101
|
+
virtual double viewCullingOutsetRatio() = 0;
|
|
101
102
|
virtual double virtualViewHysteresisRatio() = 0;
|
|
102
103
|
virtual double virtualViewPrerenderRatio() = 0;
|
|
103
104
|
};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<27c7bc7a528da06ffe2bcea48211f6bd>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -409,6 +409,11 @@ bool NativeReactNativeFeatureFlags::useTurboModules(
|
|
|
409
409
|
return ReactNativeFeatureFlags::useTurboModules();
|
|
410
410
|
}
|
|
411
411
|
|
|
412
|
+
double NativeReactNativeFeatureFlags::viewCullingOutsetRatio(
|
|
413
|
+
jsi::Runtime& /*runtime*/) {
|
|
414
|
+
return ReactNativeFeatureFlags::viewCullingOutsetRatio();
|
|
415
|
+
}
|
|
416
|
+
|
|
412
417
|
double NativeReactNativeFeatureFlags::virtualViewHysteresisRatio(
|
|
413
418
|
jsi::Runtime& /*runtime*/) {
|
|
414
419
|
return ReactNativeFeatureFlags::virtualViewHysteresisRatio();
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<39140c882a6faa0403d3a59806c6bea5>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -182,6 +182,8 @@ class NativeReactNativeFeatureFlags
|
|
|
182
182
|
|
|
183
183
|
bool useTurboModules(jsi::Runtime& runtime);
|
|
184
184
|
|
|
185
|
+
double viewCullingOutsetRatio(jsi::Runtime& runtime);
|
|
186
|
+
|
|
185
187
|
double virtualViewHysteresisRatio(jsi::Runtime& runtime);
|
|
186
188
|
|
|
187
189
|
double virtualViewPrerenderRatio(jsi::Runtime& runtime);
|
|
@@ -32,6 +32,20 @@ CullingContext CullingContext::adjustCullingContextIfNeeded(
|
|
|
32
32
|
/* includeTransform */ true);
|
|
33
33
|
cullingContext.frame.size =
|
|
34
34
|
scrollViewShadowNode->getLayoutMetrics().frame.size;
|
|
35
|
+
|
|
36
|
+
// Enlarge the frame if an outset ratio is defined
|
|
37
|
+
auto outsetRatio = ReactNativeFeatureFlags::viewCullingOutsetRatio();
|
|
38
|
+
if (outsetRatio > 0) {
|
|
39
|
+
auto xOutset = static_cast<float>(
|
|
40
|
+
floor(cullingContext.frame.size.width * outsetRatio));
|
|
41
|
+
auto yOutset = static_cast<float>(
|
|
42
|
+
floor(cullingContext.frame.size.height * outsetRatio));
|
|
43
|
+
cullingContext.frame.origin.x -= xOutset;
|
|
44
|
+
cullingContext.frame.origin.y -= yOutset;
|
|
45
|
+
cullingContext.frame.size.width += 2.0f * xOutset;
|
|
46
|
+
cullingContext.frame.size.height += 2.0f * yOutset;
|
|
47
|
+
}
|
|
48
|
+
|
|
35
49
|
cullingContext.transform = Transform::Identity();
|
|
36
50
|
|
|
37
51
|
if (layoutMetrics.layoutDirection == LayoutDirection::RightToLeft) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native",
|
|
3
|
-
"version": "0.83.0-nightly-
|
|
3
|
+
"version": "0.83.0-nightly-20250929-2f40224fa",
|
|
4
4
|
"description": "A framework for building native apps using React",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -159,13 +159,13 @@
|
|
|
159
159
|
},
|
|
160
160
|
"dependencies": {
|
|
161
161
|
"@jest/create-cache-key-function": "^29.7.0",
|
|
162
|
-
"@react-native/assets-registry": "0.83.0-nightly-
|
|
163
|
-
"@react-native/codegen": "0.83.0-nightly-
|
|
164
|
-
"@react-native/community-cli-plugin": "0.83.0-nightly-
|
|
165
|
-
"@react-native/gradle-plugin": "0.83.0-nightly-
|
|
166
|
-
"@react-native/js-polyfills": "0.83.0-nightly-
|
|
167
|
-
"@react-native/normalize-colors": "0.83.0-nightly-
|
|
168
|
-
"@react-native/virtualized-lists": "0.83.0-nightly-
|
|
162
|
+
"@react-native/assets-registry": "0.83.0-nightly-20250929-2f40224fa",
|
|
163
|
+
"@react-native/codegen": "0.83.0-nightly-20250929-2f40224fa",
|
|
164
|
+
"@react-native/community-cli-plugin": "0.83.0-nightly-20250929-2f40224fa",
|
|
165
|
+
"@react-native/gradle-plugin": "0.83.0-nightly-20250929-2f40224fa",
|
|
166
|
+
"@react-native/js-polyfills": "0.83.0-nightly-20250929-2f40224fa",
|
|
167
|
+
"@react-native/normalize-colors": "0.83.0-nightly-20250929-2f40224fa",
|
|
168
|
+
"@react-native/virtualized-lists": "0.83.0-nightly-20250929-2f40224fa",
|
|
169
169
|
"abort-controller": "^3.0.0",
|
|
170
170
|
"anser": "^1.4.9",
|
|
171
171
|
"ansi-regex": "^5.0.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<cddccaa2570aa27af142d90430a14044>>
|
|
8
8
|
* @flow strict
|
|
9
9
|
* @noformat
|
|
10
10
|
*/
|
|
@@ -123,6 +123,7 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
|
|
|
123
123
|
useShadowNodeStateOnClone: Getter<boolean>,
|
|
124
124
|
useTurboModuleInterop: Getter<boolean>,
|
|
125
125
|
useTurboModules: Getter<boolean>,
|
|
126
|
+
viewCullingOutsetRatio: Getter<number>,
|
|
126
127
|
virtualViewHysteresisRatio: Getter<number>,
|
|
127
128
|
virtualViewPrerenderRatio: Getter<number>,
|
|
128
129
|
}>;
|
|
@@ -498,6 +499,10 @@ export const useTurboModuleInterop: Getter<boolean> = createNativeFlagGetter('us
|
|
|
498
499
|
* When enabled, NativeModules will be executed by using the TurboModule system
|
|
499
500
|
*/
|
|
500
501
|
export const useTurboModules: Getter<boolean> = createNativeFlagGetter('useTurboModules', false);
|
|
502
|
+
/**
|
|
503
|
+
* Outset the culling context frame with the provided ratio. The culling context frame size will be outset by width * ratio on the left and right, and height * ratio on the top and bottom.
|
|
504
|
+
*/
|
|
505
|
+
export const viewCullingOutsetRatio: Getter<number> = createNativeFlagGetter('viewCullingOutsetRatio', 0);
|
|
501
506
|
/**
|
|
502
507
|
* Sets a hysteresis window for transition between prerender and hidden modes.
|
|
503
508
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<765a2f99602c00c38047e25ce805af86>>
|
|
8
8
|
* @flow strict
|
|
9
9
|
* @noformat
|
|
10
10
|
*/
|
|
@@ -98,6 +98,7 @@ export interface Spec extends TurboModule {
|
|
|
98
98
|
+useShadowNodeStateOnClone?: () => boolean;
|
|
99
99
|
+useTurboModuleInterop?: () => boolean;
|
|
100
100
|
+useTurboModules?: () => boolean;
|
|
101
|
+
+viewCullingOutsetRatio?: () => number;
|
|
101
102
|
+virtualViewHysteresisRatio?: () => number;
|
|
102
103
|
+virtualViewPrerenderRatio?: () => number;
|
|
103
104
|
}
|