Rheo CLI is live. Let your agents be your growth engine.

Learn more
React Native onboarding A/B test workflow without App Store release
Engineering

How to A/B test onboarding in React Native without App Store releases

Step-by-step guide for RN teams to run onboarding experiments OTA without waiting on App Store review.

React Native teams know the drill. You have a hypothesis about onboarding: one fewer screen, a different value prop order, or a branch when ATT is denied. Engineering estimates a sprint. QA needs a build. Apple review adds days. By the time variant B is live, your paid campaign already spent against variant A.

React Native onboarding experiments should not require a store release for every copy change. The pattern that works for mature subscription apps is simple: integrate a remote flow SDK once, run experiments on a dashboard, and let the native renderer ship UI over the air. Your binary still goes through review when the SDK version changes. Day-to-day flow tests do not.

This guide walks through the architecture, setup, experiment design, and metrics for RN and Expo teams who want onboarding A/B tests at growth speed. For deeper integration detail, see Remote onboarding flows in React Native and Expo.

Why hardcoded onboarding blocks experiments

Most RN onboarding lives in a stack navigator under src/onboarding/. Screens are React components. Copy lives in JSON or i18n files. Feature flags might toggle between two hardcoded paths.

Experiment ideaHardcoded cost
Swap screen 2 and 3Navigation refactor + release
Test 4-screen vs 7-screen flowTwo code paths + flags
Branch on permission denialConditional logic in code
Localize new headlinei18n PR + release
Change paywall timing in journeyTouch nav + billing wiring

Growth files tickets. Engineering prioritizes bugs. Experiments queue. Distribution keeps sending installs into a funnel you cannot tune at acquisition speed.

Remote flow experimentation removes the release bottleneck for journey structure, copy, branches, and placement of billing integration points. Rheo renders native UI from a published manifest. Product publishes variants without git push.

Architecture: one integration, many experiments

At a high level:

App launch → Rheo SDK resolve(channel, traits) → flow manifest
→ Native renderer → user actions → step analytics → dashboard experiments

Your React Native app owns:

  • SDK initialization and user context (id, locale, plan tier)
  • Channel entry (first launch, post-signup, re-engagement)
  • Purchase callbacks wired to RevenueCat or your billing layer
  • Deep links into specific channels when needed

Rheo owns:

  • Screen layout, copy, images, and order
  • Branches (single choice, multiple choice, text input)
  • Experiment assignment and targeting
  • Publish pipeline and version history

Your billing integration owns:

  • Paywall UI, offerings, and purchase sheets
  • Price presentation and package layout
  • Entitlement state after purchase

Rheo orchestrates when users reach a paywall step inside the journey. RevenueCat, Superwall, or your custom paywall component still renders the paywall surface. Rheo records step-level funnel impact up to and through that integration node.

This separation matters for RN teams: you are not replacing your navigation tree with a WebView. The SDK interprets manifest JSON into native React Native components.

Expo vs bare React Native

TopicExpo (dev build)Bare RN
SDK installexpo install + config pluginAutolinking
Flow experiments OTARheo publishSame
App JS OTAEAS Update (separate)CodePush / EAS / custom
Store reviewRequired for SDK binary bumpsSame

Practical note: EAS Update ships JavaScript for your app components. Rheo ships flow definitions the SDK renders. Many teams use both: engineering ships features via EAS; growth ships onboarding experiments via Rheo.

Expo Go alone typically cannot render production Rheo flows without the native SDK in your build. Plan for expo prebuild and EAS Build as with any native dependency.

Step-by-step: your first onboarding A/B test

1. Stabilize baseline integration

Before experimenting, confirm:

CheckWhy
SDK resolves on cold startNo silent failures on first open
Billing callback fires on purchaseRevenue truth matches funnel
Step events appear in dashboardAnalytics wired before variants
Staging channel worksQA can preview unpublished flows

2. Recreate current onboarding on canvas

Mirror your existing flow screen by screen. Run shadow traffic or a phased rollout until step completion rates match baseline. Deprecate hardcoded screens once parity is verified.

Keep one emergency fallback screen in code only if compliance requires offline-first launch. Most teams rely on SDK caching for brief network gaps.

3. Define one hypothesis per experiment

Good first tests for RN onboarding:

HypothesisVariantsPrimary metric
Shorter path converts better4 screens vs 7 screensTrial start or activation
Value props before signupBenefits first vs account firstStep 3 completion
Permission timingATT before vs after valueATT grant rate
Paywall placementEnd of onboarding vs after activationReach paywall step

Test one structural change per experiment when traffic is limited. Bold differences beat button color tweaks on small samples.

4. Configure traffic and mutual exclusion

Standard split: 50/50 for two variants. Do not overlap experiments on the same channel unless you have a factorial design and enough installs.

Weekly installsSuggested approach
Under 1kTwo variants max, bold changes, 2-4 week runtime
1k-10k50/50 or sequential rounds
10k+Multi-variant with power analysis

5. Publish and resist peeking

Publish from the dashboard. Users on next resolve see assigned variant. Avoid daily significance checks. Pre-register runtime (often 2-4 weeks for small teams) and primary metric.

6. Read step funnels, not only outcomes

RN onboarding drop-off is rarely "the paywall failed." It is screen 4 with 40% exit. Rheo step analytics show where each variant loses users before they reach billing.

Metric layerWhat it tells you
Step completionWhich screen leaks
Branch ratesPermission or choice paths
Time on stepConfusion vs engagement
Paywall step reachJourney quality before billing UI
Purchase completed (via integration)Revenue outcome

Wiring RevenueCat or other billing in the flow

Rheo does not manage paywall UI or pricing. Insert a billing integration node where the journey should present purchase:

  1. User completes onboarding beats in Rheo native screens.
  2. Flow reaches RevenueCat (or Superwall, etc.) node.
  3. External SDK presents paywall UI.
  4. Outcomes normalize: purchase_completed, restore_completed, dismissed, failed.
  5. Flow edges route users to activation, retry, or soft exit.

Experiments can change when users hit that node and what they saw before it. Paywall template tests stay in RevenueCat Experiments or your paywall vendor.

Common mistakes

MistakeFix
Changing onboarding and paywall UI in one uncontrolled testSplit journey test (Rheo) from paywall UI test (billing tool)
No baseline funnel dataRun control-only until step rates are stable
Peeking at results dailyPre-register end date
Passing PII in traitsUse cohort ids, plan tier, locale only
Expecting Expo Go for production QAUse dev build with native SDK

EAS Update and Rheo together

Teams often ask whether EAS Update replaces Rheo or vice versa. Neither.

ToolShipsOwner
EAS UpdateApp JavaScript bundleEngineering
RheoFlow manifest (onboarding graph)Growth / product

Use EAS for bugfixes and core app features. Use Rheo for onboarding experiments, permission branches, and lifecycle flows. Both are "over the air" with different payloads and policies.

When you still need an App Store release

Remote experiments do not eliminate store review entirely:

  • New Rheo SDK version with renderer changes
  • New native module dependencies
  • Major app architecture changes outside flow scope

Plan SDK upgrades on a quarterly cadence. Run flow experiments between those releases.

Summary

React Native onboarding experiments without App Store releases require separating binary cadence from funnel cadence:

  • Integrate Rheo SDK once in your RN or Expo dev build
  • Recreate onboarding on a visual canvas with native rendering
  • Run A/B tests on structure, copy, branches, and paywall placement
  • Keep paywall UI and billing in RevenueCat or your chosen integration
  • Measure step-level funnels before blaming the paywall

Start for free. Wire the SDK once, then run your next onboarding experiment without waiting on review.