About · Stack · Vol. I

An iOS workout tracker that gets out of the way.

Stack is a local-first gym tracker for lifters who train hard but have trouble sticking with logging. It is built around one belief: tracking only works if it never costs you a set.

Most workout apps bury you in setup screens, ad banners, premium paywalls, and account funnels before you ever reach a barbell. Stack inverts that. The first launch drops you straight into a logger you can use one-handed between sets. Your data lives on your device. There is no account to make, no email to verify, no upsell to dismiss.

Download Stack on the App Store

Why Stack exists

The honest reason: the founder kept abandoning his own training logs. Spreadsheets, notebooks, three other gym apps - every one of them broke down somewhere between the locker room and the squat rack. The friction was always the same. Too many taps to start a set. Keyboard popping up to type a single number. App pestering you to upgrade in the middle of a working set. Cloud sync churning on a flaky gym Wi-Fi.

Stack was built to remove every one of those failures. Three-tap working sets. No keyboard during normal logging. No paywall. No tracking. No required network connection. Tracking that does not punish you for showing up.

What's inside

Fast set logging

The logger hub is full-width and has three modes - Weight, Pin (selectorized machines), and Bodyweight. Each mode autofills from your most recent set, so re-entering an exercise prefills the right starting numbers instead of falling back to a generic 45 × 10. The quick-adjust row trades typing for tapping: +5 and +1 on weight, +1 on reps, the keyboard never has to come up. Optional timed sets accept MM:SS.CC formatting with an inline countdown for planks, dead-hangs, or sled drags. Per-entry Setup / Variant tags (Cable Station 1, Plate-Loaded, Smith) preserve a single canonical exercise while keeping each setup's progression separate.

Routines and the train flow

The routine builder treats target sets as a property of the routine, not the workout - so re-running a routine never asks the same question twice. Exercise rows are fully tappable across the whole row. Marking an exercise as Done auto-returns to the workout list. Undo keeps you on the detail screen so you can fix a typo without losing your place. A bottom Active Workout banner follows you to other tabs in case you wander off into Progress or Settings mid-session, and one tap drops you back into Train.

Weekly muscle coverage

This is the feature most other trackers don't have. Stack maps each set you log to the muscle regions it actually trains - upper chest, posterior delts, long-head triceps, mid traps - not just the broad muscle group. The weekly view compares your group totals against minimum-volume landmarks so imbalances stop hiding. If your push days are hammering anterior delts but skipping the rear, you will see it in cream and forest, not buried in a CSV.

Personal records, found for you

Every set is checked against your history. New records - top weight, top set volume, top single-rep estimate - surface automatically with a quiet badge. There is no leaderboard, no confetti animation, no streak guilt. The PR is a fact, not a status update.

Progression charts

Per-exercise dual-axis charts plot weight against volume across configurable ranges (4 weeks, 12 weeks, 6 months, all-time). The chart is the answer to "is what I'm doing actually working?" - which is the only question programming should be asking. First-launch and empty-filter views ship with explicit empty-state copy so the screen is never just blank.

Live Activity and Dynamic Island

Rest timer is the hero. The Dynamic Island shows the countdown in compact and minimal states, deduped against music and other Live Activities so the timer is always the thing you see. The timer survives navigation, input, and force-foregrounding - only manual stop, app force-close, or starting the next set resets it.

Local-first, with optional iCloud

Every set is stored on-device by default via SwiftData. Sign in with Apple unlocks optional iCloud sync across your own devices using a CloudKit V6 schema with optional to-many relationships. If sync hits an actionable failure, a root-level banner surfaces the error instead of leaving you in a fake-synced state. JSON export and import (schema v4, includes built routines) is always available - your data is never trapped.

Themes and visual identity

Stack ships with a 34-preset theme catalog organized into six families (Classic, Sweet, Bright, and three more), all powered by the shared DesignKit Swift Package. The default identity is "Balanced Luxury" - warm cream in light mode, charcoal in dark, with forest as the lead accent. No randomly chosen colors anywhere. Personality comes from layout and tone, not styling chaos.

Who Stack is for

Stack is probably not for: complete beginners who need a coached program, group-class workouts where logging is rep-by-rep voice, or people looking for a social feed.

The privacy posture

Stack collects no analytics on your training. There are no third-party SDKs reporting back to ad networks. There is no server we operate that holds your sets. The optional iCloud sync uses Apple's CloudKit running under your own Apple ID - Apple sees encrypted blobs, we see nothing. Apple Health writes are opt-in and one-way (Stack writes workouts and reps; it does not read your health data). Read the full Privacy Policy for specifics.

Part of an ecosystem

Stack is one app in a broader local-first ecosystem powered by DesignKit - a shared Swift Package of tokens, components, themes, and chart styles. Sibling apps (HabitTracker for binary habits, PantryPlanner for forecasting and meal planning) share the same Balanced Luxury identity, the same accessibility floor, and the same privacy posture. Build one design language; use it everywhere.

Frequently asked questions

Is Stack free?

Yes. Stack is free to download on the App Store with no in-app purchases or subscriptions in version 1.0.

Does Stack work without an account?

Yes. Stack is local-first by default - every set you log is stored on-device via SwiftData. Sign in with Apple is optional and only enables iCloud sync across your own devices.

Does Stack track me or sell my data?

No. Stack contains no third-party analytics, no ad SDKs, and no telemetry on your training. There are no servers we own that store your sets.

Can I export my data?

Yes. Stack exports a versioned JSON file containing your routines, sessions, sets, and personal records. The same file can be re-imported on another device or after a fresh install.

Does Stack support cardio, bodyweight, and machine work?

Yes. The logger has Weight, Pin (selectorized), and Bodyweight modes, plus optional timed sets in MM:SS.CC. Cardio entries support distance and incline. Plate-loaded machines support a "No bar" mode and an initial-resistance offset.

What devices does Stack run on?

iPhone running iOS 17 or later. Live Activity and Dynamic Island features require a compatible iPhone model. iPad layout is supported.

How do I get help?

Email support. We read everything. If you're reporting a bug, mention your iOS version and what you were doing when it happened.

Download Stack on the App Store See what shipped →