# @ionic/angular

> Angular specific wrappers for @ionic/core

Latest version **9.0.4** (published 2026-09-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install @ionic/angular
pnpm add @ionic/angular
yarn add @ionic/angular
bun add @ionic/angular
```

## Health

**Score 85/100 (A)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score; popular repo; extremely popular.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 9.0.4 |
| Published | 2026-09-16 |
| First published | 2017-11-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 4 |
| Unpacked size | 2.1 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 52671 |
| Maintainers | gm-os, ionicjs, shanetheking |
| Keywords | ionic, framework, angular, mobile, app, webapp, capacitor, cordova, progressive web app, pwa |

## Links

- npm: https://www.npmjs.com/package/@ionic/angular
- Repository: https://github.com/ionic-team/ionic-framework
- Homepage: https://ionicframework.com/
- Issues: https://github.com/ionic-team/ionic-framework/issues
- npm.io page: https://npm.io/package/@ionic/angular

## Dependencies (4)

- [tslib](https://npm.io/package/tslib.md) ^2.3.0
- [ionicons](https://npm.io/package/ionicons.md) ^8.0.13
- [@ionic/core](https://npm.io/package/@ionic/core.md) 9.0.4
- [jsonc-parser](https://npm.io/package/jsonc-parser.md) ^3.0.0

## Alternatives

- [@sveltejs/kit](https://npm.io/package/@sveltejs/kit.md) — 2.2M weekly downloads
- [@atlaskit/theme](https://npm.io/package/@atlaskit/theme.md) — 402.0K weekly downloads
- [@tangle-network/brand](https://npm.io/package/@tangle-network/brand.md) — 10.0K weekly downloads
- [seneca](https://npm.io/package/seneca.md) — 7.4K weekly downloads
- [@bsb/base](https://npm.io/package/@bsb/base.md) — 7.2K weekly downloads

## Recent versions

- 9.0.4 (latest) — 2026-09-16
- 8.8.20-dev.11790070024.16543b26 (dev) — 2026-09-22
- 9.0.5-nightly.20260922 (nightly) — 2026-09-22
- 7.8.6 (v7-lts) — 2024-04-24
- 8.0.0-rc.2 (next) — 2024-04-17
- 6.7.5 (v6-lts) — 2023-06-08
- 5.9.4 (v5-lts) — 2022-04-27
- 4.11.13 (v4-lts) — 2020-10-01
- 8.8.20-dev.11790063553.1c664fbb — 2026-09-22
- 9.0.3-dev.11790016799.1e269b7a — 2026-09-21
- 8.8.20-dev.11790000033.12788d65 — 2026-09-21
- 8.8.20-dev.11789990538.1a39c6cb — 2026-09-21
- 9.0.5-nightly.20260921 — 2026-09-21
- 9.0.5-nightly.20260918 — 2026-09-18
- 9.0.5-nightly.20260917 — 2026-09-17
- … 4323 more at https://npm.io/package/@ionic/angular/versions

## README

# @ionic/angular

Ionic Angular specific building blocks on top of [@ionic/core](https://www.npmjs.com/package/@ionic/core) components.


## Related

* [Ionic Core Components](https://www.npmjs.com/package/@ionic/core)
* [Ionic Documentation](https://ionicframework.com/docs/)
* [Ionic Discord](https://ionic.link/discord)
* [Ionic Forum](https://forum.ionicframework.com/)
* [Ionicons](http://ionicons.com/)
* [Stencil](https://stenciljs.com/)
* [Capacitor](https://capacitor.ionicframework.com/)


## License

* [MIT](https://raw.githubusercontent.com/ionic-team/ionic/main/LICENSE)

## Testing Local Ionic Framework with `ng add`

This guide shows you how to test the local Ionic Framework build with a new Angular application using `ng add`. This is useful for development and testing changes before publishing.

### Prerequisites

- Node.js and npm installed
- Angular CLI installed globally (`npm install -g @angular/cli`)

### Build Local Ionic Framework

1. Clone the repository (if not already done):
    ```sh
    git clone https://github.com/ionic-team/ionic-framework.git
    cd ionic-framework
    ```

2. Pull the latest from `main`
    ```sh
    git pull origin main
    ```

3. Install dependencies and build the `core` package:
    ```sh
    cd core
    npm install
    npm run build
    ```

4. Install dependencies, sync the `core` build and build the Angular package:
    ```sh
    cd ../packages/angular
    npm install
    npm run sync
    npm run build
    ```

5. Create a tarball:
    ```sh
    npm pack
    ```

6. Copy the tarball to Downloads:
    ```sh
    cp ionic-angular-*.tgz ~/Downloads/ionic-angular.tgz
    ```

### Test with New Angular App

7. Create a new Angular app:
    ```sh
    # Change to whichever directory you want the app in
    cd ~/Documents/
    ng new my-app --style=css --ssr=false
    cd my-app
    ```

8. Install the local `@ionic/angular` package:
    ```sh
    npm install ~/Downloads/ionic-angular.tgz
    ```

9. Run `ng add`:
    ```sh
    ng add @ionic/angular --skip-confirmation
    ```

10. Serve the app:
    ```sh
    ng serve
    ```

The local Ionic Framework build is now active in the Angular app. Changes to the Ionic source code require rebuilding the packages and reinstalling the tarball to see updates.

## Project Structure

**common**

This is where logic that is shared between lazy loaded and standalone components live. For example, the lazy loaded IonPopover and standalone IonPopover components extend from a base IonPopover implementation that exists in this directory.

**Note:** This directory exposes internal APIs and is only accessed in the `standalone` and `lazy` submodules. Ionic developers should never import directly from `@ionic/angular/common`. Instead, they should import from `@ionic/angular` or `@ionic/angular/lazy`.

**standalone**

This is where the standalone component implementations live. It was added as a separate entry point to avoid any lazy loaded logic from accidentally being pulled in to the final build. Having a separate directory allows the lazy loaded implementation to remain accessible from `@ionic/angular/lazy` for backwards compatibility.

Ionic developers can access this by importing from `@ionic/angular`.

**lazy**

This is where the lazy loaded component implementations live.

Ionic developers can access this by importing from `@ionic/angular/lazy`.

> [!CAUTION]
> The lazy loaded build, including `IonicModule`, is deprecated and will be removed in a future major version. New code should use the standalone components and `provideIonicAngular()` imported from `@ionic/angular`.

## Change Detection Strategy

Every `@Component` in `src` must declare `changeDetection` explicitly, and `npm run test` enforces it. See the [Change Detection guide](https://github.com/ionic-team/ionic-framework/blob/main/docs/angular/change-detection.md).

## Package Validation

`npm run validate` executes several subtasks: installs node modules, lints, builds the package, and runs package tests. `npm run test` can also run the package tests directly. For E2E tests, see [Angular Testing documentation](/docs/angular/testing.md).

### Testing Package Exports

To check that all exports from `package.json` point to files that exist, and that all Ionic components have exports, run `node ./scripts/verify-exports.js` or `npm run test.package`.

### Testing Code Splitting

If an app imports standalone components from `@ionic/angular`, esbuild bundles them together, so a landing page could include components it never uses. If components are instead imported from `@ionic/angular/<component-name>`, esbuild is able to bundle pages with only the components they need. The app in `packages/angular/test/code-split` is used to verify that this code splitting is working.

To run the test, run `node ./scripts/test-code-split.js` or run `npm run test.code-split`. This builds the code-split app and checks if `IonToggle` is excluded from the landing page's bundle.

### Testing Schematics

The schematics files are used when Ionic-Angular is added to a project with `ng add`. The schematics test verifies schematics are included in the package by creating a new starter app and adding the locally built Ionic-Angular package to it.

To run the test, run `node ./scripts/verify-schematics.js` or run `npm run test.schematics`.

---
_Source: https://npm.io/package/@ionic/angular · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
