Skip to content
Swift IdeasStart a build
Swift Ideas
Start a build

iOS & Android apps

iOS and Android apps with the release process built in.

We build Expo and React Native apps that share business rules and design settings with your web product, take in-app payments through RevenueCat, and ship through Expo's build service. Backend, sync and AI features are built by the same two people, so nothing is lost between three contractors. Every release passes a written gate before it reaches a store.

What clients arrive with

  • We have a web product and customers keep asking for the app.
  • It works on the simulator and crashes on real phones.
  • In-app purchases and web subscriptions disagree about who has paid.
  • Every release is a nervous afternoon and nobody is sure what was tested.
  • Our people work without signal and lose what they entered.

What you get

One codebase for iOS and Android
Expo and React Native, with native modules where the platform needs them. Screens, navigation and gestures are designed for each platform's conventions, not scaled-down web pages.
Shared packages with your web app
Types, validation, business logic and design tokens live in a monorepo that both apps import. A rule changes in one place, and both apps pick it up in the next build.
Payments that agree across platforms
RevenueCat for App Store and Google Play purchases, Stripe on the web, and one server-side entitlement model with webhooks from both, so a user is never paid on one device and locked out on another.
Offline-first data and sync
A local store the app reads first, with queued writes that sync when a connection returns, for people who work in basements, fields and plant rooms.
AI features on the phone
Camera and screenshot capture sent to a server-side extraction pipeline with validation and cost logging, and results shown back on the device for review.
Release engineering
EAS builds, TestFlight and the Play internal track, a preflight script that runs tests, type checks, Expo Doctor and exports for every platform, and an evidence file in which a missing row blocks the release.
Crash and product telemetry
Sentry for crashes and PostHog for product events, set up before launch so the first real users produce useful data.

How the work runs

  1. Choose the platform on purpose

    Expo and React Native for most apps; a game engine when the product is a game. We decide from what the app must do on the device, not from habit.

  2. Share the core

    Types, rules and tokens move into shared packages first, so the app starts from the same truth as your web product.

  3. Build on real devices

    Features are exercised through real gestures on simulators and physical phones, not only in unit tests, with performance watched on older hardware.

  4. Gate, then submit

    The preflight and evidence checks must pass before a store build. Submissions go to TestFlight and the Play internal track first; public release is a separate, deliberate step.

How engagements start

  • Prototype to production in 4–8 weeks for a focused first release on both stores.
  • Web-to-app projects start from your existing product, reusing its logic through shared packages.
  • Retained releases afterwards: SDK upgrades, store policy changes and new features on a steady cadence.

Built with

  • Expo
  • React Native
  • TypeScript
  • EAS Build and Submit
  • RevenueCat
  • Stripe
  • Supabase (Postgres, Auth, Realtime, Edge Functions)
  • Sentry
  • PostHog
  • TestFlight
  • Jest
  • Maestro

Where each number comes from

Each figure names where it comes from.

commits in the Expo app, July to September 2026
305
Source: Astro Golf: the Expo app's commit history, all branches
release certification gates a script checks before Astro Golf can ship
52
Source: Astro Golf: our release test record, 30 July 2026
automated test files, plus 15 database test suites
269
Source: Astro Golf: counted in the project's test suite, latest development version

The work behind it

Questions, answered

Something else on your mind? hello@swiftideas.com

Native or cross-platform?

Cross-platform with Expo and React Native for most business apps: one codebase, native performance for typical screens, and code shared with the web. We recommend fully native or a game engine when the app depends on heavy graphics or platform-specific APIs.

How do you handle subscriptions on web and mobile together?

Store purchases go through RevenueCat, web payments through Stripe, and both write to one entitlement record on the server. Every paid feature checks that record, whichever platform the user paid on.

Do you use over-the-air updates?

We decide per app. For Astro Golf's first release we disabled remote updates, so any change to executable code ships only in a new signed store build. For other apps, controlled over-the-air updates for JavaScript fixes are a reasonable choice.

What if the App Store rejects the app?

We plan for review from the start: account deletion, privacy labels, purchase restore and sign-in rules are on the release checklist. If a review raises something new, we fix it and resubmit as part of the project.

Can you take over an existing React Native app?

Yes. We start with an audit of SDK version, dependencies and crash data, then upgrade in small, tested steps rather than a single large rewrite.

Bring the idea. We’ll build all of it.

Tell us what you want to exist and who it is for. The two people who reply are the two people who will build it.