Skip to content

Commit 292ac3f

Browse files
Abbondanzofacebook-github-bot
authored andcommitted
Enable prepared text layout by default (#59152)
Summary: Turn on caching of text layout artifacts for later reuse and the Android text measurement optimizations by default, and raise the prepared layout cache size from 200 to 1000 entries. Overflow-hidden text default was already on and is unchanged. Changelog: [General][Changed] - Enable prepared text layout caching and Android text measurement optimizations by default Reviewed By: christophpurrer Differential Revision: D125768089
1 parent 7b6516e commit 292ac3f

5 files changed

Lines changed: 19 additions & 17 deletions

File tree

‎packages/react-native/Libraries/Text/__tests__/Text-itest.js‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,9 @@ describe('<Text>', () => {
323323
});
324324

325325
expect(root.getRenderedOutput({props: ['selectable']}).toJSX()).toEqual(
326-
<rn-paragraph selectable={'true'}>{TEST_TEXT}</rn-paragraph>,
326+
<rn-selectableParagraph selectable={'true'}>
327+
{TEST_TEXT}
328+
</rn-selectableParagraph>,
327329
);
328330
});
329331

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

Lines changed: 4 additions & 4 deletions
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<<669f16e131d4a5ddc026ffecc6893575>>
7+
* @generated SignedSource<<1b7656b36283a43728ffd60af3e30d08>>
88
*/
99

1010
/**
@@ -53,7 +53,7 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
5353

5454
override fun enableAndroidAutoOffscreenCompositingForElevation(): Boolean = false
5555

56-
override fun enableAndroidTextMeasurementOptimizations(): Boolean = false
56+
override fun enableAndroidTextMeasurementOptimizations(): Boolean = true
5757

5858
override fun enableAsyncDiskCacheCheckInMultiSourceImageAndroid(): Boolean = false
5959

@@ -117,7 +117,7 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
117117

118118
override fun enablePreallocatedPropsDiffOnInsertAndroid(): Boolean = false
119119

120-
override fun enablePreparedTextLayout(): Boolean = false
120+
override fun enablePreparedTextLayout(): Boolean = true
121121

122122
override fun enablePropsUpdateReconciliationAndroid(): Boolean = false
123123

@@ -165,7 +165,7 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
165165

166166
override fun perfMonitorV2Enabled(): Boolean = false
167167

168-
override fun preparedTextCacheSize(): Double = 200.0
168+
override fun preparedTextCacheSize(): Double = 1000.0
169169

170170
override fun preventShadowTreeCommitExhaustion(): Boolean = false
171171

‎packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h‎

Lines changed: 4 additions & 4 deletions
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<<52db1adfed5fd99e4ca145b50dc413a0>>
7+
* @generated SignedSource<<4f230970c9c4fc4e5e07e4b40ed46a58>>
88
*/
99

1010
/**
@@ -90,7 +90,7 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
9090
}
9191

9292
bool enableAndroidTextMeasurementOptimizations() override {
93-
return false;
93+
return true;
9494
}
9595

9696
bool enableAsyncDiskCacheCheckInMultiSourceImageAndroid() override {
@@ -218,7 +218,7 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
218218
}
219219

220220
bool enablePreparedTextLayout() override {
221-
return false;
221+
return true;
222222
}
223223

224224
bool enablePropsUpdateReconciliationAndroid() override {
@@ -314,7 +314,7 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
314314
}
315315

316316
double preparedTextCacheSize() override {
317-
return 200.0;
317+
return 1000.0;
318318
}
319319

320320
bool preventShadowTreeCommitExhaustion() override {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ const definitions: FeatureFlagDefinitions = {
215215
ossReleaseStage: 'none',
216216
},
217217
enableAndroidTextMeasurementOptimizations: {
218-
defaultValue: false,
218+
defaultValue: true,
219219
metadata: {
220220
dateAdded: '2025-07-01',
221221
description:
@@ -556,7 +556,7 @@ const definitions: FeatureFlagDefinitions = {
556556
ossReleaseStage: 'none',
557557
},
558558
enablePreparedTextLayout: {
559-
defaultValue: false,
559+
defaultValue: true,
560560
metadata: {
561561
dateAdded: '2025-05-01',
562562
description: 'Enables caching text layout artifacts for later reuse',
@@ -816,10 +816,10 @@ const definitions: FeatureFlagDefinitions = {
816816
ossReleaseStage: 'none',
817817
},
818818
preparedTextCacheSize: {
819-
defaultValue: 200,
819+
defaultValue: 1000,
820820
metadata: {
821821
description: 'Number cached PreparedLayouts in TextLayoutManager cache',
822-
expectedReleaseValue: 200,
822+
expectedReleaseValue: 1000,
823823
purpose: 'operational',
824824
},
825825
ossReleaseStage: 'none',

‎packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js‎

Lines changed: 4 additions & 4 deletions
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<<f36d78d946c018d3dd3fc30f6071ee76>>
7+
* @generated SignedSource<<dafb9aa0996a2ac9fd24036f0064bd40>>
88
* @flow strict
99
* @noformat
1010
*/
@@ -282,7 +282,7 @@ export const enableAndroidAutoOffscreenCompositingForElevation: Getter<boolean>
282282
/**
283283
* Enables various optimizations throughout the path of measuring text on Android.
284284
*/
285-
export const enableAndroidTextMeasurementOptimizations: Getter<boolean> = createNativeFlagGetter('enableAndroidTextMeasurementOptimizations', false);
285+
export const enableAndroidTextMeasurementOptimizations: Getter<boolean> = createNativeFlagGetter('enableAndroidTextMeasurementOptimizations', true);
286286
/**
287287
* Runs multi-source image disk-cache checks asynchronously on Android.
288288
*/
@@ -410,7 +410,7 @@ export const enablePreallocatedPropsDiffOnInsertAndroid: Getter<boolean> = creat
410410
/**
411411
* Enables caching text layout artifacts for later reuse
412412
*/
413-
export const enablePreparedTextLayout: Getter<boolean> = createNativeFlagGetter('enablePreparedTextLayout', false);
413+
export const enablePreparedTextLayout: Getter<boolean> = createNativeFlagGetter('enablePreparedTextLayout', true);
414414
/**
415415
* When enabled, Android will receive prop updates based on the differences between the last rendered shadow node and the last committed shadow node.
416416
*/
@@ -506,7 +506,7 @@ export const perfMonitorV2Enabled: Getter<boolean> = createNativeFlagGetter('per
506506
/**
507507
* Number cached PreparedLayouts in TextLayoutManager cache
508508
*/
509-
export const preparedTextCacheSize: Getter<number> = createNativeFlagGetter('preparedTextCacheSize', 200);
509+
export const preparedTextCacheSize: Getter<number> = createNativeFlagGetter('preparedTextCacheSize', 1000);
510510
/**
511511
* Enables a new mechanism in ShadowTree to prevent problems caused by multiple threads trying to commit concurrently. If a thread tries to commit a few times unsuccessfully, it will acquire a lock and try again.
512512
*/

0 commit comments

Comments
 (0)