ionic-design
Skill75 starsChanged 32 days agoMITView on GitHub
Builds and reviews Ionic Framework UI in Capacitor apps (Ionic 9 current, Ionic 8 still common) - page structure (`ion-header`/`ion-content`/`ion-footer`), lists, modern form syntax (`label`/`labelPlacement` on `ion-input`/`ion-select`), sheet modals, tabs + `ion-router-outlet`, CSS variable theming, dark palettes (`palettes/dark.system.css`, `.ion-palette-dark`), iOS vs MD mode, and Ionic 8 -> 9 breaking changes (React Router 6, Vue Router 5, Angular 18-22 zoneless, removed `ion-picker-legacy`, boolean `autocorrect`, `npx @ionic/migrate`). Use when writing Ionic components, theming an Ionic app, fixing platform-mode styling, or upgrading @ionic/react, @ionic/vue, @ionic/angular. Do not use for Konsta UI (konsta-ui), Tailwind setup (tailwind-capacitor), raw safe-area CSS (safe-area-handling), keyboard resize (capacitor-keyboard), or Ionic Appflow/Enterprise migrations (ionic-appflow-migration, ionic-enterprise-sdk-migration).
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Aver005/agent-skillstheir own version, first seen Feb 14, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Aver005/agent-skills★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository56 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- capacitor-accessibilitySkill
- capacitor-app-intentsSkill
- capacitor-apple-review-preflightSkill
- capacitor-app-storeSkill
- capacitor-app-upgradesSkill
- capacitor-app-upgrade-v4-to-v5Skill
- capacitor-app-upgrade-v5-to-v6Skill
- capacitor-app-upgrade-v6-to-v7Skill
- capacitor-app-upgrade-v7-to-v8Skill
- capacitor-app-upgrade-v8-to-v9Skill
- capacitor-best-practicesSkill
- capacitor-ci-cdSkill
- capacitor-deep-linkingSkill
- capacitor-ios-resizabilitySkill
- capacitor-ios-security-hardeningSkill
- capacitor-keyboardSkill
- capacitor-mcpSkill
- capacitor-offline-firstSkill
- capacitor-performanceSkill
- capacitor-plugin-spm-supportSkill
- capacitor-pluginsSkill
- capacitor-plugin-upgradesSkill
- capacitor-plugin-upgrade-v4-to-v5Skill
- capacitor-plugin-upgrade-v5-to-v6Skill
- capacitor-plugin-upgrade-v6-to-v7Skill
- capacitor-plugin-upgrade-v7-to-v8Skill
- capacitor-plugin-upgrade-v8-to-v9Skill
- capacitor-push-notificationsSkill
- capacitor-securitySkill
- capacitor-splash-screenSkill
- capacitor-testingSkill
- capacitor-uiscene-migrationSkill
- capawesome-live-update-migrationSkill
- capgo-cli-usageSkill
- capgo-cloudSkill
- capgo-live-updatesSkill
- capgo-native-buildsSkill
- capgo-organization-managementSkill
- capgo-release-managementSkill
- capgo-release-workflowsSkill
- cocoapods-to-spmSkill
- cordova-to-capacitorSkill
- debugging-capacitorSkill
- framework-to-capacitorSkill
- ionic-appflow-migrationSkill
- ionic-enterprise-sdk-migrationSkill
- ios-android-logsSkill
- konsta-uiSkill
- safe-area-handlingSkill
- skill-creatorSkill
- sqlite-to-fast-sqlSkill
- subscription-app-revenueSkill
- tailwind-capacitorSkill
- webapp-to-capacitorSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 1 is distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 32
Check installed versions first: npm ls @ionic/core @ionic/react @ionic/vue @ionic/angular.
- Distinctive: line 42
Only load a reference when its topic is in play.
- Very specific: line 46
Every routed page = IonPage > IonHeader + IonContent (+ optional IonFooter).
- Very specific: line 48
Use ion-router-outlet (IonRouterOutlet, IonTabs) for URL routing.
- Very specific: line 58
Run both modes in the browser: append ?ionic:mode=ios and ?ionic:mode=md to the dev URL.
- Very specific: line 61
After upgrade: grep -rn "ion-picker-legacy\|pickerController\|useIonPicker\|@ionic/angular/standalone\|autocorrect=\"off\"" src/ returns …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Ionic Framework Design
When to Use
TRIGGER when:
- Writing or reviewing
Ion*/ion-*components in a Capacitor app - Theming:
--ion-color-*, dark mode, high contrast, per-platform styles - iOS vs Material Design mode looks wrong, or
modeoverrides misbehave - Upgrading Ionic 7/8 -> 9, or errors after
npm i @ionic/*@latest - Choosing Ionic vs another UI kit for a new Capacitor app
Do not use:
- Konsta UI components:
konsta-ui - Tailwind v4 install / config:
tailwind-capacitor - Notch / system bar padding outside Ionic:
safe-area-handling - Keyboard covering inputs:
capacitor-keyboard(Ionic apps useresize: 'ionic') - Leaving Appflow / Ionic Enterprise plugins:
ionic-appflow-migration,ionic-enterprise-sdk-migration
Versions (October 2026)
| Package | Current | Notes |
@ionic/core, @ionic/react, @ionic/vue, @ionic/angular | 9.x (latest) | 8.x on v8-lts tag |
ionicons | 8.x | |
| Ionic 9 minimums | Capacitor 7+, iOS 16+, Android Chromium 89+, Angular 18-22, React 18/19 + React Router 6.4+, Vue 3.5 + vue-router 5, TypeScript 5.4+ |
Check installed versions first: npm ls @ionic/core @ionic/react @ionic/vue @ionic/angular. Write code for the installed major; do not mix v8 and v9 APIs.
Workflow
- Inspect framework, Ionic major, router version, global CSS imports,
setupIonicReact/IonicVue/provideIonicAngularconfig,capacitor.configKeyboard.resize. - Upgrading? Load references/ionic-9-migration.md; run
npx @ionic/migratein preview first, report findings, then apply. - Components: references/components.md for page shell, lists, forms, overlays, tabs.
- Theming: references/theming.md for colors, dark/high-contrast palettes, mode-specific CSS, shadow parts.
- Verify in both modes and on devices (below).
Only load a reference when its topic is in play.
Rules that prevent most Ionic bugs
- Every routed page =
IonPage>IonHeader+IonContent(+ optionalIonFooter). MissingIonPagebreaks transitions and lifecycle hooks. - Scroll lives in
ion-content. Do not makebodyor a wrapperdivscroll; useIonContentscrollToTop()/getScrollElement(). - Use
ion-router-outlet(IonRouterOutlet,IonTabs) for URL routing. In Ionic 9ion-navno longer integrates withion-router; keep it for local URL-less stacks inside a page. - Safe areas are handled through
--ion-safe-area-top|right|bottom|left(defaultenv()); do not add body padding on top. Requiresviewport-fit=cover. - Forms: put
label+labelPlacementon the control itself (<IonInput label="Email" labelPlacement="floating" />). Legacy<IonItem><IonLabel/><IonInput/></IonItem>labeling was removed in Ionic 8. - Overlays: prefer inline
<IonModal isOpen>/triggeror hooks (useIonModal,modalController) consistently; always handledidDismissto reset state. - Platform: style via
.ios/.mdclasses onhtmlormodeCSS selectors; useisPlatform('ios')only for behavior, nevernavigator.userAgent. - Icons: import only used icons (
import { heart } from 'ionicons/icons') and passicon={heart}; string names needaddIconsregistration in standalone/bundled builds.
Verification
- Build and sync:
npm run build && npx cap sync. - Run both modes in the browser: append
?ionic:mode=iosand?ionic:mode=mdto the dev URL; check headers, toolbars, lists, buttons. - Toggle OS dark mode (or add
ion-palette-darkto<html>if using the class palette); check contrast of custom colors. - Device check: iPhone with Dynamic Island + Android 15/16 gesture nav for header/tab bar insets; open keyboard on a form page.
- After upgrade:
grep -rn "ion-picker-legacy\|pickerController\|useIonPicker\|@ionic/angular/standalone\|autocorrect=\"off\"" src/returns nothing;npx tsc --noEmitpasses.
Error Handling
| Error / symptom | Cause | Fix |
Package path ./dist/... is not exported from package (webpack) / ERR_PACKAGE_PATH_NOT_EXPORTED (Node) for @ionic/core | Ionic 9 exports map; deep import | Import from @ionic/core, @ionic/core/components, @ionic/core/components/ion-*.js, @ionic/core/loader, @ionic/core/css/*.css |
Import errors or migrate warnings for @ionic/angular/standalone (Ionic 9) | Standalone imports moved | Import from @ionic/angular; lazy APIs from @ionic/angular/lazy |
React: Property 'component' does not exist on Route / IonRoute | Ionic 9 requires React Router 6 | element={<Page />}, Navigate instead of Redirect, useNavigate instead of useHistory |
| Autocorrect turned ON after upgrade | autocorrect="off" string is truthy in Ionic 9 | Remove the attribute or bind false |
ionChange no longer fires on re-selecting same option | Ionic 9 fires only on value change | Use ionDismiss for dismissal |
| Sheet modal handle now focusable / cycles breakpoints | Ionic 9 handleBehavior default cycle | handle-behavior="none" to restore |
| Styles missing, components unstyled | Core CSS not imported | Import @ionic/<fw>/css/core.css (+ structure/typography) once at entry |
| Dark mode never activates | No palette imported | Import css/palettes/dark.system.css (or .class.css + ion-palette-dark class) |
| Angular 21 view not updating after async work | Zoneless default in Ionic 9 + Angular 21 | Use signals / markForCheck(), or add provideZoneChangeDetection() |
Resources
- Ionic docs: https://ionicframework.com/docs
- Ionic 9 breaking changes: https://github.com/ionic-team/ionic-framework/blob/main/BREAKING.md
- Theming: https://ionicframework.com/docs/theming/basics
- Dark mode: https://ionicframework.com/docs/theming/dark-mode
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

