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

  • About to start Completion completion

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