Onboarding
Tonic internal

Config

Onboarding-affecting feature flags, joined with the steps they gate. These flags currently live in FeatureFlags.swift — local resolution via launch argument, UserDefaults, or environment variable, in that order. There is no remote flip from this page today.

trackingStyleQuestion

GLP_FEATURE_TRACKING_STYLE_QUESTION
default: false

Gates the 'How do you want to track?' step and its affirmation.

When off, the trackingStyle and trackingAffirmation steps are removed from both cohort lanes. Turn on to A/B-test having users self-declare a tracking preference before plan reveal.

Affects steps

  • About to start Tracking Style · Tracking Affirmation trackingStyle, trackingAffirmation
  • Already on GLP-1 Tracking Style · Tracking Affirmation trackingStyle, trackingAffirmation

completionScreenForExplorers

GLP_FEATURE_COMPLETION_SCREEN_FOR_EXPLORERS
default: false

Restores the trophy 'completion' screen for the about-to-start cohort.

Off by default: explorers end on the planPreview macro reveal and the flow finalises silently. The trophy felt underwhelming as the closing beat for users who haven't started a medication yet. Flip on for screenshots, QA, or to A/B the value of the explicit win moment.

Affects steps

Declared in FeatureFlags.swift but not currently referenced by any node in onboardingFlow.ts. Either the flow graph is stale or this flag now lives outside onboarding — remove from config.ts if the latter.

How resolution works

FeatureFlags.resolve reads each flag from the first source that has a value, in this order:

  1. Launch argument-GLP_FEATURE_TRACKING_STYLE_QUESTION 1 (or --KEY=1). Set in the Xcode scheme's Arguments tab. Easiest knob for one-off QA runs.
  2. UserDefaults — same key, bool or string. Survives relaunches. Typically used by the in-app developer menu, not edited by hand.
  3. Environment variable — same key. Used in CI / TestFlight builds via build-phase script.
  4. Default — whatever's hard-coded in FeatureFlags.swift's resolve call, shown above.

Accepted truthy values: 1, true, yes, on, enabled. Falsy: 0, false, no, off, disabled. Anything else falls through to the next source.

Notes