A Text component that is much richer and performant for both iOS and Android.
NitroText.mp4
- Works on both iOS and Android(currently fallback to RN
Texton Android) - Native iOS rendering with smooth selection.
- Nested fragments merge into a single native text view
- Rendering Markdown and HTML (coming soon).
- Supports only the New Architecture
- React Native v0.78.0 or higher (Fabric/Nitro Views)
- Node 18+ (Node 20+ recommended)
yarn add react-native-nitro-text react-native-nitro-modulesiOS
cd ios && pod install &&cd ..That’s it. You can now use the NitroText component in your app.
import{NitroTextasText}from'react-native-nitro-text'exportfunctionTitle(){return(<Textstyle={{fontSize: 24,fontWeight: 'bold'}}>
🚀 NitroText Showcase
</Text>)}iOS uses native selection. On Android, NitroText currently falls back to React Native Text.
import{NitroTextasText}from'react-native-nitro-text'exportfunctionSelectionExample(){return(<Textselectablestyle={{fontSize: 16,lineHeight: 22}}>
Long-press to select this text. NitroText supports smooth selection,
even with <Textstyle={{fontWeight: '600'}}>inline styles</Text> and
longer paragraphs.
</Text>)}NitroText can parse HTML string children and inline CSS when you pass renderer="html".
import{NitroText}from'react-native-nitro-text'exportfunctionHtmlExample(){consthtml=` <div> <h2>Renderer demo</h2> <p>This text comes from <strong>HTML</strong> with <em>semantic</em> tags.</p> <p><span style="color: #ff6347; font-weight: bold;">Inline CSS works too.</span></p> </div> `return<NitroTextrenderer="html">{html}</NitroText>}NitroText supports custom menu items that appear when text is selected. Pass a menus prop with an array of menu items, each containing a title and action callback.
import{NitroText}from'react-native-nitro-text'import{useMemo}from'react'exportfunctionMenuExample(){constmenus=useMemo(()=>[{title: 'Copy',action: ()=>console.log('Copy action')},{title: 'Share',action: ()=>console.log('Share action')},{title: 'Translate',action: ()=>console.log('Translate action')},],[])return(<NitroTextselectablemenus={menus}style={{fontSize: 16}}>
Select this text to see custom menu options appear in the selection menu.
</NitroText>)}- iOS
- Android - At the moment
NitroTextfallback to RNText.
Custom native text view with minimal JS overhead and native iOS selection. Great for heavy/nested styled text and large lists. It's a drop-in replacement for RN Text component.
bun run build— typecheck and build the packagebun run codegen— regenerate codegen outputs- Example app in
example/
Bootstrapped with create-nitro-module.
PRs welcome! Please open an issue first for major changes.
💬 For quick support, join our Discord channel