Loading...
Loading...
Guides the agent through Ionic Framework development with React — project structure, React-specific Ionic components, IonReactRouter and navigation patterns, Ionic lifecycle hooks (useIonViewWillEnter, useIonViewDidEnter, useIonViewWillLeave, useIonViewDidLeave), state management integration, and React-specific best practices for Ionic apps. Do not use for plain Capacitor React apps without Ionic (use capacitor-react), Ionic with Angular or Vue, creating a new Ionic app (use ionic-app-creation), upgrading Ionic to a newer version (use ionic-app-upgrades), or general Ionic component usage without React-specific context (use ionic-app-development).
npx skill4agent add capawesome-team/skills ionic-react@ionic/reactpackage.json@ionic/react@ionic/react-routerreact@capacitor/coreandroid/ios/@ionic/reactpackage.jsonreactpackage.json@capacitor/corepackage.jsontsconfig.json.tsx@ionic/react-routerreact-router-dompackage.jsonpackage.jsonredux@reduxjs/toolkitzustandjotai@tanstack/react-queryandroid/ios/vite.config.tsangular.jsonwebpack.config.jsproject-root/
├── android/ # Android native project (Capacitor)
├── ios/ # iOS native project (Capacitor)
├── public/
├── src/
│ ├── components/ # Reusable UI components
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components (one per route)
│ ├── services/ # Service modules for API and native calls
│ ├── context/ # React context providers
│ ├── theme/
│ │ └── variables.css # Ionic CSS custom properties
│ ├── App.tsx # Root component with IonReactRouter
│ └── main.tsx # Entry point with setupIonicReact()
├── capacitor.config.ts # Capacitor configuration
├── ionic.config.json # Ionic CLI configuration
├── package.json
├── tsconfig.json
└── vite.config.ts # Or other bundler configsetupIonicReact()src/main.tsxsrc/index.tsximport { setupIonicReact } from '@ionic/react';
setupIonicReact();setupIonicReact()setupIonicReact({
mode: 'ios', // Force iOS mode on all platforms ('ios' | 'md')
rippleEffect: false, // Disable Material Design ripple effect
animated: true, // Enable/disable all animations
});setupIonicReact()references/routing.mdIonReactRouterIonRouterOutletIonTabsIonMenuuseIonRouterIonReactRouterBrowserRouterIonRouterOutletcomponentRouterenderchildrenIonRouterOutletuseIonRouterreferences/lifecycle.mduseEffect| Hook | Use for |
|---|---|
| Refresh data before the page becomes visible |
| Start animations or focus inputs after page is visible |
| Pause media, save draft state |
| Cleanup after page is fully hidden |
componentRouteIonRouterOutletIonPagereferences/hooks.md| Hook | Purpose |
|---|---|
| Present alert dialogs |
| Show toast notifications |
| Present action sheets |
| Show/dismiss loading indicators |
| Present modals programmatically |
| Present popovers programmatically |
| Present picker dialogs |
| Navigate with Ionic animations |
references/components.mdIonPageisOpenIonRefresherIonInfiniteScrollIonPageonIonInputonIonChangee.detail.valuee.detail.checkedisOpenuseIonModaluseIonAlertreferences/state-management.mduseIonViewWillEnterIonReactRouterProviderQueryClientProvideruseStateuseReducernpm run build
npx cap sync
npx cap run android
npx cap run iosionic serveionic cap run android --livereload --external
ionic cap run ios --livereload --externalIonPagecomponentRouteIonRouterOutletrenderchildrenIonReactRouterBrowserRoutercomponentrenderchildrenIonRouterOutletIonReactRouterIonTabsuseIonViewWillEnteruseEffect[]IonRouterOutletIonTabsIonRouterOutletsetupIonicReactsetupIonicReact()ReactDOM.createRoot()ReactDOM.render()src/App.tsxsrc/main.tsxIonBackButtonIonBackButtondefaultHrefonIonInputIonInputIonTextareaonChangeonIonChangeIonSelectIonToggleIonCheckboxIonRangee.detail.valueIonContentIonHeaderIonToolbaruseIonRouterIonReactRouterIonReactRoutersrc/App.tsxsrc/main.tsxvariables.cssionic-app-developmentionic-app-creationcapacitor-reactionic-app-upgradescapacitor-plugins