All articles

Development

One Codebase, Three Platforms: Shipping with Ionic, Angular and Capacitor

Raj · Oct 6, 2026 · 5 min read

How we ship the same app to iPhone, Android and the web from one Angular codebase, and where native code still matters.

Building separate native apps for iOS and Android doubles the work for every feature and every fix. For most business and consumer apps, that cost isn't justified. For Splitnor, we shipped iPhone, Android and web from a single codebase, and this is how.

The stack

  • Angular 20 with standalone components and signals for application logic and state.
  • Ionic 8 components, which adapt their look to iOS and Android automatically.
  • Capacitor to package the app natively and reach device features: push notifications, haptics, sharing, the status bar and the file system.
  • Tailwind CSS and component-scoped styles for a consistent design, including a full dark theme.

Environments as build flavors

A real app needs a development build and a production build that can sit side by side on the same phone. We use Android product flavors and Xcode schemes with different app IDs, switched by a single environment variable. Each flavor points at its own backend and has its own app name, so testers can never confuse "Splitnor Dev" with the real thing.

Where native still matters

A shared codebase doesn't mean ignoring the platforms. A few details only work if you handle them natively:

  • Push notifications: APNs on iOS and Firebase Cloud Messaging on Android, behind a single push service. Android also needs its own monochrome status-bar icon.
  • Deep links: Universal Links and App Links so invite links open the app straight into the right group.
  • Saved passwords: the right autofill hints so iOS Keychain and Google Password Manager offer to save and fill credentials.
  • Navigation feel: swipe-back gestures and resetting the navigation stack after sign-in, so users can't swipe back into the login screens.

The payoff

Most features are written once and released to every platform the same day. Bugs are fixed once. The web build doubles as a fast way to test and to capture store screenshots. When a feature does need native code, Capacitor plugins keep that code small and isolated.

If you're planning a mobile app and wondering whether you need two native teams, the answer is often no. Talk to us about what fits your product.

Have a project in mind?

Tell us what you want to build. We'll reply by email to arrange a short call.