Onset - App Store Submission Guide¶
App Store Connect Setup¶
1.2.25 Metadata (Current)¶
Version: 1.2.25 · Build: 16
Archive from: main @ 32312fd (Gates 1-5: Stack Cost, retention loops, clinic dose adherence share)
Promotional Text (1.2.25)¶
App Store Connect promotional text is editable without a new app version (170-character max).
Recommended (144 chars):
See what your stack costs each month. Track taken and missed value, share a monthly receipt, and keep clinic sharing limited to what you choose.
Alternate (142 chars):
Organize supplements by time of day. Add bottle prices for Stack Cost, scan labels, and share adherence with your clinic only when you opt in.
Full Description (1.2.25)¶
Unchanged from 1.2.22 / 1.2.24. Keep the existing App Information → Description in App Store Connect unless you want to add one Stack Cost sentence under organization features:
Optional bottle prices show Stack Cost: monthly spend, taken value, and missed value for the supplements you track. You enter prices and decide how to organize your routine.
What's New (1.2.25)¶
Paste into App Store Connect → Version → What's New (user-facing only; no gate or migration jargon):
Stack Cost and clearer tracking for your routine.
• Add bottle prices to see monthly stack cost, taken value, and missed value.
• Savings view with month, all-time recovered, and year projection.
• Weekly Stack Report notification and one streak freeze per week.
• Shareable monthly Stack Value receipt card.
• Soft free access remains: limited items and scans, with Pro for unlimited.
• Clinic sharing can include dose totals and a silent period signal when you opt in.
App Review Notes (1.2.25)¶
Paste into App Store Connect → App Review Information → Notes:
Version 1.2.25 · Build 16 - submission notes
SUMMARY
This release adds Stack Cost (money organizer for priced bottles), retention helpers tied to that tracking, and richer optional clinic adherence share fields. Sign in with Apple and core wellness organization are unchanged. Production API remains onset-api.theonset.app. Stack Experiments stay OFF in App Store Release builds (available only in Debug/Staging builds until counsel clears copy).
Version 1.2.25 changes from 1.2.24
USER-FACING
• Today / Protocol: optional bottle price fields; Stack Cost card when items are priced (empty state asks the user to add prices).
• More → Savings: month taken/missed, all-time recovered, year projection. Descriptive money math only. No health claims.
• Weekly local notification: Weekly Stack Report (cost + taken + missed + streak).
• One streak freeze per week.
• Shareable monthly Stack Value receipt card (same share-card pattern as protocol share).
• Soft free path unchanged in product policy: Continue with free access (item and scan limits) plus clinic continue for assigned protocol items. Pro unlocks unlimited items/scans and related Pro surfaces.
• Practitioner / clinic share (when user opts in): shared_adherence payloads can include dose-weighted percent and silent flags (no check-ins for 7+ days). Clinic portal surfaces these; the iOS app only uploads what the user enables.
FEATURE FLAGS (App Store / Release)
• stackExperiments = false (counsel-gated; ON only in Debug/Staging)
• adaptiveProtocol = false
• aiInsights = false
• advisoryCopy = false
• checkInFeedback = false
• labInterpretation = false
• protocolScoring = false
• lifeEventModifiers = false
• protocolEngineV2 = false
Product positioning (Guideline 1.4.1 - unchanged)
Onset is a wellness organization and information tool. It does not diagnose, treat, or recommend. Stack Cost is money tracking for prices the user enters. The user organizes routines and chooses what to share.
Reviewer paths
Stack Cost:
1. Protocol → edit an item → set bottle price and servings per container → save.
2. Today: Stack Cost card should show monthly cost, taken, and missed when prices exist.
3. More → Savings: confirm month and all-time figures update after check-offs.
Retention:
1. After priced use, wait for Sunday Weekly Stack Report (or trigger via debug if available). Confirm copy is cost/taken/missed/streak only.
2. Share monthly Stack Value card from Savings / share entry when available.
Clinic share (optional):
1. Settings → Care team / My Practitioner → enable adherence share → Sync Now.
2. Confirm no advice language. Share is organizer data only.
Last1.id / LastVet / Fitness / clinic paywall bypass: unchanged from 1.2.24 notes below (carry-forward).
Demo account: not required.
Privacy: https://theonset.app/privacy.html
Terms: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
Support: https://theonset.app/support.html
App Store Connect checklist (1.2.25 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.25 |
| Build | 16 |
| Scheme | Onset / Release |
| Production API | onset-api.theonset.app |
| Last1 ID issuer | https://auth.last1.id |
| Promotional text | Recommended (see above) |
| What's New | 1.2.25 block (see above) |
| Review Notes | 1.2.25 block (see above) |
| Archive script | bash scripts/onset/archive-upload-production-1.2.25.sh |
Mac pull + archive (local version conflicts)¶
If git pull fails on project.pbxproj / Info.plist, local version edits are stale. Prefer remote main (1.2.25 / 16):
cd /path/to/onset-ios
git fetch origin main
git stash push -u -m "mac-local-before-1.2.25" -- Onset.xcodeproj/project.pbxproj Supporting/Info.plist
git pull --ff-only origin main
python3 scripts/ios-version.py show # expect 1.2.25 / 16
bash scripts/onset/archive-upload-production-1.2.25.sh
If you do not need the stashed files: git checkout -- Onset.xcodeproj/project.pbxproj Supporting/Info.plist then git pull --ff-only origin main.
1.2.24 Metadata¶
Version: 1.2.24 · Build: 15
Archive from: main @ merge 8b1ab02 (Last1 ID issuer cutover to auth.last1.id + LastVet sync polish)
Promotional Text (1.2.24)¶
App Store Connect promotional text is editable without a new app version (170-character max).
Recommended (147 chars):
Organize supplements and wellness routines by time of day. Connect with your clinic, scan bottles, track check-ins, and share only what you choose.
Alternate, Last1.id forward (142 chars):
Daily supplement and wellness organizer with clinic import, bottle scanning, and optional Last1.id linking. You choose what to share and when.
Full Description (1.2.24)¶
Unchanged from 1.2.22. Keep the existing App Information → Description in App Store Connect.
What's New (1.2.24)¶
Paste into App Store Connect → Version → What's New (user-facing only; no issuer or migration jargon):
More reliable Last1.id linking and LastVet sharing.
• Clearer setup steps for linking Last1.id before LastVet Connect.
• Disconnect Last1.id now stays disconnected.
• Clearer Sign in with Apple error messages when something goes wrong.
• LastVet adherence sync shows real supplement names instead of raw IDs.
• Stability improvements for sign-in, Settings, and clinic sync.
App Review Notes (1.2.24)¶
Paste into App Store Connect → App Review Information → Notes:
Version 1.2.24 · Build 15 - submission notes
SUMMARY
This release improves optional Last1.id account linking and LastVet sharing. Sign in with Apple and core wellness features are unchanged. Production API remains onset-api.theonset.app.
Version 1.2.24 changes from 1.2.22
USER-FACING
• Settings → Last1.id: OAuth browser sheet now uses the auth.last1.id issuer (marketing host last1.id no longer serves OIDC). Same Sign in with Last1 ID flow for the user.
• Settings → Last1.id / Integrations education: copy clarifies that Onset must link the same Last1.id account before LastVet Connect can match the veteran record.
• Settings → Last1.id → Disconnect: unlink now persists (previously a stale refresh could re-show as linked).
• Sign in with Apple: clearer on-device error when the auth server returns a failure (same SIWA entitlement and flow).
• LastVet Sync: adherence items resolve clinic supplement names instead of falling back to raw clinic UUID-style IDs after re-import.
INFRASTRUCTURE (no intentional core UX change)
• Last1 ID OIDC issuer wired via xcconfig/Info.plist to https://auth.last1.id (Production and Staging).
• Edge last1_oauth / last1-unlink defaults aligned with the new issuer.
• Embedded Supabase anon key rotated after a prior JWT incident (same project; keys only).
• RevenueCat SDK bump for Xcode toolchain compatibility (no IAP product changes).
Carry-forward from 1.2.22 / 1.2.21 (unchanged product behavior)
LASTVET INTEGRATION
• Settings → Connected health records → Connect LastVet (OAuth via ASWebAuthenticationSession; production: api.last.vet).
• Prerequisite: link the same Last1.id under Settings → Last1.id before Connect so Onset can match the veteran record.
• User selects share categories before sync; manual Sync now; outbound organizer data only.
FITNESS ROUTINES
• More → Fitness Routine: weekly plan, templates, clinic-assigned routines.
PRACTITIONER / CLINIC
• Paywall clinic code path: valid connection code + Sign in with Apple → Continue free with my practitioner protocol.
• Care team hub: practitioner connection code vs clinic org share code.
Feature-flag state (FDA-gated surfaces remain OFF)
• adaptiveProtocol = false
• aiInsights = false
• advisoryCopy = false
• checkInFeedback = false
• labInterpretation = false
• protocolScoring = false
• lifeEventModifiers = false
• protocolEngineV2 = false (Release/App Store)
Product positioning (Guideline 1.4.1 - unchanged)
Onset is a wellness organization and information tool. It does not diagnose, treat, or recommend. The user organizes routines and chooses what to share.
Reviewer paths
Last1.id (optional unless testing LastVet):
1. Settings → Last1.id → Continue with Last1 ID.
2. Complete browser OAuth at auth.last1.id → Allow.
3. Disconnect should clear the linked state immediately and keep it cleared after leaving the screen.
LastVet (optional - requires veteran LastVet account + same Last1.id):
1. In LastVet app: Profile → Link Last1.id.
2. In Onset: Settings → Last1.id → link the same account.
3. Settings → Connected health records → Connect LastVet → complete OAuth at api.last.vet.
4. Toggle share categories → Sync now. Adherence rows should show human-readable supplement names when clinic items are present.
Clinic paywall bypass:
1. Onboarding → hard paywall → Referred by your clinic? → valid connection code → Sign in with Apple → Continue free with my practitioner protocol.
Fitness routine:
1. More → Fitness Routine → Check for clinic routine or import template.
Demo account: not required.
Privacy: https://theonset.app/privacy.html
Terms: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
Support: https://theonset.app/support.html
App Store Connect checklist (1.2.24 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.24 |
| Build | 15 |
| Scheme | Onset / Release |
| Production API | onset-api.theonset.app |
| Last1 ID issuer | https://auth.last1.id |
| Promotional text | Recommended (see above) |
| What's New | 1.2.24 block (see above) |
| Review Notes | 1.2.24 block (see above) |
1.2.22 Metadata¶
Version: 1.2.22 · Build: 8
Archive from: main @ merge a1975dc (T5-1 Production flip to onset-api.theonset.app)
Promotional Text (1.2.22)¶
App Store Connect promotional text is editable without a new app version (170-character max).
Recommended (169 chars):
Organize supplements and wellness routines by time of day. Connect with your clinic, scan bottles, track check-ins, and share only what you choose.
Alternate, Last1.id forward (168 chars):
Daily supplement and wellness organizer with clinic import, bottle scanning, and optional Last1.id linking. You choose what to share and when.
Full Description (1.2.22)¶
Paste into App Store Connect → App Information → Description (unchanged from 1.2.19/1.2.21; still accurate):
Onset helps you organize and follow daily wellness routines in one place. Scan your supplement bottles, build a timed daily plan, log quick check-ins, and track what you take - on your schedule, the way you decide.
KEY FEATURES:
- Daily routine organizer - schedule supplements and wellness habits by time of day with timed reminders you set
- Practitioner protocols - connect with your clinic using a personal connection code to import assigned supplement routines and optionally share adherence, labs, and check-ins you choose to disclose
- Last1.id link (optional) - connect a portable identity in Settings to simplify sign-in across Last1 apps when you choose to link accounts
- Fitness routine organizer - arrange a weekly exercise plan by day and movement, import templates, or accept clinic-assigned routines alongside your supplement schedule
- Bottle scanner - point your camera at a supplement label to identify the product and add it to your routine as an editable draft
- Inventory tracking - track remaining supply for each supplement and receive on-device low-stock reminders
- Lab result import - import lab reports and view values alongside your laboratory's reference ranges (display only; no interpretation)
- Supplement reference library - view published information from NIH and CDC sources for supplements in your routine, including common dose ranges, timing notes, and known nutrient interactions, all with source citations
- Quick check-ins - log sleep, energy, mood, and other wellness metrics on simple scales
- Mode selection - choose Recovery, Performance, or Fertility (male) or Balance, Cycle Awareness, or Fertility (female) to frame your routine
- Protocol Lab (Pro) - an interactive educational simulation where you create virtual characters, assign supplement protocols, and visualize how different combinations interact through animated gameplay
- Cycle awareness - female users can track cycle phases and view how routines relate to their monthly rhythm
- Trend display - view your self-reported check-in data over time as simple charts
- Performance prep timer - countdown and checklist for pre-activity preparation
- Completion tracking - see your daily adherence and streaks
- Apple Watch companion and home screen widgets - view today's routine at a glance
Onboarding includes a biological-sex profile so mode options and routine framing match app settings. Users can update preferences anytime in Settings.
Clinic connection: If your practitioner uses Onset Clinic, enter your personal connection code during onboarding or from the subscription screen to continue with your assigned protocol at no charge. Supplement and fitness imports appear in your library for you to organize and mark active.
Onset is a wellness organization tool. It displays published reference information and user-entered data. It does not provide medical advice, diagnose conditions, or recommend treatments. Always consult a healthcare provider for medical decisions.
SUBSCRIPTION:
Onset Pro unlocks the bottle scanner, inventory tracking, Protocol Lab, additional modes, performance prep timer, routine reminders, and advanced organization tools. Pricing and terms available at checkout. Practitioner-assigned protocol items remain available without Pro.
Privacy policy: https://theonset.app/privacy
Terms of use: https://theonset.app/terms
What's New (1.2.22)¶
Paste into App Store Connect → Version → What's New (user-facing only; no backend migration language):
Polish and stability for Settings and Last1.id.
• Updated Last1 ID link button with clearer branding in Settings.
• Settings screen stability and layout improvements.
• Reliability improvements for sign-in, protocol sharing, and sync.
App Review Notes (1.2.22)¶
Paste into App Store Connect → App Review Information → Notes:
Version 1.2.22 · Build 8 - submission notes
SUMMARY
This release is primarily infrastructure and stability. User-visible changes are small (Last1.id button polish, Settings improvements). Production now uses our sovereign backend at onset-api.theonset.app. Account data and behavior are unchanged for existing users.
Version 1.2.22 changes from 1.2.21
USER-FACING
• Settings → Last1.id: updated “Continue with Last1 ID” button branding (Last1 mark).
• Settings screen stability (ViewBuilder refactor; fixes intermittent compile/layout issues on older devices).
• Protocol share and migration stability (MainActor isolation fixes).
INFRASTRUCTURE (no intentional UX change)
• Production API migration from hosted Supabase to sovereign infrastructure (onset-api.theonset.app). Data continuity preserved; same app features and accounts.
• Sign in with Apple: server-side Apple Services key rotation only (RV26UG9967 → TU6S85XABQ). No app-level SIWA entitlement or client change; same Sign in with Apple flow for users.
Carry-forward from 1.2.21 / 1.2.20 (unchanged product behavior)
LASTVET INTEGRATION
• Settings → Connected health records → Connect LastVet (OAuth via ASWebAuthenticationSession; production: api.last.vet).
• User selects share categories before sync; manual Sync now; outbound organizer data only.
FITNESS ROUTINES
• More → Fitness Routine: weekly plan, templates, clinic-assigned routines.
PRACTITIONER / CLINIC
• Paywall clinic code path: valid connection code + Sign in with Apple → Continue free with my practitioner protocol.
• Care team hub: practitioner connection code vs clinic org share code.
Feature-flag state (FDA-gated surfaces remain OFF)
• adaptiveProtocol = false
• aiInsights = false
• advisoryCopy = false
• checkInFeedback = false
• labInterpretation = false
• protocolScoring = false
• lifeEventModifiers = false
• protocolEngineV2 = false (Release/App Store)
Product positioning (Guideline 1.4.1 - unchanged)
Onset is a wellness organization and information tool. It does not diagnose, treat, or recommend. The user organizes routines and chooses what to share.
Reviewer paths
LastVet (optional - requires veteran LastVet account):
1. Settings → link Last1.id if prompted.
2. Settings → Connected health records → Connect LastVet → complete OAuth.
3. Toggle share categories → Sync now.
Clinic paywall bypass:
1. Onboarding → hard paywall → Referred by your clinic? → valid connection code → Sign in with Apple → Continue free with my practitioner protocol.
Last1.id (optional):
1. Settings → Last1.id → Continue with Last1 ID.
Fitness routine:
1. More → Fitness Routine → Check for clinic routine or import template.
Demo account: not required.
Privacy: https://theonset.app/privacy.html
Terms: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
Support: https://theonset.app/support.html
App Store Connect checklist (1.2.22 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.22 |
| Build | 8 |
| Scheme | Onset / Release |
| Production API | onset-api.theonset.app |
1.2.21 Metadata¶
Version: 1.2.21 · Build: 6
What's New (1.2.21)¶
Paste into App Store Connect → Version → What's New:
Bug fixes for Daily Journal and Labs charts.
• Daily Journal “View your summary” now opens Labs as expected.
• Mood & activity chart aligns journal mood with movement data across consecutive days.
• Stability improvements across sync and reminders.
App Store Connect checklist (1.2.21 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.21 |
| Build | 6 |
1.2.20 Metadata¶
Version: 1.2.20 · Build: 5
What's New (1.2.20)¶
Paste into App Store Connect → Version → What's New:
LastVet connection, fitness routines, and clearer clinic sync.
• Connect Onset to LastVet to share supplement, routine, and fitness organization data you choose to disclose.
• Accept clinic-assigned fitness routines alongside supplement protocols.
• Clearer sync status when sharing with LastVet or your clinic.
• Stability improvements across practitioner connection, protocol sync, and reminders.
App Store Connect checklist (1.2.20 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.20 |
| Build | 5 |
1.2.19 Metadata¶
Version: 1.2.19 · Build: 1
Promotional Text (1.2.19)¶
App Store Connect promotional text is editable without a new app version (170-character max). Pick one and paste.
Option A - clinic-led (147 chars) - recommended:
Clinic connection on the paywall. Import practitioner supplement and fitness routines. Organize your daily plan with reminders, labs, and tracking.
Option B - connection-led (146 chars):
Connect with your clinic, import assigned routines, and organize supplements and fitness in one timed daily plan. Now with paywall clinic sign-in.
Option C - organizer-led (130 chars):
Scan bottles, track inventory, import labs, and follow practitioner-assigned routines - organized by time of day on your schedule.
Full Description (1.2.19)¶
Paste into App Store Connect → App Information → Description (4,000-character max; this block is 3,226 characters):
Onset helps you organize and follow daily wellness routines in one place. Scan your supplement bottles, build a timed daily plan, log quick check-ins, and track what you take - on your schedule, the way you decide.
KEY FEATURES:
- Daily routine organizer - schedule supplements and wellness habits by time of day with timed reminders you set
- Practitioner protocols - connect with your clinic using a personal connection code to import assigned supplement routines and optionally share adherence, labs, and check-ins you choose to disclose
- Fitness routine organizer - arrange a weekly exercise plan by day and movement, import templates, or accept clinic-assigned routines alongside your supplement schedule
- Bottle scanner - point your camera at a supplement label to identify the product and add it to your routine as an editable draft
- Inventory tracking - track remaining supply for each supplement and receive on-device low-stock reminders
- Lab result import - import lab reports and view values alongside your laboratory's reference ranges (display only; no interpretation)
- Supplement reference library - view published information from NIH and CDC sources for supplements in your routine, including common dose ranges, timing notes, and known nutrient interactions, all with source citations
- Quick check-ins - log sleep, energy, mood, and other wellness metrics on simple scales
- Mode selection - choose Recovery, Performance, or Fertility (male) or Balance, Cycle Awareness, or Fertility (female) to frame your routine
- Protocol Lab (Pro) - an interactive educational simulation where you create virtual characters, assign supplement protocols, and visualize how different combinations interact through animated gameplay
- Cycle awareness - female users can track cycle phases and view how routines relate to their monthly rhythm
- Trend display - view your self-reported check-in data over time as simple charts
- Performance prep timer - countdown and checklist for pre-activity preparation
- Completion tracking - see your daily adherence and streaks
- Apple Watch companion and home screen widgets - view today's routine at a glance
Onboarding includes a biological-sex profile so mode options and routine framing match app settings. Users can update preferences anytime in Settings.
Clinic connection: If your practitioner uses Onset Clinic, enter your personal connection code during onboarding or from the subscription screen to continue with your assigned protocol at no charge. Supplement and fitness imports appear in your library for you to organize and mark active.
Onset is a wellness organization tool. It displays published reference information and user-entered data. It does not provide medical advice, diagnose conditions, or recommend treatments. Always consult a healthcare provider for medical decisions.
SUBSCRIPTION:
Onset Pro unlocks the bottle scanner, inventory tracking, Protocol Lab, additional modes, performance prep timer, routine reminders, and advanced organization tools. Pricing and terms available at checkout. Practitioner-assigned protocol items remain available without Pro.
Privacy policy: https://theonset.app/privacy
Terms of use: https://theonset.app/terms
Compliance notes (1.2.19 vs prior description):
- Added practitioner protocol import and optional clinic data sharing (user-controlled toggles; no medical advice framing).
- Added fitness routine organizer as neutral weekly planning (no coaching, scoring, or health claims).
- Added clinic connection paragraph clarifying free practitioner-assigned items vs Pro-gated tools.
- No "advice", "recommend", "optimize", "personalized", "treat", "cure", "prevent", "improve health", "conflict", or "warning" language.
What's New (1.2.19)¶
Paste into App Store Connect → Version → What's New:
Clinic connection, clearer routines, and a calmer daily flow.
• Referred by your clinic? Enter your connection code on the paywall, sign in with Apple, and continue with your practitioner protocol at no charge.
• Import practitioner supplement routines from Onset Clinic - including the latest clinic protocol format.
• Fitness routine organizer - build a weekly plan by day, import templates, or accept clinic-assigned routines on Today.
• One tap to your care team - jump from Today into My Practitioner; Care team separates practitioner link vs clinic share codes.
• Your routine, your reset - clear your protocol and start fresh; starter templates show up on Today right away.
• Smoother sync - clearer messages when sharing adherence with your clinic; labs can still sync when no items are active yet.
• Stability improvements across practitioner connection, clinic sharing, paywall restore, and reminders.
Alternate (shorter):
Connect with your clinic from the paywall. Import practitioner supplement and fitness routines. Clearer care-team sharing, faster paths to My Practitioner, and polish throughout protocol sync and reminders.
App Review Notes (1.2.19)¶
Paste into App Store Connect → App Review Information → Notes (plain text, under 4,000 characters; this block is 3,467 characters):
Version 1.2.19 changes from 1.2.18
PRACTITIONER / CLINIC (new or updated)
- Onboarding paywall: clinic-referred users who skipped earlier practitioner setup can enter a connection code and Sign in with Apple on the hard paywall, then tap Continue free with my practitioner protocol. Hard paywall remains for all other users (no dismiss / no skip).
- Practitioner protocol import: clinic dashboard stores assignment items in protocol-engine v2 JSON; iOS now decodes v2 and legacy flat rows when fetching assignments (fixes import decode errors from Onset Clinic).
- Care team hub (More → Care team): separates personal practitioner connection code vs clinic organization share code. Sign in with Apple required for server-side practitioner sync and clinic share.
- My Practitioner: Sync shared data now skips adherence gracefully when no protocol items are active (labs can still sync) with a clearer message instead of a hard error.
- Today: connected clinic card opens My Practitioner directly (unchanged from 1.2.18).
FITNESS ROUTINES (new in 1.2.19)
- Fitness Routine organizer (More → Fitness Routine): weekly plan by day and exercise; downloadable templates; clinic-pushed fitness assignments via fitness_v2 with accept sheet. Surfaces as a single Today line item in the user's chosen time block. Neutral organizer language only - no coaching or health claims.
CARRY-FORWARD FROM 1.2.18
- Protocol clear persists across relaunch; practitioner re-import suppressed until user imports again.
- Starter / published template imports appear on Today immediately.
- Paywall restore advances onboarding after successful Restore/purchase.
Feature-flag state (unchanged)
All FDA-gated surfaces remain OFF:
- adaptiveProtocol = false
- aiInsights = false
- advisoryCopy = false
- checkInFeedback = false
- labInterpretation = false
- protocolScoring = false
- lifeEventModifiers = false
- protocolEngineV2 = false (legacy SwiftData protocol path remains; v2 migration not enabled)
Product positioning (Guideline 1.4.1 - unchanged)
Onset remains a general wellness and habit-organization app. It does not diagnose, treat, or recommend. Routine reminders are user-configured local alerts. Practitioner and fitness imports are user-reviewed library items the patient marks active. The app displays information; the user decides.
Reviewer paths
Practitioner bypass on paywall:
1. Complete onboarding through protocol setup without entering a practitioner code.
2. On hard paywall, Referred by your clinic? → enter valid sandbox connection code → Sign in with Apple → verify → Continue free with my practitioner protocol.
Practitioner import:
1. Account already connected to sandbox practitioner with sent assignment.
2. Protocol tab → Add latest practitioner protocol → accept import → items appear in Protocol library (active if Use as active protocol).
Fitness routine (optional):
1. More → Fitness Routine → Check for clinic routine (if sandbox assignment exists) or import a public template.
Protocol clear: Protocol → Clear current protocol → force-quit → relaunch; routine stays empty until manual import.
Notifications: Settings → Notifications → Protocol reminders ON; Today shows items in a time block; local repeating block reminders fire (no APNs).
Demo account: not required.
Privacy policy: https://theonset.app/privacy.html
Terms (EULA): https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
Support URL: https://theonset.app/support.html
Screenshots (1.2.19)¶
Capture on a physical device or Simulator at native resolution, then upload to App Store Connect. Required sizes: 6.7" (iPhone 15 Pro Max / 16 Pro Max) and 6.1" (iPhone 15 Pro / 16 Pro). Use the same 8 frames for both; ASC scales as needed.
Recommended capture order (8 screenshots):
| # | Screen | How to reach | Overlay headline (optional) |
|---|---|---|---|
| 1 | Today - full routine | Pro or practitioner account with active items in Morning + Evening blocks | Your routine, organized daily |
| 2 | Today - practitioner card | Connected practitioner; clinic name visible on Today | One tap to your care team |
| 3 | Protocol tab | Several active items + Published / Practitioner sections | Build and edit your protocol library |
| 4 | Practitioner import sheet | Protocol → Add latest practitioner protocol (sandbox assignment) | Import clinic-assigned routines |
| 5 | Paywall - clinic path | Fresh onboarding → hard paywall → "Referred by your clinic?" expanded | Clinic connection on the paywall |
| 6 | Fitness Routine | More → Fitness Routine → weekly day list with exercises | Weekly fitness organizer |
| 7 | Daily Journal | More → Daily Journal with sliders filled | Log your day. Track your trends |
| 8 | Labs | More → Lab Results → imported draw with reference ranges | Import and view lab values |
Optional 9-10 (Pro differentiators):
| # | Screen | How to reach | Overlay headline |
|---|---|---|---|
| 9 | Bottle scanner | Protocol → + → Scan label (Pro) | Scan labels into your library |
| 10 | Watch or widget | Watch app Today view or home-screen medium widget | Glanceable routine on Watch and widgets |
Capture tips:
- Dark mode only (matches brand); status bar clean (full signal, reasonable time, no Low Power Mode).
- Use a sandbox practitioner account with a sent protocol so screenshots 2 and 4 show real clinic copy.
- For screenshot 5, use a valid test connection code; blur or use a dummy code in marketing if preferred.
- Avoid overlay text that implies advice ("optimized", "recommended", "better results").
- Export at 1290 × 2796 (6.7") and 1179 × 2556 (6.1") or let Xcode Simulator → File → Save Screen capture at 3×.
Fast Simulator setup: iPhone 16 Pro Max → log into sandbox Apple ID → complete onboarding with practitioner code OR use existing TestFlight build state.
App Store Connect checklist (1.2.19 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.19 |
| Build | 1 |
| Promotional text | Option A (see above) |
| Description | Full Description block above |
| Primary category | Health & Fitness |
| Secondary category | Lifestyle (optional) |
| Privacy policy URL | https://theonset.app/privacy.html |
| Terms of Use (EULA) | https://www.apple.com/legal/internet-services/itunes/dev/stdeula/ |
| Support URL | https://theonset.app/support.html |
| Marketing URL | https://theonset.app |
| Copyright | © 2026 Last 1 Enterprises LLC |
| Age rating | 4+ (no restricted content) |
| Export compliance | Uses encryption - standard HTTPS only; exempt / no custom cryptography |
| Demo account | Not required |
| Sign-in required | No (Apple Sign-In optional; required for practitioner cloud sync) |
1.2.18 Metadata¶
Version: 1.2.18 · Build: 3
What's New (1.2.18)¶
Paste into App Store Connect → Version → What's New:
A smoother Onset - less friction, more flow.
• Your routine, your reset - clear your protocol anytime and start fresh when you're ready to rebuild.
• One tap to your care team - jump from Today straight into My Practitioner.
• Onboarding that keeps moving - restore or unlock Pro and you're in.
• Starter templates land on Today right away, so your plan is visible from day one.
• Polish throughout protocol sync, reminders, and the daily routine experience.
Organize your wellness your way. Onset shows the info - you run the plan.
Alternate (shorter, punchier):
Less tap-dancing, more doing.
Fresh starts when you want them. Faster paths to your practitioner. Smoother Pro unlock after restore. Templates that show up on Today the moment you pick them.
Your routine. Your pace. Onset 1.2.18.
App Review Notes (1.2.18)¶
Paste into App Store Connect → App Review Information → Notes (plain text, under 4,000 characters):
Version 1.2.18 changes from 1.2.17
- Protocol reset fix: Protocol → Clear current protocol now persists across app relaunch. Previously, accepted practitioner assignments were re-imported on foreground sync when local items were empty, and Pro cloud sync could pull protocol rows back from Supabase. Clear now suppresses the current practitioner assignment version locally, skips empty-device cloud pull until the user imports again, deletes StoredProtocol snapshots, and purges self-built protocol/completion rows from cloud when Pro sync is enabled. New practitioner assignment versions still import normally.
- Paywall / restore (unchanged from 1.2.17): onboarding hard paywall advances after Restore/purchase; Restore pill moved to top-leading.
- Practitioner navigation (unchanged from 1.2.17): Today clinic card opens My Practitioner directly.
Feature-flag state (unchanged)
All FDA-gated surfaces remain OFF:
- adaptiveProtocol = false
- aiInsights = false
- advisoryCopy = false
- checkInFeedback = false
- labInterpretation = false
- protocolScoring = false
- lifeEventModifiers = false
Reviewer paths
Protocol clear:
1. Connect a practitioner and accept a protocol (or use an account with items already present).
2. Protocol tab → Clear current protocol → confirm.
3. Force-quit and relaunch - protocol should remain empty until manual import.
Restore / paywall and practitioner navigation: same as 1.2.17 notes.
Demo account: not required.
Privacy policy: https://theonset.app/privacy.html
Terms (EULA): https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
Support URL: https://theonset.app/support.html
App Store Connect checklist (1.2.18 upload)¶
| Field | Value |
|---|---|
| Version | 1.2.18 |
| Build | 3 |
| Primary category | Health & Fitness |
| Secondary category | Lifestyle (optional) |
| Privacy policy URL | https://theonset.app/privacy.html |
| Terms of Use (EULA) | https://www.apple.com/legal/internet-services/itunes/dev/stdeula/ |
| Support URL | https://theonset.app/support.html |
| Marketing URL | https://theonset.app |
| Copyright | © 2026 Last 1 Enterprises LLC |
| Age rating | 4+ (no restricted content) |
| Export compliance | Uses encryption - standard HTTPS only; exempt / no custom cryptography |
| Content rights | Does not contain third-party content requiring licenses |
| Demo account | Not required |
| Sign-in required | No (Apple Sign-In optional for cloud sync) |
1.2.17 Metadata (Previous)¶
What's New (1.2.15)¶
Paste into App Store Connect → Version → What's New:
- Routine reminders - block reminders now schedule when you open the app and repeat daily for Wake, Morning, Midday, Evening, and Night so you don't have to check in first.
- Protocol updates - reminders refresh when you edit your routine or return to the app, keeping notification text in sync with your current plan.
- Practitioner updates - if notifications are off, a brief in-app banner appears when your practitioner sends a protocol update.
- Care team reminders - users with practitioner-assigned items can enable protocol reminders without Onset Pro.
- Stability improvements across notification scheduling and settings.
App Review Notes (1.2.15)¶
Paste into App Store Connect → App Review Information → Notes (plain text, under 4,000 characters):
Version 1.2.15 changes from 1.2.14
- Routine reminders (local notifications only): fixed scheduling so block reminders are queued on app launch, when returning to foreground, when the Today routine regenerates, when the user edits their protocol, and when notification settings change. Previously, reminders were only refreshed after a daily journal save or a settings change - users who opened the app without those actions could have zero pending reminders.
- Repeating daily triggers: Wake, Morning, Midday, Evening, and Night block reminders now use repeating UNCalendarNotificationTrigger (hour + minute) so they fire on subsequent days without requiring the app to open first. Workout- and event-specific blocks (pre-workout, post-workout, pre-performance) remain one-shot because they depend on the user's same-day journal entry; if that time has already passed, the next occurrence is scheduled for the following day.
- Selective cancellation: rescheduling now replaces only protocol-block and performance notification identifiers instead of clearing every pending local request, reducing accidental removal of unrelated scheduled alerts.
- Permission flow: if protocol reminders are enabled but iOS authorization is still "not determined," the app requests alert/badge/sound permission during reschedule instead of failing silently. Onboarding completion also requests permission and schedules reminders.
- Practitioner channel: users with practitioner-assigned protocol items can enable protocol reminders on the free tier (reminder eligibility is per-item; self-built items remain Pro-gated). When a new practitioner assignment arrives and notifications are not authorized, an in-app banner displays the update instead of relying on a local notification alone.
- No remote push: Onset still does not register for APNs; there is no aps-environment entitlement and no server-pushed notifications. All alerts remain on-device via UNUserNotificationCenter.
- Minor: concurrency cleanup in ProtocolNotificationSync; no change to product positioning or feature-flag state.
Feature-flag state (unchanged)
All FDA-gated surfaces remain OFF:
- adaptiveProtocol = false
- aiInsights = false
- advisoryCopy = false
- checkInFeedback = false
- labInterpretation = false
- protocolScoring = false
- lifeEventModifiers = false
Product positioning (Guideline 1.4.1 - unchanged)
Onset remains a general wellness and habit-organization app. It does not diagnose, treat, or recommend. Routine reminders are user-configured local alerts for time blocks the user has organized manually. The app displays information; the user decides.
Reviewer paths (notifications)
1. Onset Pro sandbox account (or practitioner-assigned items on free tier).
2. Settings → Notifications → enable Protocol reminders; grant iOS permission when prompted.
3. Confirm items exist in at least one time block on Today.
4. Background the app; block reminders should fire at the configured anchor minus lead time (default 5 minutes). Repeating blocks fire on subsequent days without reopening the app.
5. To verify practitioner banner: deny notification permission, connect a practitioner assignment in sandbox, reopen app - a top banner should appear for the pending assignment when notifications cannot be shown.
Demo account: not required.
Privacy policy: https://theonset.app/privacy.html
1.2.11 Metadata (Previous)¶
Full Description (1.2.11)¶
Onset helps you organize and follow daily wellness routines in one place. Scan your supplement bottles, build a timed daily plan, log quick check-ins, and track what you take - on your schedule, the way you decide.
KEY FEATURES:
- Daily routine organizer - schedule supplements and wellness habits by time of day with timed reminders you set
- Bottle scanner - point your camera at a supplement label to identify the product and add it to your routine as an editable draft
- Inventory tracking - track remaining supply for each supplement and receive on-device low-stock reminders
- Lab result import - import lab reports and view values alongside your laboratory's reference ranges (display only; no interpretation)
- Supplement reference library - view published information from NIH and CDC sources for supplements in your routine, including common dose ranges, timing notes, and known nutrient interactions, all with source citations
- Quick check-ins - log sleep, energy, mood, and other wellness metrics on simple scales
- Mode selection - choose Recovery, Performance, or Fertility (male) or Balance, Cycle Awareness, or Fertility (female) to frame your routine
- Protocol Lab (Pro) - an interactive educational simulation where you create virtual characters, assign supplement protocols, and visualize how different combinations interact through animated gameplay
- Cycle awareness - female users can track cycle phases and view how routines relate to their monthly rhythm
- Trend display - view your self-reported check-in data over time as simple charts
- Performance prep timer - countdown and checklist for pre-activity preparation
- Completion tracking - see your daily adherence and streaks
- Apple Watch companion and home screen widgets - view today's routine at a glance
Onboarding includes a biological-sex profile so mode options and routine framing match app settings. Users can update preferences anytime in Settings.
Onset is a wellness organization tool. It displays published reference information and user-entered data. It does not provide medical advice, diagnose conditions, or recommend treatments. Always consult a healthcare provider for medical decisions.
SUBSCRIPTION:
Onset Pro unlocks the bottle scanner, inventory tracking, Protocol Lab, additional modes, performance prep timer, routine reminders, and advanced organization tools. Pricing and terms available at checkout.
Privacy policy: https://theonset.app/privacy
Terms of use: https://theonset.app/terms
Compliance notes (why this differs from 1.2.8):
- Opening line removed "built from your preferences and recent activity" (borderline adaptive language, conflicts with FDA-gated feature-flag posture). Replaced with "on your schedule, the way you decide" to reinforce user-controlled organizer framing.
- Added bullets for the three flagship 1.2.11 features (bottle scanner, inventory tracking, lab result import) and promoted them above the reference library so new value is visible in the first screenful.
- Lab bullet explicitly notes "display only; no interpretation" - matches
labInterpretation = falsefeature-flag state. - "Onset PRO" → "Onset Pro" everywhere to match the rename and the
proentitlement id. - Subscription paragraph updated to match what's actually gated as Pro in code (scanner, inventory, Protocol Lab, additional modes, prep timer, routine reminders).
- No "advice", "recommend", "optimize", "personalized", "treat", "cure", "prevent", "improve", "risk", "conflict", or "warning" language anywhere.
Promotional Text (1.2.11)¶
App Store Connect promotional text is editable without a new app version (170-character max). Pick one and paste; keep the others on file for A/B rotation.
Option A - feature-led (141 chars):
Now with bottle scanning, inventory tracking, and lab result import. Organize your daily wellness routine with timed reminders and clear trends.
Option B - benefit-led (149 chars) - recommended:
Scan supplement labels, track inventory with low-stock reminders, and organize a timed daily routine. Now with lab result import and reference ranges.
Option C - short and punchy (103 chars):
Scan bottles. Track inventory. Import lab values. Organize your daily wellness routine in one calm plan.
Recommendation: Option B. Covers three of the four 1.2.11 flagship features, keeps the organizer/reference framing Apple wants, and reads naturally. "With low-stock reminders" communicates utility without implying advice.
What's New (1.2.11)¶
- Bottle scanner upgrades - faster label recognition, expanded supplement matching, and improved error handling when a label is hard to read.
- Lab import improvements - cloud-assisted parsing for more lab report formats, better reference range extraction, and repair/delete options for imported lab files.
- Inventory tracking - track remaining supply per supplement and get on-device reminders when you're running low.
- Today screen - previous time blocks are now expandable so you can review earlier routine entries without scrolling away.
- Medium widget - refreshed layout with routine progress and dynamic content fitting across widget sizes.
- Supplement reference search - faster search across the reference database with clearer category grouping.
- Protocol adaptive mode - a new display option that blends selected modules into a single routine view you control manually.
- Paywall and subscriptions - cleaner restore flow, improved loading and error messages, and silent receipt sync for returning subscribers.
- Stability and UI refinements across routine editing, protocol import, and reminder scheduling.
Apple rejection response - Guideline 3.1.1 (Lifetime IAP review)¶
Context. App Review flagged that adding onset_pro_lifetime (non-consumable) alongside the existing auto-renewable subscriptions changes the business model and that the new IAP must be visibly purchasable in the binary.
What changed in the binary to address this:
SubscriptionManagernow fetches all three products by id directly from StoreKit on everyrefreshAll()(onset_pro_monthly,onset_pro_annual,onset_pro_lifetime). This path does not depend on RevenueCat offering / paywall template configuration, so the lifetime IAP is binary-resident.- New
OnsetExplicitPaywallview renders a 3-card paywall (Monthly, Annual, Lifetime) wired toPurchases.shared.purchase(product:). It also exposes Restore. - The existing
PaywallViewadds a persistent "View all plans" pill above the home indicator that opensOnsetExplicitPaywallas a sheet. This is shown both on the onboarding paywall step and on every mid-app upsell. - If the RevenueCat offering is empty or fails to load,
PaywallViewautomatically falls through toOnsetExplicitPaywallinstead of the previous static "Retry / Restore" card. There is no scenario where a reviewer reaches the paywall and cannot see all three plans. - Settings → Onset Pro → Compare plans (
accessibilityIdentifier: SettingsComparePlansButton) opensOnsetExplicitPaywalldirectly. This is the fastest path for a reviewer to verify lifetime is purchasable without going through onboarding.
How a reviewer can verify lifetime is purchasable in the binary:
- Launch the app on a sandbox-signed Apple ID.
- Either: (a) tap Skip through onboarding and on the paywall step tap View all plans; or (b) close onboarding, open the Settings tab, scroll to Onset Pro → Compare plans.
- The Lifetime card displays the current App Store price and the badge "Best value".
- Tap the Lifetime card, then Buy Lifetime - $99.00. The standard StoreKit purchase sheet appears. Complete the purchase in sandbox.
- The view dismisses, the entitlement flips to Active, and Settings → Onset Pro shows Active.
Product IDs and types (App Store Connect = StoreKit configuration = binary):
| Product ID | Type | Price (USD) |
|---|---|---|
onset_pro_monthly |
Auto-Renewable Subscription | $7.99/mo |
onset_pro_annual |
Auto-Renewable Subscription | $49.00/yr |
onset_pro_lifetime |
Non-Consumable | $99.00 once |
The non-consumable shares the same pro entitlement as the subscriptions. RevenueCat unifies the entitlement check so a lifetime purchaser is isProUser == true for the lifetime of the Apple ID and is fully restorable on reinstall.
App Review Notes (1.2.11)¶
App Store Connect's "App Review Information → Notes" field is capped at 4,000 characters. The block below is a paste-ready plain-text version (markdown stripped, Insert Affiliate detail consolidated into a single bullet) that fits at 3,655 characters with ~345 chars of headroom.
Version 1.2.11 changes from 1.2.8
- Bottle scanner: added parsed fields (brand, form), improved cloud scan response parsing, and hardened error handling. Scans remain user-initiated and produce editable drafts only.
- Lab import: cloud-first parsing with local fallback; improved biomarker extraction, reference-range handling, JSON salvage, timeout handling, and source tracking. Added delete confirmation and import repair UI. All lab values are display-only alongside laboratory reference ranges - no interpretation.
- Inventory: local stock tracking and on-device low-stock notifications via UNUserNotificationCenter. Opt-in under the existing reminder permission; data never leaves the device.
- Protocol: new "adaptive" display mode that combines user-selected modules into a single routine view. All blending is manual - the user selects the modules and their order. No automated guidance, no advisory output. This is unrelated to the adaptiveProtocol feature flag (which remains off).
- Interaction data: refactored reference data structures; display remains read-only with source citations. No advisory cards, warnings, or conflict copy.
- Today screen: added expandable previous-block display and custom goal-filter colors. No change to organizational logic - user continues to manually assign supplements to time blocks.
- Subscriptions / RevenueCat: silent receipt sync for returning subscribers, improved offerings loading and error handling, toast feedback on purchase/restore, and restoration analytics. Entitlement id remains "pro".
- Affiliate attribution (Insert Affiliate SDK, new in 1.2.11): integrated the Insert Affiliate Swift SDK (https://github.com/Insert-Affiliate/InsertAffiliateSwiftSDK) to credit external partner referrals. The SDK reads incoming custom-scheme deep links (ia-9xl3qirlsuz6t9ryhjvetyq3rvy2://) and Universal Links (https://insertaffiliate.link/...) and stores an opaque short code on-device. On purchase, RevenueCat forwards the standard purchase event to Insert Affiliate's webhook so the referring partner can be credited. The SDK does not track users for advertising, does not access HealthKit / lab / journal / routine data, does not display advertising, does not modify any in-app surface, and clipboard reading is disabled.
- Minor: improved widget layout, more efficient read-only HealthKit display (scope unchanged: sleep, HRV, activity, user-authorized), and concurrency cleanup in scheduling. No user-visible behavior change.
Feature-flag state (unchanged from 1.2.8 review build)
All FDA-gated surfaces remain OFF:
- adaptiveProtocol = false (journal data does not modify routine output)
- aiInsights = false (cloud AI summary/generator surfaces hidden)
- advisoryCopy = false (no adaptive guidance language)
- checkInFeedback = false (Daily Journal is logging-only)
- labInterpretation = false (no lab-driven routine adaptation)
- protocolScoring = false (no adherence optimization surface)
- lifeEventModifiers = false (life events do not mutate routine)
Product positioning (Guideline 1.4.1 - unchanged)
Onset remains a general wellness and habit-organization app. It does not diagnose, treat, or recommend. All supplement and lab reference information is displayed with citations to published government sources (NIH ODS, CDC) or the user's own laboratory reference ranges. The user decides how to organize their routine; the app displays information.
Regulatory
FDA Pre-Submission Q261001 filed; 513(g) classification request in preparation. Attestation memo unchanged since 1.2.8 and available upon request.
Demo account: not required.
Privacy policy: https://theonset.app/privacy.html
What was trimmed from the long version (and why it's safe to drop):
- Duplicate Insert Affiliate paragraph - the SDK is now described once in a consolidated bullet instead of being repeated in a separate addendum at the bottom (~600 chars saved).
- Per-bullet "Widgets / Health / Frequency scheduling" entries - folded into a single "Minor" line. None affect compliance or feature-flag state, so reviewers don't need the full detail.
- Markdown formatting (
**bold**, backtick code spans) - App Store Connect renders the Notes field as plain text, so asterisks and backticks would show literally. Removed. - Repeated phrases - "remain user-authorized", "in this build", etc.
- Sub-headings tightened - "Feature-flag state (unchanged from 1.2.8 review build)" instead of the longer multi-line variant.
The 345 chars of headroom is intentional - leaves room for the reviewer-reply text in Onset/APP_STORE_SUBMISSION.md (further down) if Apple sends a follow-up question and you need to amend the Notes mid-review.
Privacy Labels (1.2.11 update)¶
Apply these changes to App Store Connect → App Privacy before submitting 1.2.11. Existing 1.2.8 disclosures (Health & Fitness, Usage Data, optional Cloud AI) remain unchanged.
Check - Identifiers → User ID (covers both the RevenueCat anonymous customer ID and the Insert Affiliate referral short code)
Apple's "User ID" category explicitly includes "assigned user ID, customer number, probabilistic identifier, or other user- or account-level ID." The IA short code and the RevenueCat customer ID both fall here. Do not check Device ID - that's for advertising/device identifiers, which Onset does not use.
- Linked to user: No - RevenueCat uses anonymous customer IDs (no email, no Apple ID), and the Insert Affiliate short code is opaque
- Used for tracking: No - purchase attribution to a referring partner is not "tracking" under Apple's definition (cross-app/website linking for advertising)
- Purposes: App Functionality and Analytics
Check - Purchases → Purchase History (already covered by RevenueCat; confirm it stays checked)
- Linked to user: No (RevenueCat anonymous customer ID)
- Used for tracking: No
- Purposes: App Functionality, Analytics
Third-party processor disclosure
In your privacy policy at https://theonset.app/privacy.html, add Insert Affiliate as a processor alongside RevenueCat, Supabase, and Anthropic. Suggested wording (free to adapt):
Insert Affiliate - when a user opens the app via a partner referral link, an anonymous short code is stored on-device and sent to Insert Affiliate via RevenueCat's purchase webhook so referring partners can be credited for purchases. No health, journal, supplement, lab, or other personal data is shared with Insert Affiliate.
App Review Notes - Insert Affiliate addendum (reserve / not needed for initial submission)¶
The Insert Affiliate detail is already consolidated into the main App Review Notes block above (and fits within the 4,000-char limit). Keep this longer version on file in case Apple sends a follow-up question through Resolution Center asking for more detail on the SDK, the domain, the URL scheme, or the webhook flow - paste this paragraph as a reply.
Insert Affiliate SDK (new in 1.2.11). Onset includes the Insert Affiliate Swift SDK (https://github.com/Insert-Affiliate/InsertAffiliateSwiftSDK) for partner referral attribution. When a user opens the app from a partner link (custom scheme
ia-9xl3qirlsuz6t9ryhjvetyq3rvy2://or Universal Linkhttps://insertaffiliate.link/...), the SDK stores an anonymous short code on-device. On purchase, RevenueCat forwards the standard purchase event to Insert Affiliate's webhook (https://api.insertaffiliate.com/v1/api/revenuecat-webhook) so the partner can be paid commission. The SDK is not used for advertising or cross-app tracking, does not access HealthKit, lab, journal, or routine data, does not modify any in-app surface, and does not display advertising. Clipboard reading is disabled (insertLinksClipboardEnabled: false). Associated Domainapplinks:insertaffiliate.linkis added so Universal Links open the app directly.
1.2.8 Metadata (Previous)¶
Full Description (1.2.8)¶
Onset helps you organize and follow daily wellness routines in one place. Log a quick check-in, choose your mode, and follow a timed daily plan built from your preferences and recent activity.
KEY FEATURES:
- Daily routine organizer - schedule supplements and wellness habits by time of day with timed reminders
- Quick check-ins - log sleep, energy, mood, and other wellness metrics on simple scales
- Mode selection - choose Recovery, Performance, or Fertility (male) or Balance, Cycle Awareness, or Fertility (female) to frame your routine
- Supplement reference library - view published information from NIH and CDC sources for supplements in your routine, including common dose ranges, timing notes, and known nutrient interactions, all with source citations
- Protocol Lab (PRO) - an interactive educational simulation where you create virtual characters, assign supplement protocols, and visualize how different combinations interact through animated gameplay
- Cycle awareness - female users can track cycle phases and view how routines relate to their monthly rhythm
- Trend display - view your self-reported check-in data over time as simple charts
- Lab value storage - optionally store and view your own lab results alongside standard reference ranges from your laboratory
- Performance prep timer - countdown and checklist for pre-activity preparation
- Completion tracking - see your daily adherence and streaks
Onboarding includes a biological-sex profile so mode options and routine framing match app settings. Users can update preferences anytime in Settings.
Onset is a wellness organization tool. It displays published reference information and user-entered data. It does not provide medical advice, diagnose conditions, or recommend treatments. Always consult a healthcare provider for medical decisions.
SUBSCRIPTION: Onset PRO unlocks Protocol Lab, additional modes, performance prep timer, and advanced features. Pricing and terms available at checkout.
Privacy policy: https://theonset.app/privacy Terms of use: https://theonset.app/terms
What's New (1.2.8)¶
- Supplement detail views - tap any supplement in your routine to see published reference information from NIH sources, including common dose ranges, timing notes, and known nutrient interactions with source citations.
- Performance prep mode - tap the flame icon on Today to set an event countdown with a step-by-step prep checklist.
- Apple Health permissions - fixed connection flow for sleep, HRV, and activity data.
- Disclaimers and safety - added first-launch wellness disclaimer and persistent reference notices throughout the app.
- UI improvements and stability fixes.
App Review Notes (1.2.8)¶
Version 1.2.8 changes from 1.2.7 - Added supplement detail view with published reference information from NIH Office of Dietary Supplements (all facts cited to source, no personalized recommendations) - Added performance prep timer activation (countdown + checklist for pre-activity items) - Fixed Apple Health permission flow - Added first-launch wellness disclaimer modal - Added persistent disclaimer footers on trends, lab display, and supplement detail screens - UI refinements
Product positioning (Guideline 1.4.1) Onset is a general wellness and habit-organization app. It does not diagnose, treat, or recommend. Supplement reference information is from published government sources (NIH ODS, CDC) with citations. Lab values are displayed for personal reference alongside laboratory reference ranges with no interpretation. Protocol Lab is an educational simulation operating on fictional character data.
Regulatory FDA Pre-Submission Q261001 filed; 513(g) classification request in preparation. Updated attestation memo available upon request.
Privacy Labels (App Privacy)¶
Update App Privacy in App Store Connect from "Data Not Collected" to reflect:
- Health & Fitness -> Health (check-in scores: sleep, energy, mood, soreness)
- Linked to user: No (no account) / Yes (if account)
- Used for tracking: No
- Usage Data -> Product Interaction
- Linked to user: No
- Used for tracking: No
Not collected: - Location - Contacts - Identifiers (no advertising identifiers) - Financial info - Sensitive info
If Cloud AI is enabled (optional), disclose health summary payload processing as optional and user-controlled.
App Information¶
- App Name (30 characters max; appears as the title on the product page):
- App Store uniqueness: Apple may reject
Onsetwith “already being used” if another app has that listing title globally. The in-app name (CFBundleDisplayName) can stay Onset in Xcode; only the App Store name in Connect must be unique. - Try next (pick one that saves in Connect):
Onset: Daily Routine(20 characters),Onset: Wellness Tracker(23),Onset: Routine Organizer(24),Onset Routine(13), or revert toThe Onsetif that was your working listing title. - Trademark: If you own the mark, use Apple’s name claim flow from the error; otherwise use a distinct listing title above.
- Subtitle (30 characters max; one line under the name):
- Recommended:
Daily routine tracking(22 characters). - Bundle ID: (set in Xcode → your team)
- SKU: onset-ios-001 (or your live SKU; Connect may show e.g.
com.last1enterprises.Onset) - Primary Language: English (U.S.)
- Category: Health & Fitness
- Secondary Category: Lifestyle
- Content Rights: Does not contain third-party content
- Age Rating: 17+ (references to sexual health topics)
App Store Description¶
Promotional Text (up to 170 characters; editable without a new app version):
General wellness routines and adherence tracking in one calm daily plan.
Subtitle (30 characters max; set in App Store Connect if you use it):
Daily routine tracking
Short Description (for search / site parity): Build and follow daily wellness routines with simple daily journal logging and clear progress tracking.
Full Description:
Onset helps you organize and follow daily wellness routines in one place. Log a quick daily journal entry, choose your mode, and follow a timed daily plan.
Onboarding includes a biological-sex profile so mode options and routine framing match app settings. Users can update preferences anytime in Settings.
Modes in Onset: • Recovery • Performance • Fertility • Balance (female profile) • Cycle awareness (female profile; calendar-based wellness template)
What Onset includes: • A daily routine timeline with completion tracking • Daily Journal history for sleep quality, energy, mood, and related context • Adherence summaries (streaks and completion rates) • Optional connected-data context and imported-record summaries • Optional cloud AI wellness text when user consent is enabled • Apple Watch companion, reminders, and Siri Shortcuts where available
Trends in the app are presented as raw wellness logs and engagement summaries. They are not diagnostic outputs, treatment advice, or clinical interpretations.
ONSET+ (OPTIONAL SUBSCRIPTION)
Onset Pro unlocks advanced modes, cloud AI wellness-text refresh, and additional organization features.
WHAT ONSET IS NOT
Onset does not diagnose, treat, cure, or prevent disease. It does not provide medical diagnosis or treatment advice. Cycle and phase language is for general wellness routine planning only and is not a medical prediction tool. Cloud features may process limited context to generate wellness text; see the privacy policy at theonset.app.
MEDICAL DISCLAIMER (required for App Review - keep in the App Description)
Always consult a doctor or other qualified health provider about any medical condition, medication change, or before starting or changing diet, exercise, or supplement programs. Onset is general wellness and habit-organization software, not a medical device.
TERMS OF USE (EULA) - Guideline 3.1.2(c)
The app uses Apple’s standard Licensed Application End User License Agreement. Include this link in the App Description (and/or Connect EULA field as appropriate):
https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
Keywords (100 character limit)¶
Paste a single line, no spaces after commas. Example (88 characters):
routine,recovery,performance,fertility,wellness,habits,tracking,supplement,sleep,cycle
What's New (Version 1.2.6)¶
Converted wellness logging to a neutral Daily Journal flow with no adaptive output language, replaced Insights with a data-only Trends surface, and removed user-facing interaction alert cards for this review build. Also completed a full copy audit to remove high-risk phrasing and keep app surfaces focused on routine organization and tracking.
RevenueCat¶
- SPM:
purchases-ios-spm(v5.x), products RevenueCat + RevenueCatUI linked on the Onset target. - Public API key:
INFOPLIST_KEY_RevenueCatPublicAPIKey(Debug test key; Release uses productionappl_key). - Entitlement id (must match dashboard):
pro- seeSubscriptionManager.entitlementIdentifier.
Pricing (must match App Store Connect + RevenueCat)¶
Target SKUs (US): $7.99/month (onset_pro_monthly), $49.99/year (onset_pro_annual), $99 lifetime (onset_pro_lifetime). Live prices are whatever you set in App Store Connect; RevenueCat imports those products. The paywall (RevenueCatUI.PaywallView) shows StoreKit prices, not hardcoded app strings.
RevenueCat dashboard checklist
- Products: Attach the same product IDs as ASC (
onset_pro_monthly,onset_pro_annual,onset_pro_lifetime). - Entitlement
pro: All Onset Pro products unlockpro(identifier matchesSubscriptionManager.entitlementIdentifier). - Offering (e.g. default): Include monthly, annual, and lifetime packages; set Current offering so
offerings.currentresolves in production. - After ASC price changes, open RevenueCat → Product catalog and refresh/sync if prices look stale.
- Paywall template (optional): Align copy with tiers (Free / Onset Pro monthly / annual / lifetime) - marketing site uses
$7.99/mo,$49/yr, and$99 lifetimeattheonset.app.
App Store Connect subscription copy¶
Use this wording for App Store Connect subscription metadata:
- Monthly display name: Onset Pro Monthly
- Annual display name: Onset Pro Annual
- Lifetime display name: Onset Pro Lifetime
- Monthly description: Unlock unlimited protocol items, scanner access, advanced organization views, Watch/widgets, and premium tracking surfaces.
- Annual description: One year of Onset Pro for supplement routine organization, scanner access, lab/protocol context, Watch/widgets, and premium tracking.
- Lifetime description: Lifetime Onset Pro access for unlimited supplement protocol organization, scanner access, lab/protocol context, Watch/widgets, and premium tracking.
App Review Notes¶
Paste the block below into App Store Connect → App Review Information → Notes (adjust version/build line if needed).
App Review Information - Notes (copy from here)¶
Reviewer build flag matrix (v1.2.6 / build 1)
This build uses an explicit internal feature-flag gate for regulated surfaces.
OFF in this review build (FDA-gated):
- adaptiveProtocol = false (journal data does not modify routine output)
- aiInsights = false (cloud AI summary/generator surfaces hidden)
- advisoryCopy = false (no adaptive guidance language surfaces)
- checkInFeedback = false (Daily Journal is logging-only; no adaptive feedback card)
- labInterpretation = false (no lab-driven routine adaptation)
- protocolScoring = false (no adherence score optimization surface)
- lifeEventModifiers = false (life events do not mutate routine)
ON in this review build (organizer features): - Bottle scanner - Manual routine organization by time block - Daily Journal logging - Supplement database lookup - Intake checkbox tracking - Inventory tracking and low-stock alerts - Read-only trends/data displays - Mode selection as organization context - Routine templates/import-export
Reviewer click-path confirmation (what you should see now): - Today: organizer/timeline + neutral wellness wording; no adaptive guidance CTA - Daily Journal: logging flow and save/update entry state - Trends: read-only data summaries/charts; no optimization guidance - Settings: AI/cloud section hidden in this build; event/adaptive settings hidden - Protocol: manual editing + scanner workflow; no AI routine builder entry point
This build is intentionally configured as a general wellness organizer while regulatory clearance is pursued for adaptive guidance features.
Product positioning (Guideline 1.4.1 - physical harm / medical claims)
Onset is a general wellness and habit-organization app. It helps users schedule and track daily routines (sleep hygiene, activity timing, stress-management habits, and supplement reminders) using self-reported daily journal logs plus optional context.
Onset is not a regulated medical device in the U.S. sense, is not cleared or approved by the FDA (or other regulators) for diagnosis, treatment, mitigation, or prevention of disease, and does not claim FDA or equivalent “clearance” for clinical decision-making. It does not replace a qualified health professional. Users see in-app and App Store disclaimers to consult a clinician for medical decisions.
The app does not:
- Diagnose or treat any disease or condition
- Provide individualized medical advice or prescribe interventions
- Connect to regulated medical devices for measurement or therapy
- Claim to cure, mitigate, or prevent disease
The app does:
- Let users self-report wellness daily journal values on simple scales
- Organize a timed daily routine from user-stated goals and context (including optional cycle-template framing for female profiles; wellness planning only)
- Show adherence and engagement summaries (completion rates, streaks, daily journal trend charts)
- Show general wellness references in-app (public sources)
What changed in this build to address Apple concerns:
- Renamed Insights to Trends and shifted wording to neutral wellness tracking language.
- Replaced interpretation copy with chart-only data presentation and averages.
- Kept Trends limited to raw user logs, completion metrics, and read-only Apple Health series.
- Removed user-facing interaction/advisory cards when advisoryCopy is off.
- Kept adaptive routine modifiers disabled for this review build.
Third-party AI (Guidelines 5.1.1(i) / 5.1.2(i))
Cloud AI (Daily AI wellness summary; optional AI routine draft) is opt-in under Settings → AI & cloud data. The in-app disclosure states that a limited prompt may include categories such as: mode and profile; optional daily journal fields; optional Apple Health summaries if Health is enabled; optional cycle context; goals/concerns entered in the generator; and coarse day-context signals. Prompts go to Last 1 Enterprises LLC’s Supabase backend, then to Anthropic (Claude) for text generation only. We do not sell personal data to Anthropic. The public privacy policy at https://theonset.app/privacy.html names Anthropic, describes what may be sent, why, and retention/processing at a high level.
Privacy policy URL: https://theonset.app/privacy.html
Demo account: None required (no mandatory username/password).
Regulatory attestation uploaded: APP_REVIEW_ATTESTATION_2026-03-31.pdf in App Review Information attachments.
Reviewer Reply Draft (paste in Resolution Center)¶
We have made the following changes in version 1.2.6 (build 1):
- Removed "Complete your daily check-in to get personalized recommendation" - this is now a Daily Journal save flow with no adaptive output.
- Removed the Insights tab - replaced with "Trends" showing only raw data charts.
- Removed all adaptive routine modifications for this review build - the routine is user-configured.
- Conducted a full language audit removing all instances of "personalized", "recommendation", "optimized", "adjusted for you", and similar terms from Swift UI copy.
- All supplement information displayed is static reference data from published sources (NIH ODS and related public-health references).
Attached in App Review Information: updated Regulatory Position Memo PDF.
Shorter reminder (optional second paragraph in Notes)¶
Build includes a first-use Cloud AI consent gate and explicit reviewer path:
- Settings → AI & cloud data → Cloud AI (wellness summary & generator)
Disclosure includes data categories sent, processor identity (Anthropic via Onset backend/Supabase), allow/decline choice, and where to change later.
- Today → Daily AI summary card / local routine summary card → Sources
Opens a sheet with easy-to-find public-health references used for general wellness education.
- Trends tab
Shows adherence, streaks, daily journal trends, connected-data coverage, imported-record summaries, and a wellness disclaimer footer.
- Settings → About
Privacy policy and Terms of Use (EULA) links open directly.
App Description includes medical disclaimer and Apple Standard EULA link per subscription metadata requirements.
Screenshots Required¶
iPhone 6.7" (iPhone 15 Pro Max) - Required¶
- Today screen with routine timeline (Recovery mode)
- Today screen with performance countdown active
- Daily Journal screen with sliders
- Mode toggle showing all three modes
- Routine reference view with research-notes info affordance
- (Optional) Settings screen
iPhone 6.1" (iPhone 15 Pro) - Required¶
Same 5-6 screenshots
iPad Pro 12.9" - Optional but helpful¶
Same screenshots, landscape orientation
Screenshot Text Overlays (suggestion)¶
- "Your routine, organized daily."
- "Pre-performance countdown. Timed to the minute."
- "Log your day. Track your trends."
- "Three modes. One engine."
- "Simple routine tracking, clear context."
Phase 1I - Repo checklist (done in project)¶
- Deployment target: iOS 17.0 (project-level and Onset target).
- Display name: Onset (
INFOPLIST_KEY_CFBundleDisplayName+CFBundleDisplayNameinSupporting/Info.plist). - App icon: All slots under
Onset/Assets.xcassets/AppIcon.appiconset/populated from the master 1024×1024 asset (replace with final brand artwork before marketing). - Launch screen:
Onset/LaunchScreen.storyboard- background #0A0A0B, centered ONSET wordmark in #EDBA4D;UILaunchStoryboardName=LaunchScreeninSupporting/Info.plist; auto-generated launch screen is off in build settings. - Legal URLs in Info.plist (for in-app / metadata reference):
OnsetPrivacyPolicyURL→https://theonset.app/privacy.htmlOnsetTermsOfUseURL→ standard Apple EULA (https://www.apple.com/legal/internet-services/itunes/dev/stdeula/)- StoreKit testing:
The Onset.storekit+ scheme StoreKit config for Simulator purchases.
Manual QA before you archive (device + Simulator)¶
Run these yourself before upload:
- Onboarding: Complete flow as male (5 steps) and female (6 steps, cycle page). Confirm “Let’s go” saves preferences and lands in tabs.
- Daily Journal → Today: Save a journal entry, confirm entry state persists, then toggle a few completions and verify state persists.
- CSV import (Onset Pro): Import a real spreadsheet; confirm preview, import, and Today / Routine match expectations.
- Paywall: In Simulator with StoreKit file, complete a test purchase; confirm pro entitlement and gated features unlock.
- Notifications (physical device): With reminders on, confirm permission and scheduled notifications if you test that build.
App Store Connect - archive, upload, metadata, submit¶
These steps run on your Mac (Xcode + Transporter or xcodebuild + altool/notarytool). The AI cannot log in to ASC for you.
- Bump versions if needed: increment Marketing and Build in Xcode (Onset target → General).
- Archive: Xcode → Product → Archive (Release configuration, correct team). Resolve any signing or asset issues.
- Upload: Organizer → Distribute App → App Store Connect → Upload. Wait for processing (binary “Ready to Submit”).
- App Store Connect: Open the app record → fill subtitle, description, keywords, support URL, privacy policy URL (use the same URL as in Info.plist), screenshots, age rating, export compliance, subscription group / IAP if not already linked.
- Submit for review: Select the uploaded build, complete App Review notes (see below), answer encryption / content questions, then Submit.
Use the sections earlier in this document for copy-paste description, keywords, and review notes.
Privacy Policy Requirements¶
You MUST have a privacy policy URL before submitting. The live URL referenced in the app is: https://theonset.app/privacy.html
Use docs/APP_STORE_PRIVACY_DISCLOSURE.md as your App Store Connect "App Privacy" draft when filling data categories.
Minimum content: - What data is collected (self-reported wellness metrics, optional cloud AI request inputs, operational telemetry) - Where it's stored (on-device + cloud processing/storage for enabled cloud features) - Which third-party processors are used (e.g. subscription infrastructure, backend hosting, AI model providers) - How users can request deletion/help - Contact email for privacy inquiries
Common Rejection Reasons to Avoid¶
- Guideline 1.4.1 - Physical harm: Don't make health claims. Use "support", "optimize", "track" - never "treat", "cure", "fix", "boost testosterone"
- Guideline 2.1 - App completeness: All features must work. No placeholder screens. No "coming soon" sections.
- Guideline 3.1.1 - In-app purchase: Paywall includes pricing from StoreKit, free trial when configured, Terms/Privacy links, and restore. Ensure RevenueCat offering entitlements use id
pro(or updateSubscriptionManager.entitlementIdentifierto match your dashboard). - Guideline 5.1.1 - Privacy: Must have a privacy policy URL
- Guideline 5.1.2 - Data use: If using HealthKit (future), must explain exactly what data you read and why
- Guideline 4.0 - Design: Must not look like a web wrapper. Native UI required. (SwiftUI handles this.)
TestFlight → App Store Timeline¶
- Archive build in Xcode → Upload to App Store Connect
- TestFlight: available within ~30 minutes of upload
- App Store Review: typically 24-48 hours (can be 72h)
- If rejected: address feedback, resubmit (adds another 24-48h cycle)
- First submission for a new app takes longer - budget 48-72h
Pro tip: Submit to review ASAP, even if you plan to keep iterating. You can update the binary while in review. The clock starts when you submit.