A framework for building native applications using React
Add TextEffect component and registry for custom text span effects (#56720)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/56720
Introduces a generic TextEffect system that lets apps register custom text
span effects without modifying React Native core. This can serve for use cases like `react-native-live-markdown`, or product specific effects.
The implementation is pretty dumb right now. It's just a marker, where we can add some JSON serializable data, to be serialized during Spannable creation on JS side MapBuffer.
**JS API:**
```js
import requireNativeTextEffect from 'react-native/Libraries/Text/requireNativeTextEffect';
const Spoiler = requireNativeTextEffect<{}>('RCTSpoiler');
<Text>Normal <Spoiler>hidden text</Spoiler></Text>
```
**Android registration** (via FabricUIManager):
```kotlin
val fabricUIManager = UIManagerHelper.getUIManager(
context, UIManagerType.FABRIC) as? FabricUIManager
fabricUIManager?.textEffectRegistry?.register("RCTSpoiler") { props ->
MyCustomSpan()
}
```
Changelog: [Internal]
Reviewed By: javache
Differential Revision: D98812222
fbshipit-source-id: 7000a0452b7592cdc2b26e7eaa37ec95736efce4 A
Andrew Datsenko committed
ab8b40df81a4e0a84306fc02772b66b6f8e2686e
Parent: 497177f
Committed by meta-codesync[bot] <215208954+meta-codesync[bot]@users.noreply.github.com>
on 5/11/2026, 8:17:34 PM