DEV Community

Cover image for I was overweight. So I built an iOS fitness app with SwiftUI.
Elu Gonzalez
Elu Gonzalez

Posted on

I was overweight. So I built an iOS fitness app with SwiftUI.

I was overweight and every fitness app felt like it was made for gym bros.

So I built my own.

I'm Elu. Software dev from Barcelona. 12+ years orbiting a computer. I've managed teams, shipped products, done consulting for companies across Europe.

But I couldn't manage my own body.

I gained weight. A lot. The kind where you avoid mirrors and photos. I knew I needed to move more but every time I opened a fitness app it felt like they were designed for people who were already fit.

Everything was: "grab your dumbbells", "adjust the bench", "set up your resistance bands".

I had none of that. I had a floor and 3 minutes before my next call.

The real problem isn't exercise. It's consistency.

I tried bodyweight training on my own. Push-ups, squats, planks. Stupid simple. And it worked.

But I'd train for 2 weeks, miss a day, feel guilty, and quit. Every. Single. Time.

That cycle is the real enemy. So when I started building RazFit, I obsessed over solving this. I designed 32 unlockable milestones — not random badges, but a deliberate path to keep you training consistently for a full year.

Because if you can stick with it for a year, you won't need the app to motivate you anymore.

Why native iOS (and why I'd do it again)

Most fitness apps on iOS are clearly not built for iOS. Laggy transitions. Non-native UI. You can feel when an app was built somewhere else and ported over.

I went the opposite route. Here's the stack:

  • SwiftUI 6 — 100% declarative UI, no UIKit bridges
  • iOS 18+ — leveraging the latest APIs without backward compatibility baggage
  • Tested on every iPhone and iPad — not just simulators, real devices
  • Astro for the website (razfit.app), hosted on Cloudflare Pages
  • Country-specific pricing using the Big Mac Index

I know going iOS-only limits my market. I don't care. I'd rather build something that feels incredible on one platform than something that feels mediocre on two.

What RazFit actually does

  • Workouts from 1 to 10 minutes (yes, even 1 minute counts)
  • 30 bodyweight exercises, zero equipment
  • 32 achievement milestones to keep you going for a full year
  • 2 AI coaches (Orion & Lyssa) with video demos for every exercise
  • 6 languages (EN, ES, DE, PT, FR, IT)
  • Calorie tracking built in
  • 3-day free trial, no credit card needed

Lessons learned building this

1. The hardest part wasn't the code. It was deciding what NOT to build. I cut 60% of the features I originally planned. The app is better for it.

2. SwiftUI is ready. People still debate this. After shipping a real product with it, I can say: for a new app targeting iOS 18+, SwiftUI is not just ready — it's the right choice.

3. Gamification is underrated. The achievement system drives more retention than any feature. People come back for the badges more than for the workouts themselves.

4. Pricing is an unsolved problem. I'm using the Big Mac Index to set country-specific prices. €29.99/year in Spain might need to be $9.99 in India. Still iterating on this.

What's next

I'm building this in public. Solo founder, my fiancée helping with marketing. No funding, no employees. Just shipping.

I'd love feedback from this community:

  • If you've shipped an iOS app — what would you do differently with SwiftUI?
  • If you struggle with fitness consistency — what would make you actually stick with an app?
  • If you see something that sucks — tell me. I can take it.

razfit.app
→ App Store: RazFit

Hit me up on X: @elugon10

Top comments (0)