---
title: "Best React Native PDF library for viewing, editing, and signing PDFs | Nutrient React Native SDK"
canonical_url: "https://www.nutrient.io/guides/react-native/"
md_url: "https://www.nutrient.io/guides/react-native.md"
last_updated: "2026-06-08T17:11:05.573Z"
description: "Discover the best React Native PDF library for iOS and Android. View, annotate, edit, and sign PDFs seamlessly in your mobile app. Learn how to integrate and customize it."
---

# React Native PDF library

Nutrient React Native SDK provides a unified solution for viewing, annotating, and editing PDFs on both Android and iOS. With a single SDK, developers can seamlessly integrate powerful PDF functionality into any React Native application, ensuring a consistent experience across platforms.

[Try for free](https://www.nutrient.io/sdk/react-native/getting-started.md)

[Launch demo](https://www.nutrient.io/guides/react-native/demo.md)

**Latest release**: Discover what’s new! Check out our changelog for the latest release updates.

[Learn more](https://www.nutrient.io/guides/react-native/changelog.md)

## Getting started

The Nutrient React Native dependency is installed from npmjs.com by running `yarn add @nutrient-sdk/react-native` in your project directory or `npm install @nutrient-sdk/react-native` if you’re using npm.

## Essential guides

Learn how to open a PDF, save a PDF, and customize the UI in your React Native app.

[Explore all](https://www.nutrient.io/guides/react-native/intro.md)

---

**Open a document**

How to open a PDF from local storage

[Read more](https://www.nutrient.io/guides/react-native/open-a-document/from-local-storage.md)

---

**Save a document**

How to save a PDF to local storage

[Read more](https://www.nutrient.io/guides/react-native/save-a-document.md)

---

**Customize UI**

How to customize toolbars, localize for different languages, and more

[Read more](https://www.nutrient.io/guides/react-native/user-interface.md)

## File type support

`PDF documents`

`Image documents`

## Programmatically create annotations

Nutrient React Native SDK offers APIs to manipulate (get, add, and remove) annotations programmatically. To add an ink annotation programmatically, create an `InkAnnotation` object and use the `addAnnotations` API. For more information, refer to the [programmatically create annotations in React Native](/guides/react-native/annotations/create-edit-and-remove/programmatic.md) guide.

```ts

const inkAnnotation: InkAnnotation = new InkAnnotation({
    type: 'pspdfkit/ink',
    bbox: [89.586334228515625, 98.5791015625, 143.12948608398438, 207.1583251953125],
    pageIndex: 0,
    isDrawnNaturally: false,
    lines: {
      intensities: [
        [0.5, 0.5, 0.5],
        [0.5, 0.5, 0.5],
      ],
      points: [
        [
          [92.086334228515625, 101.07916259765625],
          [92.086334228515625, 202.15826416015625],
          [138.12950134277344, 303.2374267578125],
        ],
        [
          [184.17266845703125, 101.07916259765625],
          [184.17266845703125, 202.15826416015625],
          [230.2158203125, 303.2374267578125],
        ],
      ],
    }
  });

// Add the ink annotation.
await this.pdfRef.current?.getDocument().addAnnotations([inkAnnotation]);

```

## Programmatically fill PDF form fields

Nutrient React Native SDK enables you to fill form fields programmatically. Each form field has a fully qualified name used to identify and retrieve a specific form field object before filling it. The following example shows how to fill the value of a form field with a fully qualified name (`formFieldName`) and two radio buttons with fully qualified names (`radioFieldName_0` and `radioFieldName_1`). For more information, refer to the [fill PDF form fields programmatically in React Native](/guides/react-native/forms/fill-form-fields/programmatic.md) guide.

```ts

this.pdfRef.current?.setFormFieldValue(
	'formFieldName',
	'Form Field Value',
);

// For radio buttons and checkboxes, use `selected` and `deselected`.
this.pdfRef.current?.setFormFieldValue('radioFieldName_0', 'selected');
this.pdfRef.current?.setFormFieldValue(
	'radioFieldName_1',
	'deselected',
);

```

## Programmatically add a signature

Nutrient React Native SDK enables you to seamlessly integrate electronic signatures into PDF documents within your React Native app. For example, to create an ink signature in iOS, use the following code snippet. For more information, refer to the [sign PDFs in React Native](/guides/react-native/signatures.md) guide.

```swift

let document: Document =...

// Create the ink annotation.
let annotation = InkAnnotation()
annotation.color = UIColor(red: 0.667, green: 0.279, blue: 0.748, alpha: 1)
annotation.lineWidth = 3

// Set the stroke data. For example, this would be loaded from user input on another device.
// This example code is just hardcoding a stroke with three points.
annotation.lines = [
    [CGPoint(x: 50, y: 100), CGPoint(x: 100, y: 200), CGPoint(x: 150, y: 150)],
]

// Mark this ink annotation as a signature.
annotation.isSignature = true

// Add the annotation. By default, it will be added to the first page.
document.add(annotations: [annotation])

```

## Customizing PDF viewer

Nutrient React Native SDK offers a few ways to show or hide the UI. For example, the UI view mode can be changed using the `userInterfaceViewMode` configuration option. The following code snippet shows how to use the `automatic` view mode. For more information, refer to the [guides for customizing the UI](/guides/react-native/user-interface.md#guides-for-customizing-the-ui).

```jsx

<NutrientView
	document={DOCUMENT}
	configuration={{
		userInterfaceViewMode: 'automaticNoFirstLastPage',
	}}
	ref={this.pdfRef}
	fragmentTag="PDF1"
	style={{ flex: 1 }}
/>

```

## PDF collaboration

Nutrient Instant is our prebuilt solution for synchronizing annotations across multiple concurrent users, devices, or sessions. It offers developers a self-hosted solution that handles document viewing on any platform, data management, conflict resolution, version tracking, diffing, and merging. It’s a licensable component that’s included as part of [Document Engine](/guides/document-engine.md), which can be used together with Nutrient React Native SDK. For more information, refer to the [guides for Instant synchronization](/guides/react-native/instant-synchronization.md#guides-for-instant-synchronization).

## FAQ

Below are a few frequently asked questions about Nutrient React Native SDK.

#### Can I customize the appearance of the PDF viewer in my React Native app?

Yes. The Nutrient React Native PDF SDK enables extensive customization of the viewer’s UI to align with your app’s design.

#### Can the SDK be used in offline scenarios?

Yes. The SDK supports offline usage, enabling users to access and interact with PDF documents without an active internet connection.

#### Is there a free trial available for Nutrient React Native SDK?

Yes. You can try the SDK for free before purchasing a license. Your free trial unlocks the full capabilities of our SDK and includes support from our solutions engineers.

#### Does the SDK support dark mode?

Yes. The PDF viewer in Reader View supports dark mode for a better user experience in low-light environments.

#### Is the SDK compatible with both Expo and React Native CLI?

Currently, the SDK is designed for React Native CLI. Expo support requires additional configuration. For more information, refer to the [How to use Nutrient React Native SDK with Expo](/blog/how-to-use-nutrient-react-native-sdk-with-expo/) blog post.

**Call to Action**

Start your free trial for unlimited access and expert support.

[Learn More](https://www.nutrient.io/sdk/react-native/getting-started.md)

---

## Related pages

- [Explore powerful demos of the React Native PDF library](/guides/react-native/demo.md)
- [Download our React Native library](/guides/react-native/downloads.md)
- [AI Assistant on React Native](/guides/react-native/ai-assistant.md)
- [React Native guides: Integrate our PDF library](/guides/react-native/intro.md)
- [Edit PDFs in React Native](/guides/react-native/editor.md)
- [Changelog for React Native](/guides/react-native/changelog.md)
- [Knowledge base](/guides/react-native/kb.md)
- [Sign PDFs in React Native](/guides/react-native/signatures.md)
- [Troubleshooting](/guides/react-native/troubleshoot.md)
- [Upgrade and migration guides](/guides/react-native/upgrade.md)

## Pages in this section

- [Analytics events](/guides/react-native/events-and-notifications/analytics.md)
- [Annotation events and notifications](/guides/react-native/events-and-notifications/annotation.md)
- [PDF form events and notifications](/guides/react-native/events-and-notifications/forms.md)
- [PDF viewer events](/guides/react-native/events-and-notifications/events.md)
- [Events and notifications](/guides/react-native/events-and-notifications.md)
- [Viewer events](/guides/react-native/events-and-notifications/viewer.md)
- [Licensing](/guides/react-native/about/licensing.md)
- [Changelog](/guides/react-native/about/changelog.md)
- [System compatibility and requirements](/guides/react-native/about/system-compatibility.md)
- [Platform support](/guides/react-native/about/platform-support.md)
- [File type support](/guides/react-native/about/file-type-support.md)
- [PDF form library for React Native](/guides/react-native/forms.md)
- [Flatten PDF form fields in React Native](/guides/react-native/forms/flatten.md)
- [Embed data into PDF forms in React Native](/guides/react-native/forms/embed-data-into-pdf.md)
- [Extract data from PDF form fields in React Native](/guides/react-native/forms/extract-form-data.md)
- [Syncing PDF annotations in React Native](/guides/react-native/instant-synchronization/annotation-sync.md)
- [Adding Instant comments to PDFs in React Native](/guides/react-native/instant-synchronization/comments.md)
- [Create and manage PDF annotation layers in React Native](/guides/react-native/instant-synchronization/instant-layers.md)
- [Instant sync and document state in React Native](/guides/react-native/instant-synchronization/document-state.md)
- [Nutrient Instant usage on React Native](/guides/react-native/instant-synchronization/usage.md)
- [Integrating real-time collaboration into your React Native application](/guides/react-native/instant-synchronization/get-started.md)
- [PDF collaboration library for React Native](/guides/react-native/instant-synchronization.md)
- [Offline PDF annotations with sync on React Native](/guides/react-native/instant-synchronization/offline-support.md)
- [Client authentication in PSPDFKit Instant](/guides/react-native/instant-synchronization/authentication.md)
- [Customize Nutrient UI with React Native](/guides/react-native/knowledge-base/react-native-appearance-customization.md)
- [How Do I Overlay A Custom Ui Element In React Native](/guides/react-native/knowledge-base/how-do-i-overlay-a-custom-ui-element-in-react-native.md)
- [Measure distance and area in a PDF in React Native](/guides/react-native/measurements.md)
- [Measure PDF area in React Native](/guides/react-native/measurements/measure-area.md)
- [Configure PDF measurements in React Native](/guides/react-native/measurements/configure-measurements.md)
- [Measure PDF distance in React Native](/guides/react-native/measurements/measure-distance.md)
- [Open PDF files in React Native](/guides/react-native/open-a-document/from-local-storage.md)
- [Open remote PDF files in React Native](/guides/react-native/open-a-document/from-remote-url.md)
- [React Native 2 16 Migration Guide](/guides/react-native/migration-guides/react-native-2-16-migration-guide.md)
- [React Native 2 13 Migration Guide](/guides/react-native/migration-guides/react-native-2-13-migration-guide.md)
- [React Native 2 2 Migration Guide](/guides/react-native/migration-guides/react-native-2-2-migration-guide.md)
- [React Native 3 Migration Guide](/guides/react-native/migration-guides/react-native-3-migration-guide.md)
- [React Native 2 12 Migration Guide](/guides/react-native/migration-guides/react-native-2-12-migration-guide.md)
- [React Native 2 3 Migration Guide](/guides/react-native/migration-guides/react-native-2-3-migration-guide.md)
- [React Native 2 9 Migration Guide](/guides/react-native/migration-guides/react-native-2-9-migration-guide.md)
- [React Native 2 8 Migration Guide](/guides/react-native/migration-guides/react-native-2-8-migration-guide.md)
- [React Native 4 Migration Guide](/guides/react-native/migration-guides/react-native-4-migration-guide.md)
- [How to upgrade to the latest React Native version](/guides/react-native/migration-guides/upgrading.md)
- [Example projects for React Native PDF library](/guides/react-native/prebuilt-solutions/example-projects.md)
- [PDF redaction library for React Native](/guides/react-native/redaction.md)
- [Introduction to PDF redaction on React Native](/guides/react-native/redaction/introduction-to-redaction.md)
- [Redacting PDFs in our React Native viewer](/guides/react-native/redaction/built-in-ui.md)
- [PDF generation configuration in React Native](/guides/react-native/pdf-generation/configuration.md)
- [Generate blank PDFs in React Native](/guides/react-native/pdf-generation/blank-pdf.md)
- [Document to PDF in React Native](/guides/react-native/pdf-generation/from-documents.md)
- [HTML to PDF in React Native](/guides/react-native/pdf-generation/from-html.md)
- [Generate PDFs from a template in React Native](/guides/react-native/pdf-generation/from-template.md)
- [Image to PDF in React Native](/guides/react-native/pdf-generation/from-images.md)
- [Generate PDFs in React Native](/guides/react-native/pdf-generation.md)
- [Save as PDFs in React Native](/guides/react-native/save-a-document/save-as.md)
- [Auto save PDF files in React Native](/guides/react-native/save-a-document.md)
- [Guide to adding a Nutrient license key in React Native](/guides/react-native/troubleshooting/add-license-key.md)
- [Fixing Android back button crash with Nutrient](/guides/react-native/troubleshooting/handling-back-navigation-with-react-native-screens.md)
- [Android Gradle Plugin Requires Java 11](/guides/react-native/troubleshooting/android-gradle-plugin-requires-java-11.md)
- [How to find your iOS app bundle ID easily](/guides/react-native/troubleshooting/finding-the-bundle-id.md)
- [Managing Nutrient's render cache effectively](/guides/react-native/troubleshooting/outdated-render-cache.md)
- [Find out your Nutrient version easily](/guides/react-native/troubleshooting/getting-the-currently-used-version.md)
- [Fix new architecture build issues in React Native](/guides/react-native/troubleshooting/new-architecture-build-issues.md)
- [Nightlies](/guides/react-native/troubleshooting/nightlies.md)
- [NutrientView inside a modal is blank or crashes on Android](/guides/react-native/troubleshooting/nutrientview-modal-android.md)
- [Out Of Memory Error React Native Android](/guides/react-native/troubleshooting/out-of-memory-error-react-native-android.md)
- [Textinput Error React Native Android](/guides/react-native/troubleshooting/textinput-error-react-native-android.md)
- [React Navigation](/guides/react-native/troubleshooting/react-navigation.md)
- [Understanding bundle IDs for iOS app development](/guides/react-native/troubleshooting/what-is-a-bundle-id.md)
- [View controller-based status bar appearance](/guides/react-native/troubleshooting/view-controller-based-status-bar-appearance.md)
- [CMake/Ninja build error caused by long file paths on Windows](/guides/react-native/troubleshooting/windows-path-length-cmake-error.md)
- [Understanding app IDs in Android development](/guides/react-native/troubleshooting/what-is-an-app-id.md)
- [Fix Xcode error code 65 for React Native on M1 Macs](/guides/react-native/troubleshooting/xcode-error-65-missing-required-target-architectures-react-native.md)
- [NutrientView React Native UI component](/guides/react-native/user-interface/pspdfkitview.md)
- [Localization: Change languages in our React Native PDF viewer](/guides/react-native/user-interface/localization.md)
- [Customizing menus on React Native](/guides/react-native/user-interface/menus.md)
- [Customizing our PDF viewer in React Native](/guides/react-native/user-interface.md)
- [Show the PSPDFKitView close button](/guides/react-native/user-interface/close-button.md)
- [Configuring PSPDFKitView properties](/guides/react-native/user-interface/configuration.md)
- [Show or hide the UI in our React Native viewer](/guides/react-native/user-interface/ui-visibility.md)
- [React Native PDF viewer library](/guides/react-native/viewer.md)
- [Rotating pages in our React Native PDF viewer](/guides/react-native/viewer/page-rotation.md)
- [React Native image viewer library](/guides/react-native/viewer/images.md)
- [Customizing page navigation in our React Native PDF viewer](/guides/react-native/viewer/page-navigation.md)
- [React Native PDF reader library](/guides/react-native/viewer/reader-view.md)
- [Configuring scroll direction and page transitions in our React Native viewer](/guides/react-native/viewer/page-transition.md)
- [Flatten annotations in React Native](/guides/react-native/annotations/flatten.md)
- [PDF actions in React Native](/guides/react-native/annotations/actions.md)
- [Comprehensive PDF annotation library for React Native applications](/guides/react-native/annotations.md)
- [Add annotations to images in React Native](/guides/react-native/annotations/annotate-on-images/create-edit-and-remove.md)
- [Image annotation specification in React Native](/guides/react-native/annotations/annotate-on-images/specification.md)
- [Import and export XFDF annotations in React Native](/guides/react-native/annotations/import-and-export/xfdf.md)
- [Import and export annotations in React Native](/guides/react-native/annotations/import-and-export/instant-json.md)
- [Define annotation behavior with flags on React Native](/guides/react-native/annotations/create-edit-and-remove/annotation-flags.md)
- [Set annotation author in React Native](/guides/react-native/annotations/create-edit-and-remove/author-name.md)
- [Detecting if annotations have changed in React Native](/guides/react-native/annotations/create-edit-and-remove/detect-changes.md)
- [Disable annotation editing in React Native](/guides/react-native/annotations/create-edit-and-remove/disable-editing.md)
- [Programmatically create annotations in React Native](/guides/react-native/annotations/create-edit-and-remove/programmatic.md)
- [Programmatically select or deselect annotations in React Native](/guides/react-native/annotations/create-edit-and-remove/selection-deselection.md)
- [Exploring PDF form fields in React Native](/guides/react-native/forms/introduction-to-forms/form-fields.md)
- [Understanding PDF forms and their advantages](/guides/react-native/forms/introduction-to-forms/what-are-forms.md)
- [Auto save annotations in React Native](/guides/react-native/annotations/save/auto-save.md)
- [Embed annotations in a PDF file on React Native](/guides/react-native/annotations/save/embed-into-pdf.md)
- [Manually save annotations in React Native](/guides/react-native/annotations/save/manual-save.md)
- [Customize annotation saving permissions in React Native](/guides/react-native/annotations/save/saving-permissions.md)
- [Disable PDF form editing in React Native](/guides/react-native/forms/fill-form-fields/disable-editing.md)
- [Form field support in our React Native PDF viewer](/guides/react-native/forms/fill-form-fields/using-the-ui.md)
- [Fill PDF form fields programmatically in React Native](/guides/react-native/forms/fill-form-fields/programmatic.md)
- [Customizing the annotation toolbar in our React Native viewer](/guides/react-native/user-interface/toolbars/annotation-toolbar.md)
- [Customizing the toolbar in our React Native viewer](/guides/react-native/user-interface/toolbars/main-toolbar.md)
- [Render annotations in React Native](/guides/react-native/viewer/rendering/annotations.md)
- [Render PDF forms in React Native](/guides/react-native/viewer/rendering/pdf-forms.md)
- [Supported annotations types in React Native](/guides/react-native/annotations/introduction-to-annotations/annotation-types.md)
- [Retrieve or set the annotation bounding box in React Native](/guides/react-native/annotations/introduction-to-annotations/bounding-boxes.md)
- [What are PDF annotations?](/guides/react-native/annotations/introduction-to-annotations/what-are-annotations.md)

