The Movement Athlete · iOS & Android · build spec

“Upgrade to Premium” — screen rebuild

A UI-only change to an existing screen. Purchase, restore, terms, analytics and RevenueCat are already wired — nothing here asks you to integrate anything. Three shipped states, one component.

Scope
The fold onlyUnder the coral header, down to the docked button
Do not touch
Header & belowEverything under “What you get” stays as-is
New logic
Three derived stringsper-day, per-week, localised zero
Estimate
~1 dayDefault variant, incl. device QA

01 Why this screen is being replaced

Each plan currently shows a large unit price — $8 / week and $6.4 / month. Those strings are byte-identical on a UK device and on a device charging in pesos, while the amount actually charged changes underneath them. They were hardcoded into the layout and never bound to the store product.

The consequence

The screen argues against the annual plan

As displayed, quarterly reads as 5.4× the yearly. What is actually charged makes it 1.26×. The value ladder runs backwards.

Related defect

Two currency symbols on one price

The removed Lifetime card rendered a stray $ followed by ₱58,000.00. Same root cause: display strings that were never bound to the product.

02 The three states

Same layout, same components, same code path — only the price source changes. Tap the plan tiers inside any phone: the dock and timeline re-price live, which is the behaviour to reproduce. The switcher stays with you as you scroll.

Three states of the same component — switch between them here. Tap the plan tiers inside the phone: the dock and timeline re-price live.

Version A Full price · free trial — the checkout architecture, in-app Sells the TRIAL, not the subscription: the price of today's decision is $0.00. Annual is the hero; monthly and quarterly are demoted to ramps. Tap a ramp and the dock re-binds. Scroll for the timeline, seal, members wall and press strip.
9:41

Get strong, lean, mobile & pain-free for life

while learning over 100 calisthenics skills at home

Five Movement Athlete members — bar work, handstands, wall bars★★★★★ 4.8 member rating100,000+ members
12-Month planSAVE 20% · $39.97/YR
The full transformation — and your price locked all year.
Try it FREE for 7 days
$0.00due today
then $3.08/week · $0.44/day · billed $159.99/year
Free until . Cancel before then and pay nothing — no charge at all.
Start on a shorter plan
3-Month planOne full phase$3.85 /wk$49.99 every 3 months

A personal trainer runs $60–100 a session · AI coaching apps $149/mo · your plan: $0.44 / day ✓

How your free trial works
TodayFull access. Nothing to pay.
Day 5We remind you the trial is ending.
Day 7$159.99 charged, unless you cancel.

You won't be charged for 7 days

Full access from today. Cancel any time before your trial ends and you pay nothing at all — no part-charge, no catch.

— Jesse, Head Coach

Dozens of Movement Athlete members — handstands, bar work, holding their training in the app
A few of the 100,000+ members
As featured in
leAD Sports Accelerator, Forbes, AMC and NewsWatch
WHAT YOU GET
In-depth assessmentto create a personalized training program.
Progressions & guidancea life-long system of gamified progressions across 100+ calisthenics and gymnastics skills.
Daily training programmingthat adapts to you.
Achievements journeytrack progress & unlock harder skills as you go along.
Full workout customisationchoose time, equipment, and skills you want to work on.
…the existing section's own copy — one line updated, devs do not rebuild…
FREE for 7 days — $0.00 todaycancel anytime
Version B 50% off — same hero, promo state The discount replaces the trial (rule 3). 50% applied to BOTH tiers so the offer reads as one promise, not two.
9:41

Get strong, lean, mobile & pain-free for life

while learning over 100 calisthenics skills at home

Five Movement Athlete members — bar work, handstands, wall bars★★★★★ 4.8 member rating100,000+ members
12-Month planSAVE 50% · $80.00
The full transformation — and your price locked all year.
50% off your first year
$79.99due today$159.99
that's $0.22/day for a full year
Renews at $159.99 from year two. Cancel anytime.
Start on a shorter plan
3-Month planOne full phase$1.92 /wk$49.99 $24.99 today

A personal trainer runs $60–100 a session · AI coaching apps $149/mo · your plan: $0.22 / day ✓

