Mobile Framework Deep Dive

Ionic + Capacitor

Web technology, packaged as a native app. Build with HTML / CSS / JS using React, Vue, or Angular — Capacitor wraps it as a real iOS / Android binary with full access to native APIs.

HTML / CSS / JSWebView-basedReact / Vue / AngularNative APIs via CapacitorHybrid
← Back to Client Side
Quick Facts

At a Glance

Language
Created
2013 · Drifty / Ionic Team
UI Framework
React, Vue, Angular (or vanilla)
Native bridge
Capacitor (modern) / Cordova (legacy)
Targets
iOS, Android, Web (PWA), Electron
Notable users
BBC, Sworkit, Untappd, Sanvello

Basic Concepts

  • Web app inside a native shell: the UI runs in a WebView (WKWebView on iOS, WebView on Android).
  • Capacitor is the modern native bridge — tiny JS API, real native plugins underneath.
  • Ionic Framework provides ~100 UI components that adapt to iOS / Material styling automatically.
  • Standards-based: Web Components everywhere — works with any frontend framework.
  • One codebase ships to iOS, Android, web (PWA), and even desktop via Electron.
Syntax

Taste of Ionic + React

import { useEffect, useState } from "react";
import {
  IonPage, IonHeader, IonToolbar, IonTitle, IonContent,
  IonList, IonItem, IonLabel, IonSpinner,
} from "@ionic/react";

export default function Products() {
  const [products, setProducts] = useState([]);
  const [loading, setLoading]   = useState(true);

  useEffect(() => {
    fetch("/api/products")
      .then(r => r.json())
      .then(d => { setProducts(d); setLoading(false); });
  }, []);

  return (
    <IonPage>
      <IonHeader><IonToolbar><IonTitle>Products</IonTitle></IonToolbar></IonHeader>
      <IonContent>
        {loading ? <IonSpinner /> : (
          <IonList>
            {products.map(p => (
              <IonItem key={p.id}>
                <IonLabel>{p.name} — ${p.price}</IonLabel>
              </IonItem>
            ))}
          </IonList>
        )}
      </IonContent>
    </IonPage>
  );
}
Mechanics

Key Features

Capacitor — The Modern Native Bridge

Capacitor replaced Cordova as Ionic's default native runtime. Native code lives in standard Xcode / Android Studio projects you can edit directly. Plugins (Camera, Geolocation, Filesystem, Push) expose typed JS APIs.

Web Components Everywhere

Ionic UI is built with Stencil (also from the Ionic team) — a Web Components compiler. The same components work in React, Vue, Angular, or vanilla JS without rewrites.

Adaptive Theming

Ionic components automatically render in iOS or Material Design style based on the platform — buttons, transitions, alerts all match the host OS conventions out of the box.

Live Updates & Distribution

Ionic AppFlow offers managed CI/CD plus live JS updates — push fixes to users without an App Store re-review. Comparable to Expo's EAS Update.

Common Capacitor Plugins
PluginPurpose
@capacitor/cameraPhoto capture & gallery picker.
@capacitor/geolocationGPS coordinates.
@capacitor/filesystemRead/write app storage.
@capacitor/push-notificationsFCM / APNs push.
@capacitor/preferencesCross-platform key-value storage.
@capacitor/biometric-authFace ID / Touch ID / fingerprint.
Trade-offs

Strengths & Weaknesses

Strengths
  • Web teams ship mobile apps without learning new languages.
  • One codebase: iOS + Android + PWA + (optionally) Electron.
  • Massive plugin ecosystem; easy to write your own.
  • Capacitor's native projects are real Xcode / Android Studio — no black box.
Weaknesses
  • WebView-based — performance ceiling lower than React Native / Flutter for heavy UIs.
  • Animations and gestures less buttery than fully native frameworks.
  • Smaller hiring pool of "Ionic specialists" (most teams just hire web devs).
  • App size larger due to bundled WebView frameworks (less of an issue with WKWebView).
Where It Shines

Sweet Spots

Content & Form Apps

Healthcare, enterprise LOB, internal tools — UI is mostly lists and forms.

Web → Native Conversions

Wrap an existing PWA as iOS / Android with minimal code changes.

One-team Cross-platform

Web devs ship phone apps without picking up Swift/Kotlin or Dart.

White-label Apps

One codebase, dozens of branded variants for clients.

Continue

Other Mobile Frameworks