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

Learn more
Feature flags versus remote native UI flows for mobile experiments
Engineering

Feature flags vs remote UI for mobile apps: which speeds up experiments?

Boolean feature gates vs multi-step native remote UI flows. When to graduate from LaunchDarkly or PostHog flags to a flow platform.

Engineering ships LaunchDarkly or PostHog feature flags. Growth asks to test onboarding: five screens, two branches, new copy every week. Flags toggle booleans. They do not compose multi-step native journeys. The mismatch produces either blocked experiments or fragile flag spaghetti in src/onboarding/.

Feature flags vs remote UI for mobile apps is not a winner-take-all debate. Flags excel at engineering rollouts and simple gates. Remote UI flow platforms excel at growth-owned flow iteration. This post explains both models, when each wins, and how subscription teams graduate from flags to flows without ripping out existing tooling.

Two models side by side

DimensionFeature flagsRemote UI flows
PayloadBoolean or multivariate keyFlow manifest (screens, edges, copy)
Who changes itEngineering (typically)Growth / product with guardrails
What must exist in binaryAll variant code pathsSDK renderer; content remote
Experiment unitFlag on/offFlow variant on channel
Best toolsLaunchDarkly, PostHog, FirebaseRheo
OTA characterToggle pre-shipped codePublish new graph content
Multi-step onboardingPoor fit at scaleCore fit

Both can be "remote." The difference is whether you remote-control code paths already merged or journey definitions interpreted by an SDK.

What feature flags do well

Feature flags solve engineering problems:

Use caseExample
Gradual rolloutNew editor to 5% of users
Kill switchDisable broken API client
Simple A/Bonboarding_v2 true/false
Per-tenant entitlementsEnterprise feature gate
Ops safetyTurn off payment provider

Requirements for flag-based experiments:

  1. Both variants implemented in app code.
  2. Flag wired to branch logic.
  3. Events instrumented per variant.
  4. Engineering merges and releases flag infrastructure before test starts.

For a single screen with two layouts already built, flags are fast and fine.

Where feature flags break down for growth

Growth requestFlag reality
Change screen 3 headlineNeeds code or CMS wired to flag
Reorder 6 onboarding screensNavigation refactor per variant
Branch on ATT denyMultiple compound flags
Weekly copy testsEngineering queue
Cancel flow with 4 stepsNew flag tree + release

Flags scale poorly with structural funnel change. Each new screen multiplies code paths. Non-engineers cannot safely publish.

Policy note: toggling flags that show materially different purchase flows may still need compliance review. Flags do not bypass store rules for what is in the binary.

What remote UI flows do well

Remote UI flow platforms (Rheo) ship manifests that a native SDK renders:

resolve(channel) → manifest JSON → native screens → analytics per step
Use caseRemote flow
Onboarding order and copyCanvas publish
ATT pre-prompt placementBranch nodes
Stories-style beatsNative sequence
Paywall placement in journeyIntegration node timing
Cancel / win-backLifecycle channels
A/B on flow structureExperiment on channel

Engineering integrates once. Growth publishes variants without git push. Store review applies to SDK binary updates, not daily copy changes.

Remote UI is not a replacement for all flags

Keep flags for:

  • Core app features outside journeys
  • Backend-kill switches
  • Gradual release of native modules
  • Experiments on screens that are not part of a Rheo channel

Remote UI does not replace LaunchDarkly for "use_new_sync_engine": true.

Feature flags vs remote UI: decision matrix

QuestionPrefer flagsPrefer remote UI
Single screen, two layouts already built?YesOptional
Multi-step onboarding restructure?NoYes
Growth owns copy cadence weekly?NoYes
Engineering-only rollout?YesOverkill
Permission branches?FragileYes
Paywall timing in funnel?NoYes
Paywall UI / pricing layout?NoNo (billing tool)

Paywall reminder: Rheo does not manage paywall UI. Remote UI controls journey steps and when users reach a billing integration node. RevenueCat or your paywall vendor owns purchase surface experiments.

Mature mobile teams run both:

ConcernTool
Core feature rolloutLaunchDarkly / PostHog flags
Onboarding and lifecycle journeysRheo remote UI
Paywall templateRevenueCat Experiments
Product analyticsPostHog / Amplitude

Anti-pattern: encoding entire onboarding as twelve flags (onboarding_step_3_variant_b). Pattern: one Rheo channel experiment with step analytics; flags only at channel entry if needed (use_rheo_onboarding).

Migration: graduating from flags to flows

Stage 1: Flags only

  • Two onboarding versions in code.
  • onboarding_experiment flag splits traffic.
  • Works for first A/B, painful for iteration.

Stage 2: Hybrid

  • Rheo SDK integrated.
  • Flag chooses Rheo channel vs legacy hardcoded path.
  • Migrate users to Rheo as parity proven.

Stage 3: Flow-native

  • All onboarding via Rheo channels.
  • Flags for non-journey features only.
  • Experiments live in Rheo dashboard.
StageGrowth velocityEngineering load
1LowHigh per test
2MediumIntegration sprint once
3HighSDK upgrades quarterly

PostHog and LaunchDarkly users specifically

PostHog feature flags: strong for product analytics plus simple gates. Pair with Rheo by forwarding Rheo step events into PostHog with experiment_id. Funnels stay in PostHog; journey publishes stay in Rheo.

LaunchDarkly: strong for enterprise rollout and multivariate flags at scale. Use for app features. Do not force onboarding structure through LD without engineering per variant.

ToolKeep forAdd Rheo for
PostHogRetention, funnels, flags on featuresMulti-step OTA journeys
LaunchDarklyRollouts, kill switchesOnboarding canvas

Remote UI vs OTA code updates (third option)

Teams sometimes conflate remote UI with EAS Update or CodePush. Different again:

Feature flagsOTA code (EAS)Remote UI flows
ShipsToggleJS bundleManifest
OwnerEngEngGrowth
Onboarding restructureCode flagsStill code changeCanvas

See Remote UI flows vs OTA code updates for the full comparison.

Instrumentation alignment

Whichever model you use, experiments fail without consistent events:

PropertyFlagsRemote UI
experiment_idFlag key + variantRheo experiment id
variant_nameFlag valueFlow variant label
step_idManual per screenNative per step
Billing outcomesRC eventsIntegration node

Align naming in a tracking plan before running parallel systems.

Security and ownership boundaries

FlagsRemote UI
Who can publishUsually eng-onlyGrowth with RBAC
Audit trailLD / PostHog logsRheo publish history
PII in payloadAvoid in flag rulesAvoid in traits
RollbackToggle offRevert publish version

Growth-owned publish demands staging channels and approval workflow. Engineering sets guardrails once.

Summary

Feature flags vs remote UI for mobile apps: flags speed up engineering rollouts and simple gates when variants already live in code. Remote UI speeds up growth-led onboarding, permission branches, paywall placement, and lifecycle flows when structure and copy change often.

Use flags for features. Use remote UI for journeys. Keep paywall UI in your billing integration. Most subscription teams need both, not either/or.

Start for free and graduate your next onboarding experiment from flags to native remote flows.