What happens when you tap
Today$79.99 charged. Full access straight away.
In 12 monthsRenews at $159.99, unless you cancel.

Feel stronger in 60 days — or your money back

Train for two months. If you don't feel the difference, email us and we'll make it right.

— Jesse, Head Coach

Dozens of Movement Athlete members — handstands, bar work, holding their training in the app
A few of the 100,000+ members
As featured in
leAD Sports Accelerator, Forbes, AMC and NewsWatch
WHAT YOU GET
In-depth assessmentto create a personalized training program.
Progressions & guidancea life-long system of gamified progressions across 100+ calisthenics and gymnastics skills.
Daily training programmingthat adapts to you.
Achievements journeytrack progress & unlock harder skills as you go along.
Full workout customisationchoose time, equipment, and skills you want to work on.
…the existing section's own copy — one line updated, devs do not rebuild…
50% off — $79.99 todaycancel anytime

60-day money-back guarantee — email us and we'll make it right

  1. Monthly is not discounted — the full-price ramp is what makes the struck prices mean something.
  2. The renewal price appears three times — hero, timeline, dock — and re-binds when a ramp is selected.
  3. Deadline stated once in the eyebrow, computed from a real campaign end date. No countdown timer.
Version C 30% off — same hero, lighter promo Identical architecture, 30% applied to BOTH tiers. Every figure below is computed from the same product prices — nothing is hand-written.
9:41

Get strong, lean, mobile & pain-free for life

while learning over 100 calisthenics skills at home

Five Movement Athlete members — bar work, handstands, wall bars★★★★★ 4.8 member rating100,000+ members
12-Month planSAVE 30% · $48.00
The full transformation — and your price locked all year.
30% off your first year
$111.99due today$159.99
that's $0.31/day for a full year
Renews at $159.99 from year two. Cancel anytime.
Start on a shorter plan
3-Month planOne full phase$2.69 /wk$49.99 $34.99 today

A personal trainer runs $60–100 a session · AI coaching apps $149/mo · your plan: $0.31 / day ✓

What happens when you tap
Today$111.99 charged. Full access straight away.
In 12 monthsRenews at $159.99, unless you cancel.

Feel stronger in 60 days — or your money back

Train for two months. If you don't feel the difference, email us and we'll make it right.

— Jesse, Head Coach

Dozens of Movement Athlete members — handstands, bar work, holding their training in the app
A few of the 100,000+ members
As featured in
leAD Sports Accelerator, Forbes, AMC and NewsWatch
WHAT YOU GET
In-depth assessmentto create a personalized training program.
Progressions & guidancea life-long system of gamified progressions across 100+ calisthenics and gymnastics skills.
Daily training programmingthat adapts to you.
Achievements journeytrack progress & unlock harder skills as you go along.
Full workout customisationchoose time, equipment, and skills you want to work on.
…the existing section's own copy — one line updated, devs do not rebuild…
30% off — $111.99 todaycancel anytime

60-day money-back guarantee — email us and we'll make it right

  1. Monthly is not discounted — the full-price ramp is what makes the struck prices mean something.
  2. The renewal price appears three times — hero, timeline, dock — and re-binds when a ramp is selected.
  3. Deadline stated once in the eyebrow, computed from a real campaign end date. No countdown timer.

03 Rules

Five rules. The first is the reason this work exists; the rest prevent the same class of defect returning in a new form.

Rule 1 · non-negotiable

No price literal anywhere in the UI

Per-day, per-week, charged amount, struck-through list price and renewal price all derive from the localised store product at render time. If offerings fail to load, render the retry state — never a fallback price.

Please don’t stub literals during development and rely on removing them later; as far as we can tell that is how the current defect arrived.

Rule 2

A discount must map to a real product

Neither store applies an arbitrary percentage at runtime. Each promo state needs a StoreKit introductory/promotional offer or a Play base-plan offer resolving to a genuine price point. Faked in the UI, the strikethrough becomes a false price claim and the charge won’t match.

Rule 3

A discount and a free trial can’t both be the introductory offer

