render
APIrender
functionThe render
function is the entry point for writing React Native Testing Library tests. It deeply renders the given React element and returns helpers to query the output components' structure.
When using React context providers, like Redux Provider, you'll likely want to wrap rendered component with them. In such cases, it's convenient to create your own custom
render
method. Follow this great guide on how to set this up.
The behavior of the render
method can be customized by passing various options as a second argument of the RenderOptions
type:
wrapper
This option allows you to wrap the tested component, passed as the first option to the render()
function, in an additional wrapper component. This is useful for creating reusable custom render functions for common React Context providers.
concurrentRoot
Set to false
to disable concurrent rendering.
Otherwise, render
will default to using concurrent rendering used in the React Native New Architecture.
createNodeMock
This option allows you to pass createNodeMock
option to ReactTestRenderer.create()
method in order to allow for custom mock refs. You can learn more about this option from React Test Renderer documentation.
unstable_validateStringsRenderedWithinText
This options is experimental, in some cases it might not work as intended, and its behavior might change without observing SemVer requirements for breaking changes.
This experimental option allows you to replicate React Native behavior of throwing Invariant Violation: Text strings must be rendered within a <Text> component
error when you try to render string
value under components different than <Text>
, e.g., under <View>
.
React Test Renderer does not enforce this check; hence, by default, React Native Testing Library also does not check this. That might result in runtime errors when running your code on a device, while the code works without errors in tests.
The render
function returns the same queries and utilities as the screen
object. We recommended using the screen
object as more developer-friendly way.
See this article from Kent C. Dodds for more details.
renderAsync
functionThis API requires RNTL v13.3.0 or later.
The renderAsync
function is the async version of render
designed for working with React 19 and React Suspense. This function uses async act
function internally to ensure all pending React updates are executed during rendering.
renderAsync
accepts the same options as render
.
The renderAsync
function returns a promise that resolves to the same queries and utilities as the screen
object. We recommend using the screen
object for queries and the lifecycle methods from the render result when needed.
When using renderAsync
, you have to use correspodning lifecycle methods: rerenderAsync
and unmountAsync
instead of their sync versions.