Ionic React, Vue, Angular

@ionic/react, @ionic/vue and @ionic/angular Compared

All three wrap the same @ionic/core 9.0.5 components and render identical markup. They differ in how they fit each framework's routing and lifecycle:

The three Ionic Framework 20,753 bindings in version 9
@ionic/react @ionic/vue @ionic/angular
Framework versions React 18 7,897 or 19 Vue 3.5 5,482 or later Angular 18 42,088 to 22
Router React Router 6 139,386 via @ionic/react-router Vue Router 5 via @ionic/vue-router Angular Router
Page outlet IonReactRouter + IonRouterOutlet <ion-router-outlet> <ion-router-outlet>
Page lifecycle useIonViewWillEnter() hooks onIonViewWillEnter() ionViewWillEnter() methods
Overlays useIonToast(), useIonModal() hooks toastController injected ToastController
Starters 5, Vite 25,978 4, Vite 5, Angular CLI (modules or standalone)

Learn the lifecycle row. Ionic keeps pages in the DOM after you navigate away, so a mount effect runs once, while ionViewWillEnter and its siblings fire on every visit. Refreshing data in useEffect is the classic Ionic React bug: the list goes stale after the first visit.