One introductory offer per subscription group. Both promo states therefore ship without any trial copy — which is why their CTA, timeline and risk-reducer all differ from the full-price state.

Confirm against our own StoreKit configuration before building.

Rule 4

The timeline and dock bind to the selected tier

Select the 3-Month plan and the timeline must read “Day 7 — $49.99 charged” and the dock must re-price. Static text here states a price the user is not about to be charged — the same fault as the hardcoded unit prices.

Rule 5

One percentage per state, applied to both tiers

Never mix rates within a state. A 50% annual beside a 30% quarterly reads as two offers and asks the reader to work out which is better — they won’t.

04 Platform requirements

App Review 3.1.2

Required on the purchase screen

Terms of Use and Privacy Policy links (in the legal row at the end of the scroll), Restore purchases reachable, and the renewal price and term in plain text before purchase.

⚠️ The nav block in the component is a stand-in for the existing coral header. Delete it only if that header already carries a Restore control.

iOS

System type, system sheet

SF Pro via the system stack — never a bundled webfont. The charge itself runs through Apple’s payment sheet, so the CTA’s claim must match the configured offer exactly, or the sheet contradicts the button that opened it.

Android

Two known differences, both intentional

The hero’s teal glow is iOS-only — RN shadows don’t render on Android, which ships the teal border and gradient fill as the selected state. Use react-native-safe-area-context for the dock inset; RN’s built-in SafeAreaView is a no-op on Android.

Trial length

Read it from the product, don’t hardcode it

Pass trialDays from the introductory-offer period. One number drives four strings — the “FREE for N days” title, the dock, the “Day N” timeline labels and the trial-end date. Hardcoding means a change in App Store Connect silently makes the screen lie about the charge date.

05 Every figure

🔴 The on-card SAVE chip measures against list price in the promo states (50% = $80.00, 30% = $48.00) and against paying every 3 months in the full-price state (20% = $39.97). The last column below is always the 3-Month comparison. Per-week on 52 and 13; per-day on 365 and 91; first-year cost is the annual price, or the 3-month price × 4. Every promo price is an exact percentage of list, so each maps to a real store price point. Renewal is always the full list price.

StateTierChargedPer weekPer dayFirst yearSaving vs 3-Month
A · full price
+ 7-day trial
12-Month$159.99$3.08$0.44$159.99$39.97
3-Month$49.99$3.85$0.55$199.96
B · 50% off
no trial
12-Month$79.99$1.54$0.22$79.99$19.97
3-Month$24.99$1.92$0.27$99.96
C · 30% off
no trial
12-Month$111.99$2.15$0.31$111.99$27.97
3-Month$34.99$2.69$0.38$139.96

US price points shown. Every other storefront renders its own localised figures from the same product objects — these are here so you can verify the arithmetic, not to be typed into the UI.

06 Measurements

ElementSizeNotes
Screen390 × 844Status bar 47 · nav 44 · home indicator 34 · usable 719, scrolls
Content gutter24Both sides; nav and dock share it
Headline29 / 1.1Weight 750, tracking −0.028em, sentence case
Sub-headline13 / 1.4rgba(255,255,255,.55)
Proof row56Avatar strip 28px + two-line lockup; 9% hairlines above and below
Hero cardRadius 16 · padding 14/16/15 · teal border 45% + 3px soft ring · ✓ SELECTED chip 18h at top −9
Hero price44 / 800Tabular numerals, tracking −0.04em
Ramp58Radius 12 · padding 0 14 · gap 8 · ✓ chip 17px when selected · two-line right column
Timeline dot11Connector 1.5 wide at x = 4.75, from y = 13 to the next dot
Dock button48Radius 12 · padding 0 22 · weight 900, beside the info block
Section spacing26Between below-fold blocks, with a 8%-white hairline. Within a block: 8–16
Tap targets≥44The whole tier card is the target, not just the radio

07 Tokens

