---
title: Handling read-only text collectors in React Native
description: Render READ_ONLY_TEXT ReadOnlyTextCollector content returned by a React Native DaVinci flow.
component: orchsdks
page_id: orchsdks:davinci:usage/react-native/collectors/read-only-text
canonical_url: https://developer.pingidentity.com/orchsdks/davinci/usage/react-native/collectors/read-only-text.html
llms_txt: https://developer.pingidentity.com/orchsdks/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
revdate: Fri, 28 Aug 2026 00:00:00 +0000
keywords: ["DaVinci", "React Native", "ReadOnlyTextCollector", "READ_ONLY_TEXT", "Agreements"]
section_ids:
  rendering_read_only_text: Rendering read-only text
---

# Handling read-only text collectors in React Native

[icon: circle-check, set=far]PingOne [icon: react, set=fab]React Native

* [Prepare](../01-configuring-the-server.html)

* [Install](../02-installing-the-davinci-module.html)

* [Configure](../03-configuring-the-davinci-module.html)

* [Start](../04-starting-a-davinci-flow.html)

* **Navigate**

* [Manage](../06-handling-sessions.html)

A DaVinci flow can use read-only text to show information that the user must read before continuing. For example, a PingOne flow can present an agreement, instructions, or explanatory text alongside input fields.

The React Native bridge exposes this content as a `READ_ONLY_TEXT` collector with the `ReadOnlyTextCollector` type. The bridge uses this type even when the server payload identifies the content with another type, such as `AGREEMENT`.

Unlike input collectors, read-only text does not ask the user for a value. The collector is classified as `output_only`, and the form helper excludes it from the payload passed to `next()`.

## Rendering read-only text

Use `titleEnabled` to decide whether to display `title` above `content`. Use `enabled` to decide whether your app should display the collector in the current form.

The collector also exposes `agreementId` and `useDynamicAgreement` metadata. Use those values when your application needs to identify or distinguish agreement content, but do not assume that the React Native SDK retrieves agreement content separately. The collector already provides the `content` that your app renders.

Render a read-only text collector

```typescript
import { Text, View } from 'react-native';

function ReadOnlyTextField({ field }) {
  if (!field.enabled) return null;

  return (
    <View>
      {field.titleEnabled && <Text>{field.title}</Text>}
      <Text>{field.content}</Text>
    </View>
  );
}
```

Do not render a text input or submit a value for `READ_ONLY_TEXT`. When the same `ContinueNode` contains manual collectors, render the read-only content alongside them and submit only the manual values.

See [Stepping through DaVinci flows](../05-stepping-through-davinci-flows.html) for execution modes and form submission.
