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.
← Back to Client Sideimport { 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> ); }
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.
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.
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.
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.
| Plugin | Purpose |
|---|---|
| @capacitor/camera | Photo capture & gallery picker. |
| @capacitor/geolocation | GPS coordinates. |
| @capacitor/filesystem | Read/write app storage. |
| @capacitor/push-notifications | FCM / APNs push. |
| @capacitor/preferences | Cross-platform key-value storage. |
| @capacitor/biometric-auth | Face ID / Touch ID / fingerprint. |
Healthcare, enterprise LOB, internal tools — UI is mostly lists and forms.
Wrap an existing PWA as iOS / Android with minimal code changes.
Web devs ship phone apps without picking up Swift/Kotlin or Dart.
One codebase, dozens of branded variants for clients.