Round 2 of App Review: submitted, queued, waiting. ๐ค
Meanwhile we're building a Meta Muse connector for isofit. Say "log my workout" and it lands as real sets, reps and weight. Your streak counts it, and Muse tells you what you've been skipping.
#Shipaton#buildinpublic
For comparison hereโs the same outputs from @isofit_app
Body graph with volume heat map across 7d-30d-90d-all time
+ Custom Muay Thai training program shown but Atlas is a master at strength, conditioning, and recovery programs too. #muse#workoutapp
While we're in queue in app review, we've been updating the website and optimizing it for SEO, desktop and mobile UI, and llm readability. Here's what the landing page looks like, + our founder's story.
Link in bio for more. #Shipaton#BuildinPublic@RevenueCat
Building @Isofit in public for Shipaton. Now the website finally says who makes it.
For a month the About page said "a solo developer." Now it has my name, my face, and a letter: 15 years of strength training, pages of workouts in the Notes app I never reopened, a gym deal that fell through, eight years as a captain in New York fine dining, and the line that's true of the whole project: most of Isofit was built during nap time.
Design changes that came with it:
โ the founder comes first on About, on phones too
โ one accent color per job: blue for logging, terra for Atlas, forest for privacy and buttons
โ the waitlist asks for an email; the name is optional now
@Isofit is a workout logger for iPhone. iOS launch planned October 1.
@RevenueCat #Shipaton #BuildInPublic #iOSDev
Finally got reviewed and came out with a rejection on the first round. Weโre running back in the kitchen and getting things on stoves to try and make the revisions in time
#shipaton#buildinpublic
@webbifylabs We just requested an expedited review, thanks for the suggestion. And congrats on your successful review โ are you submitting to #shipaton ?
The CI bill isn't a fixed cost, it's a function of how often you push. Turns out when you go from "one dev" to "ten parallel agent branches," that function gets expensive fast. Fix: concurrency groups + cancel-in-progress + path-filter the expensive runner. #buildinpublic
How we torched a month of CI minutes in 48h: workflow set to on: [push, pull_request], no concurrency group, no path filters, and the iOS job on a macOS runner โ which bills at 10ร Linux. Ten agent branches pushing all day. Every push = a full xcodebuild. #Shipaton
This week in #Shipaton: 1 App Store rejection, 1 platform cut (cause of rejection), 12 privacy data types declared, 4 onboarding bugs squashed, 1 avatar moderation system, 2 builds pinned. Shipping an app is 20% features and 80% everything around them. Build 9 is in.
Accidentally started the project with TARGETED_DEVICE_FAMILY = "1,2"
declaring support for iPad. This slipped through all our audits until App review submission. Well there goes a whole build number for TARGETED_DEVICE_FAMILY = "1"
#Shipaton
Things breaking in the final moments as we're getting ready to cut TestFlight build (7) and submit to App Review:
- Reset password link
- Body graph heat projection math
- Atlas chat missing a maxCompletionTokens
...All while trying to work on screenshots
#shipaton#buildinpublic
The flow ends at a paywall we wrote ourselves in SwiftUI:
Yearly/Monthly toggle, billed price first, a Free card so "no" is a real option. RevenueCat handles the purchases, restores and entitlements behind it.
Apple changed paywall guidelines recently so we had to make pivots
This week was onboarding v3 โ the first ten minutes of the app, rebuilt
- one question per page, always the last sentence on the page
- the demo is step one: you feel a session before we ask you anything
#shipaton@RevenueCat#buildinpublic