Orchestration SDKs

Getting Started with the Journey module for React Native

PingOne Advanced Identity Cloud PingAM React Native


The Orchestration SDK for React Native brings PingOne Advanced Identity Cloud and PingAM authentication journeys to React Native applications.

It wraps the Orchestration SDK for Android and the Orchestration SDK for iOS as React Native TurboModules, exposing a single TypeScript API that works across both platforms.

@startuml diagram-react-native-sdk-architecture.svg
/'
    Copyright © 2026 Ping Identity Corporation

    This code is to be used exclusively in connection with Ping Identity Corporation
    software or services.
    Ping Identity Corporation only offers such software or services to legal entities
    who have entered into a binding license agreement with Ping Identity Corporation.
'/

top to bottom direction
skinparam linetype ortho
skinparam nodesep 90
skinparam ranksep 60
'skinparam defaultFontName sans-serif
'skinparam defaultFontSize 13

skinparam rectangle {
    BackgroundColor #f0f7ff
    BorderColor #4a90d9
    FontColor #1a1a1a
}

skinparam component {
    BackgroundColor #ffffff
    BorderColor #4a90d9
    FontColor #1a1a1a
}

skinparam cloud {
    BackgroundColor #e8f4e8
    BorderColor #3a9a3a
}

rectangle "React Native Application" as APP #e8f0fb {
    component "useJourney · useJourneyForm" as HOOKS
}

rectangle "Orchestration SDK for React Native" as RNLAYER #ddeeff {
    component "Orchestration SDK for React Native\nJourney module" as JOURNEY
}

component "Optional modules:\nrn-oidc  ·  rn-storage\nrn-fido  ·  rn-logger" as OPTIONAL #fffbe6

rectangle "React Native Bridge" as BRIDGE #f5f0ff {
    component "Android TurboModule" as ANDROID_BRIDGE
    component "iOS TurboModule" as IOS_BRIDGE
}

rectangle "Native SDKs" as NATIVE #fff0e8 {
    component "Orchestration SDK for Android\nJourney module" as ANDROID_SDK
    component "Orchestration SDK for iOS\nJourney module" as IOS_SDK
}

cloud "Advanced Identity Cloud/PingAM" as SERVER

HOOKS -down-> JOURNEY : "TypeScript API "
JOURNEY -right-> OPTIONAL : Opt-in\nmodules
JOURNEY -down-> ANDROID_BRIDGE : "Android "
JOURNEY -down-> IOS_BRIDGE : "iOS  "
ANDROID_BRIDGE -down-> ANDROID_SDK
IOS_BRIDGE -down-> IOS_SDK
ANDROID_SDK -down-> SERVER : "HTTPS "
IOS_SDK -down-> SERVER : "HTTPS "

@enduml

One codebase targets Android and iOS by delegating to each platform’s native SDK at runtime.

Optional packages for storage, logging, FIDO, and OIDC slot in independently so you include only what your app needs.

One API, two platforms

The Orchestration SDK for React Native wraps the Orchestration SDK for Android and the Orchestration SDK for iOS behind a single TypeScript interface using React Native TurboModules.

You call the same createJourneyClient() and useJourney() APIs regardless of which platform is running, and the native bridge handles the rest.

This means your team works entirely in TypeScript and inherits the security, reliability, and compliance guarantees of the native Orchestration SDKs without needing to maintain separate Android and iOS codebases.

Native security, zero native code

Authentication logic, including secure storage, device binding, biometrics, and attestation, all run inside the native SDK on each platform.

The React Native layer orchestrates the flow but never handles sensitive material directly.

Your app gets production-grade security by default, and the native SDKs stay upgradeable independently of your JavaScript layer.

Journeys as a predictable state machine

Every step of an authentication journey resolves to one of four node types: ContinueNode (more input required), SuccessNode, FailureNode, or ErrorNode.

The four node types give you an exhaustive, unambiguous set of states — your app always knows where it is in the journey.

Callbacks with intent

Each callback in a ContinueNode carries an executionMode that tells your app what to do with it: collect input from the user (manual), display information without input (output_only), or hand off to a native integration before continuing (integration_required).

You never need to parse raw callback JSON or write per-type branching logic from scratch — executionMode tells your app how to handle each callback: whether to collect input, display information, or hand off to a native integration.

Bring your own UI

The useJourneyForm hook normalizes all callbacks in a node into a flat list of typed fields — prompt, kind, validation state, default value, and options — without rendering anything itself.

Your components always know exactly what to render, and the SDK handles field identity, submit planning, and value validation so they stay focused on presentation.

Composable by default

The SDK is a monorepo of independent packages: rn-journey, rn-oidc, rn-storage, rn-logger, rn-fido, and more.

Each is a standalone NPM module and can be added, or not, without affecting the others.

A minimal integration needs only rn-core and rn-journey. Everything else is opt-in, keeping your bundle lean and your dependency surface small.

In this section you will learn how to add the Journey module, configure it to communicate with the identity server, and write the code to initiate a login.

You’ll handle each step of an authentication journey, from collecting user credentials to processing the final session token upon success or handling errors if the login fails.

Configuring the server for React Native

Before you begin ensure you have set up your Advanced Identity Cloud tenant or PingAM server with the required configuration.

Installing the Journey module in React Native

Learn how to install the Journey module into your React Native projects.

Configuring a Journey client in React Native

Explore the configuration options you have available for connecting the Journey module to your Advanced Identity Cloud tenant or PingAM server, and controlling how the module behaves.

Starting an authentication journey in React Native

Every journey starts with the first step! Find out how to tell the Journey module to start an authentication journey.

An authentication journey consists of a number of authentication nodes, each is responsible for a particular task, such as obtaining credentials, or performing a risk assessment.

Learn how the Journey module navigates an authentication journey, and how to handle the callbacks the server sends in each step.

Managing sessions and tokens in React Native

Learn how to obtain a user object and session token, sign the user out, and manage OpenID Connect (OIDC) tokens, including retrieving, refreshing, and revoking them.