Short answer
Wrap every piece of text in <Text>. Then look for {count && <Something />} where count can be 0: React renders the 0 as text. Change it to {count > 0 && <Something />}. Also check for a stray space, semicolon or // comment between tags inside a View. The red box’s component stack names the component to look in.
Where the stray text hides, and the fix
01
React Native is stricter than the web
“In React Native, we are more strict about it: you must wrap all the text nodes inside of a <Text> component.” React Native, Text
In a browser, text can sit anywhere. In React Native every string, number or space that renders must be inside a <Text>. Code moved from a web app, or written by an AI tool from web examples, breaks this rule easily.
// crashes <View>Some text</View> // works <View> <Text>Some text</Text> </View>02
A number on the left of &&
“Don't put numbers on the left side of &&.” React, Conditional rendering
The most common hidden cause. {items.length && <List items={items} />} renders 0 when the list is empty, and that 0 is text inside a View. It works while there is data, which is why it often appears only for new users or empty states. Compare against zero, or use a ternary:
// crashes when items is empty {items.length && <List items={items} />} // works {items.length > 0 && <List items={items} />} {items.length ? <List items={items} /> : null}03
A stray space, semicolon or comment between tags
“You cannot have a text node directly under a <View>.” React Native, Text
A {' '} spacer, a semicolon left after a closing tag, or a comment written as // inside JSX all render as text. Inside a View they trigger the same error. Write comments inside JSX as {/* comment */} and move spacing into styles.
04
Find the component
The red box lists the component stack: the first of your own components in it is where the text is. If the message only appears in a release build, open the device logs, or reproduce the same data in development, such as an empty list or a missing name.
Checked against the vendor’s docs on : React Native docs: Text (text must be inside a <Text>); React docs: Conditional rendering (numbers on the left of &&).
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: Expo and React Native “Unable to resolve module” · Expo app crashes in production · React Native “Unable to load script” · Expo native module cannot be null