RoleValueWhere
Surface#0E1526Screen ground + dock — matches the existing page below
Cardrgba(255,255,255,.045)Ramps, timeline; 10%-white borders
Teal#00D4AASelected tier, ✓ chips, timeline, seal accents, savings figures
CTA#FFB000Dock button · pressed #F59E0B
CTA text#0A0A0ADark, never white — white on gold fails AA
Body#A8B4CCSub-headline, timeline body
Muted#8593ADTrust microcopy, anchor line
Headercoral gradientThe existing app header — untouched, out of scope

08 Copy

SlotA · full priceB / C · promo
HeadlineGet strong, lean, mobile & pain-free for life — “pain-free” in teal, never breaking mid-word
Sub-headlinewhile learning over 100 calisthenics skills at home
Proof row★★★★★ 4.8 member rating / 100,000+ members
Hero12-Month plan · price locked all year
The full transformation — and your price locked all year.
Try it FREE for {n} days
{zero} due today
then {perWeek}/week · {perDay}/day · billed {price}/year
Free until {today + n}. Cancel before then and pay nothing — no charge at all.
12-Month plan · usually {list}/yr
The full transformation — and your price locked all year.
{pct}% off your first year
{price} due today {list}
that’s {perDay}/day for a full year
Renews at {list} from year two. Cancel anytime.
Ramp3-Month plan / One full phase · {perWeek}/wk · {charged}
DividerSTART ON A SHORTER PLAN
Saving bar{diff} saved in your first year
12 months, paid once — {annualYear}
Every 3 months × 4 — {rampYear} (muted; it is the losing option, not a second offer)
ComparisonA personal trainer runs $60–100 a session · AI coaching apps $149/mo · your plan: {perDay} / day ✓ — the PT figure is a RANGE by design; do not narrow it to a single number
TimelineHOW YOUR FREE TRIAL WORKS
Today — Full access. Nothing to pay.
Day {n−2} — We remind you the trial is ending.
Day {n} — {price} charged, unless you cancel.
WHAT HAPPENS WHEN YOU TAP
Today — {price} charged. Full access straight away.
In {term} — Renews at {list}, unless you cancel.
Guarantee sealYou won’t be charged for 7 days. Full access from today. Cancel any time before your trial ends and you pay nothing at all — no part-charge, no catch. — Jesse, Head CoachFeel stronger in 60 days — or your money back. Train for two months. If you don’t feel the difference, email us and we’ll make it right. — Jesse, Head Coach
🔴 Why the wording differs from the website. Only Apple can refund an in-app purchase — the user requests it at reportaproblem.apple.com, within ~90 days, and Apple decides case by case. So the web’s “one email gets you a full refund, no questions, no forms” is not true in-app and was removed. In the trial state the platform itself guarantees no charge, which is stronger. In the promo states the promise stays but the mechanism is honest — and it commits support to make good by whatever route works (Apple refund request, or compensation on our side).
Members wallA few of the 100,000+ members
PressAS FEATURED IN — leAD Sports Accelerator · Forbes · AMC · NewsWatch
DockFREE for {n} days — {zero} today / cancel anytime → Try free{pct}% off — {price} today / cancel anytime → Get {pct}% off
Trust + legal60-day money-back guarantee (promo states only — nothing is charged at trial start) · Restore purchases · Terms of Use · Privacy Policy

Three strings from the live screen do not come back: the “most effective bodyweight strength training on earth” panel and “you will see results. Guaranteed.” stay exactly as they are — do not edit them. The seven broken strings listed in COPY_FIXES_BELOW_FOLD.md are the only copy changes below the fold.

09 Assets

FileSource sizeWhere it renders
members-strip.png480 × 98Proof row, 28pt tall
members-wall.webp960 × 438After the guarantee seal, full content width
partner-logos.png624 × 71After the wall, 92% width at 62% opacity

All three ship at @1x/@2x/@3x in the package. The guarantee shield is an emoji placeholder — replace with the 34×34 teal SVG via react-native-svg.

10 Acceptance — on device

Scope: the tier block and everything above it, plus seven string fixes below the fold. The testimonial carousel, transformation photos, feature panels and FAQ are unchanged. Prices shown are US; all figures render localised from the store on device.