ionic

Applies Ionic and Capacitor conventions for building hybrid mobile apps with Angular.

1|Updated Jun 2, 2026
One-click install
npx skills add https://github.com/envoydev/claude-stack --skill ionic-envoydev
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ionic
Source: https://github.com/envoydev/claude-stack/tree/main/stack/skills/ionic
Command: npx skills add https://github.com/envoydev/claude-stack --skill ionic-envoydev

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building Ionic/Capacitor apps involves subtle traps that silently break production apps: cached pages that never re-run ngOnInit, Capacitor listener callbacks that escape Angular change detection, wrong standalone import paths per Ionic major, and permission prompts that are one-shot on iOS. This Skill encodes the house conventions that prevent those bugs. ## Core Features & Use Cases - Ionic Angular UI conventions: standalone components with signals, modern form-control syntax (label/errorText on the control, not IonItem), CSS-variable theming, safe-area insets, and overlay patterns with dismissal handling. - Capacitor lifecycle and zone boundary: typed-service wrapping of every native plugin, NgZone.run() around listener callbacks, permission check-then-request cycles, and web fallbacks that degrade instead of crashing. - Navigation and lifecycle: IonRouterOutlet page caching, the four ionView hooks and which work belongs on each, NavController vs Angular Router, and tab stack modeling. - Use Case: You are adding push notifications to an Ionic 9 app. The Skill directs you to wrap the plugin in one typed service that owns the permission cycle, token-to-server lifecycle, foreground vs tap listeners, and a typed 'unavailable' web fallback. ## Quick Start Load the ionic skill before building or editing any Ionic/Capacitor app where ionic.config.json or capacitor.config.* exists.

Frequently Asked Questions about ionic

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I handle Capacitor plugin listeners in Angular?▼

Register listeners once in an app-level service, capture the returned PluginListenerHandle, and remove it on teardown. Wrap every callback that mutates template-bound state in NgZone.run(), because Capacitor callbacks fire outside Angular's zone and the UI silently goes stale otherwise.

How do Ionic page lifecycle hooks work with Angular?▼

Ionic caches pages in the DOM, so ngOnInit fires only on creation, not on every revisit. Put refresh-on-entry data on ionViewWillEnter, heavy work on ionViewDidEnter, and final teardown on ngOnDestroy, which runs only when the page is popped.

Should I use NavController or the Angular Router in Ionic?▼

Use the Angular Router for plain route changes and NavController when you need native slide directions in a stacked flow. NavController is a thin wrapper over the router carrying animation direction, so it does not break the router-only rule.

Does Ionic 8 support zoneless Angular change detection?▼

No. Ionic 8 keeps Zone.js as a peer dependency and is not zoneless-compatible regardless of the Angular version underneath. Ionic 9 ships official zoneless support, and Angular 21+ defaults to it, so state should flow through signals either way.

Which Capacitor plugin should I use when official ones don't fit?▼

Source in preference order: official @capacitor/* plugins, then Capawesome @capawesome/capacitor-*, then @capacitor-community/*, then a vetted community package. Confirm the plugin's latest major matches your Capacitor major and check recent maintenance before adopting.

Why does my Ionic app content hide under the status bar?▼

Capacitor 8 draws content edge-to-edge under the status and navigation bars by default. Pad it back using the CSS env(safe-area-inset-*) variables via Ionic's --ion-safe-area-* tokens, never fixed padding, alongside the System Bars plugin.