Core Concepts
The fundamental building blocks of Recus.
Apps
An App in Recus maps to one of your React Native applications.
Each App has:
- A unique SDK key used to authenticate the SDK
- Multiple onboarding flows
- Its own user database — users are identified by the
userIdyou pass from your app - Its own analytics — MAU counts, flow completion rates, field drop-off data
When to create multiple Apps: Create a separate Recus App for each distinct React Native application you maintain. If you have a user-facing app and an admin app — those are two separate Apps with two separate SDK keys.
Don't split by environment
Flows
A Flow is a sequence of screens a user moves through during onboarding.
Each flow has:
- A unique ID used internally
- Multiple screens in a defined order
- A mandatory setting — if true, users cannot bypass it
- A version number — increments every time you publish changes
Multiple flows per App: An App can have many flows.
| Flow | When it triggers |
|---|---|
| User Onboarding | Every new user on first login |
| KYC Verification | Users who need identity verification |
| Re-onboarding | Returning users after a major product update |
| Feature Introduction | When a user first accesses a new feature |
The SDK renders the flow marked as active and mandatory automatically. You control which flow is active from the dashboard.
Screens
A Screen is one step in a flow. Each screen has:
- A background — solid color, gradient, or image
- Elements — headings, body text, images, inputs
- A button — continue or skip
- An animation — how it enters and exits
Screens are rendered natively by the SDK. They appear as real React Native views — not WebViews, not overlays. They feel exactly like screens you built yourself.
The User Object
<RecusAppProvider
sdkKey="pk_live_xxx"
user={{
userId: "usr_123", // required — your user's ID
email: "jane@example.com", // optional
name: "Jane Smith", // optional
plan: "pro", // optional — any extra properties
}}
>Important rules:
userIdis the only required field- Pass
undefinedwhen the user is not logged in — Recus stays dormant - Use your own user IDs — Recus stores data against your IDs so you can join it with your own database without any mapping
- Two different Apps can both have a user with ID
usr_123— they are completely isolated
What Recus stores
userId. You can retrieve this data via the API or receive it via webhooks.SDK Keys
Each App has two keys:
Publishable key (pk_live_...)
Safe to include in your React Native app. Used by the SDK to fetch flow schemas and submit user data. Can only access data for your specific App — not other Apps on your account.
Secret key (sk_live_...)
Never include this in your React Native app. Use it on your backend server to access the full Recus API — retrieve user data, manage flows programmatically, verify webhooks.
Key rotation