App development for startups: iOS, Android and web

The journey

How does a startup's app come to life?

In five chapters: idea, design, build, app store release and updates. The last one never really ends, and that's how it should be.

  1. Idea

    Before any screen there's a question: who opens the app, how often, and to do what. We pin down the core flow and what stays out of version one, because an app with everything in it never ships. If the idea still needs testing, we start with validation.

  2. Design

    Wireframes, then a clickable prototype you try on a real phone, then the final interface with its design system. We follow iOS and Android conventions wherever people expect them: navigation, gestures, permission prompts. That's our product design and UX work.

  3. Build

    We pick the technology to fit the product (the table further down explains how). App and backend are built together: sign-in, data, push notifications, in-app purchases, analytics. Every version goes through automated tests and a test build on the team's own phones.

  4. App store release

    Developer accounts, store listings, screenshots, privacy details, signed builds, review. Apple and Google check every app before it goes live, and preparing for their rules saves you rounds of rejection.

  5. Updates

    After launch the real data arrives: crashes, reviews, features nobody touches. We ship regular updates, keep up with new iOS and Android releases, and keep app and web in step, since with Capacitor they share one codebase.

Technology

Native, React Native, Flutter or Capacitor: which should you pick?

It depends on what already exists and what the app has to do. If you already have a web app or a SaaS, Capacitor is often the shortest route; if the app lives on hardware and graphics, go native.

Four ways to build an app and when to choose each
ApproachHow it worksChoose it whenWatch out for
NativeTwo separate apps, Swift for iOS and Kotlin for Android, using Apple's and Google's own toolsDeep system features, graphics and performance pushed to the limit, augmented realityTwo codebases to build and maintain
React NativeJavaScript or TypeScript driving native interface componentsApps with a native feel and a team that already knows ReactNative modules to write for less common features
FlutterThe Dart language and its own rendering engine, identical on every platformHighly custom interfaces that must look the same everywhereLittle code shared with an existing website or web app
CapacitorYour web app runs inside a native shell, with plugins for push, purchases and the cameraProducts that already live on the web, like a SaaS: one codebase for web, iOS and AndroidComplex animations and gestures need care; some features need plugins

Athleex runs on Capacitor: the web platform and the iOS and Android apps share one codebase. The full story is in the Athleex case study.

App stores

How do you publish an app on the App Store and Google Play?

With a developer account for each store, a complete listing and a signed build that passes review. The route is the same for every app; what changes are the details that get it rejected.

A frosted-glass smartphone floating in mid-air with lilac reflections
  1. Developer accounts

    The Apple Developer Program and Google Play Console, registered to your company, so the app and its reviews stay yours.

  2. Store listing

    Name, description, screenshots, category, age rating and the disclosure of what data the app collects.

  3. Builds and testing

    Signed builds tested by real people: TestFlight on iOS, internal and closed testing on Google Play, which some accounts must complete before going live.

  4. Review

    Apple and Google check content, payments, privacy and stability. If they reject, they cite the rule: you fix it and resubmit.

  5. Release

    A manual or staged roll-out, then crash reports and reviews watched closely over the first days.

First-hand

What did publishing Athleex teach us?

Three lessons from the Athleex iOS app, each one learned from a real problem.

Guideline 3.1.1

The problem

Apple rejected a version over its in-app purchase rules (App Review Guideline 3.1.1).

What we did

We added in-app purchases with StoreKit 2 and the version was approved. Decide how people pay inside the app before your first review.

Push, three ways

The problem

Push notifications weren't arriving on iOS, for three causes independent of each other: configuration, permissions and delivery.

What we did

We checked them one at a time, because fixing one doesn't fix the others. We now test push cause by cause.

Currency and Private Relay

The problem

With iCloud Private Relay, a user's country can show up as somewhere else.

What we did

The currency shown has to be decided with judgement, not from the IP address alone: pricing is a product decision, not a technical detail.

Read the full case study

Questions about app development

How much does it cost to build an app for a startup?

Mostly it depends on how many platforms you need, how many phone features (push, payments, camera) and the backend behind it. We don't publish a price list: after a first meeting we give you an estimate against a written scope. The main cost drivers are covered in pricing and timelines.

App or web app: which is better?

If people will look for you in the app stores, or you need deep phone features, build an app. If the product is mostly used at work or on a laptop, a web app or PWA costs less and updates instantly.

React Native or Flutter for a startup?

Both produce iOS and Android apps from one codebase. React Native suits teams that know React or already have a React web product; Flutter suits highly custom interfaces that must look identical everywhere. If your product is already a web app, we look at Capacitor first.

Who publishes the app to the stores?

We do, using your company's developer accounts, so the app, listings and reviews stay yours. We prepare the listing, screenshots and privacy details and see the review through to approval.

Can you sell subscriptions inside the app?

Yes, through Apple's and Google's in-app purchases. On iOS, Apple generally requires them for unlocking digital features or content inside the app: on Athleex we added them with StoreKit 2 after a rejected review. Make that call before you submit.

Further reading

Got an app to bring to life, or to get into the stores?

We reply within one business day.

Let's talk