mrkeyoor.com_
Thu 17 Sept 06:57 UTC
Webevaluationupdated 17 Sept 2026

ionic-framework review

Ionic Framework is a UI toolkit for building browser, iOS, and Android apps from one HTML, CSS, and JavaScript codebase. Its Web Components supply mobile-shaped controls and bindings for Angular, React, and Vue, so a web team does not need a separate interface implementation for each target.

Verdict

Our Ionic Framework checkout installed 512 packages in 25 seconds, but the root exposed no build or test target, so that clean install proves dependency resolution rather than application readiness. Ionic 9 is a good choice when your team's durable asset is web code and you will test the chosen framework binding, Capacitor runtime, and accessibility path as one product. Skip it when native controls are mandatory or the app cannot move to its framework and router version floors.

We ran it

Lab card: what happened when we ran ionic-frameworkScreenshot of ionic-framework (ionicframework.com)
Install✓ · 25s512 packages · 152 MB
Buildn/ano build script
Testsn/ano test script
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo10459 files~208,859 lines of source · 111.6 MB · 14 CI workflows

Answers from our run

Does ionic-framework build from source?

Dependencies installed in 25 seconds (512 packages), and the project has no separate build step. We cloned commit a3d22da into a clean Debian container with 3 CPUs and no project-specific setup.

Does ionic-framework have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does ionic-framework have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use ionic-framework?

Teams that require native platform controls instead of Web Components: Ionic Core renders Stencil-built custom elements styled for iOS and Material Design.

What are the alternatives to ionic-framework?

React Native, Quasar, Framework7. Our Ionic Framework checkout installed 512 packages in 25 seconds, but the root exposed no build or test target, so that clean install proves dependency resolution rather than application readiness.

Setup3/525-second install, but no root build or test target
Docs4/5Detailed v9 changes; the root migration list still stops at v8
Community5/5Pushed Sep 16, 2026, with 558 open issues and 36 open PRs
Maturity5/5v9.0.4 is active; overlay accessibility reports remain open

Who it’s for

Web teams that want one component system across Progressive Web Apps, iOS, and Android.
Angular, React, or Vue developers who prefer framework bindings over writing platform-specific screens twice.
Product teams willing to pair a web UI with Capacitor and the native platform toolchains.
Design-system teams that can use CSS variables, custom elements, and separate iOS and Material modes.

Who it’s NOT for

Teams that require native platform controls instead of Web Components: Ionic Core renders Stencil-built custom elements styled for iOS and Material Design.
Apps pinned to Angular 16 or 17, React 17, React Router 5, Vue below 3.5, or Capacitor below 7: Ionic 9 no longer supports those versions.
Contributors who expect one root build and test command: our checkout exposed neither target, while the contribution guide sends work into Core and the individual framework packages.
Teams that cannot budget device-level accessibility testing: open v8 reports cover Android Switch Access failing inside menus and an invalid ARIA hierarchy in modal selects.

Setup reality

Our sandbox install succeeded in 25 seconds, adding 512 packages and using 152 MB on disk. The checkout itself contained 10,459 files, about 208,859 lines of source, and occupied 111.6 MB. The root had no build or test script, so both steps were skipped. npm audit reported 0 known vulnerabilities.

Using Ionic Core does not require an account or secret; its README even shows a CDN route for plain HTML. A full app adds the Ionic CLI and framework packages. Shipping to an app store adds Capacitor plus Android Studio or Xcode, which our dependency install did not exercise.

Ionic 9 requires Angular 18+, React 18 or 19, Vue 3.5+, and Capacitor 7+. Contributor work is package-specific: Core is built first, then the Angular, React, or Vue binding. The repository has 14 CI workflow files, but no Dockerfile or top-level tests directory.

Ionic 9 is one Web Component system with three framework bindings

Ionic v9.0.4 ships Angular, React, and Vue bindings around the same Web Component Core. The components also run in plain HTML from CDN files or as individually imported custom elements. Styling covers iOS and Material Design modes, while CSS variables expose the theme. A web team can keep its framework and browser tooling while adding mobile-shaped navigation, forms, menus, modals, and tabs.

The boundary matters. Ionic Framework owns the interface layer. Publishing it as an iOS or Android app uses Capacitor and the native toolchain, and the React guide points developers to Android Studio or Xcode for the final build. Version 9 requires Capacitor 7 or newer. If your problem is sharing UI and web skills, this split is reasonable. If native platform controls are mandatory, Ionic Core's custom elements are the wrong foundation.

What happened when we ran it

Our sandbox installed the commit a3d22da checkout in 25 seconds. npm added 512 packages and left 152 MB on disk. We measured 10,459 files, roughly 208,859 lines of source, and 111.6 MB before that install. Our measurement setup was an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets.

The root exposed no build script or target, so the build step was skipped. It also exposed no test script or target, so the test step was skipped. npm audit found 0 known vulnerabilities. Our scan counted 14 CI workflow files, found no Dockerfile or top-level tests directory, and identified a monorepo workspace structure. These facts do not prove that a generated Ionic app builds or passes device tests.

The 25-second install is only the monorepo front door

Our 25-second root install covered a private package used mainly for build tooling, and its manifest defines no scripts. Contributor work happens lower down. Core has separate preview, lint, screenshot-test, and build commands. A framework change then moves into the Angular, React, or Vue package. The guide warns that React and Vue builds can report type errors as warnings, so contributors must run separate type checks.

Using the library is simpler than changing it. Ionic Core documents a CDN path for plain HTML and imports that let a bundler include individual custom elements. Framework users start through the Ionic CLI and their chosen binding. No hosted credential is needed. Native delivery adds Capacitor, then Android Studio or Xcode. Our 152 MB install did not cover those SDKs or an app-store build.

Ionic 9 sets hard floors for every supported stack

The version 9 table is unusually clear. Angular starts at 18, React is limited to 18 or 19, and Vue starts at 3.5. Capacitor starts at 7. Browser support begins at Chrome and Edge 89, Firefox 75, and Safari 16; mobile support begins at iOS 16 and Android 5.1 with Chromium 89 or newer. These limits are immediate blockers for an older enterprise stack.

A major upgrade can touch more than Ionic components. Version 9 makes Angular standalone components the default and deprecates IonicModule. Its React packages drop React 17 and React Router 5, while Vue routing requires Vue Router 5. Core now uses an exports allowlist, so apps importing undocumented internal paths must switch. The migration material names these breaks precisely, but an existing app still has to absorb them.

Two open v8 reports make accessibility testing non-negotiable

Open issue 29806 reports that Android Switch Access could open an Ionic menu but could not select its items. The v8 report includes a reproduction app and was updated on September 16, 2026. Issue 31074, also filed against v8, reports an invalid role hierarchy when ion-select uses the modal interface. Neither proves the same behavior in v9.0.4, but both identify paths a release checklist should exercise.

A fix in Core can benefit three framework bindings, while a Core defect can reach all three. Test the exact overlays, keyboard flow, screen-reader output, and switch-control behavior on real target devices. A browser component test will not reproduce every native accessibility service. Teams without time for that pass should not treat iOS and Material styling as evidence of platform parity.

September activity shows maintenance, not a small support surface

GitHub recorded the last push on September 16, 2026, and v9.0.4 shipped that day. The release fixed duplicate click events, wide slotted content hiding field values, and a modal height collapse. The repository had 52,670 stars, 558 open issues, and 36 open pull requests when fetched. The 594 items include issues and pull requests rather than 594 confirmed bugs. Recent updates across old and new reports show an active queue.

Documentation quality varies by entry point. The version 9 breaking-change file gives concrete minimums and migrations. Core explains CDN use, lazy loading, and per-component imports. The root README is thinner, and its migration list ends with v7 to v8 even though v9.0.4 is current; the v9.0.0 release page supplies the missing guide link. Start there before upgrading.

Pick Ionic when the web codebase is the asset

Ionic v9.0.4 supplies 3 framework bindings, making it worth a trial when one team owns a Progressive Web App and mobile clients. Build one representative route before committing: include navigation, a modal, a form, and the hardest native plugin. Run it against the oldest supported iOS 16 and Android 5.1 targets you claim, including the assistive technologies users rely on.

The lab result makes that trial cheap to begin, not safe to skip. A 25-second install and 0 audit findings remove two early objections, while the missing root build and test targets leave product validation in your hands. The useful decision evidence will come from the generated app, Capacitor project, and device matrix, not from a green npm install at the monorepo root.

Alternatives

ProjectWhat it isPick it when
React Native gh↗A React framework that renders through native platform components.pick this instead when native UI primitives matter more than sharing a browser-oriented component layer.
Quasar gh↗A Vue framework for web, mobile, and desktop applications.pick this instead when Vue is fixed and you want a broader application framework around the component library.
Framework7A mobile-focused HTML framework for iOS and Android interfaces.pick this instead when a mobile-first HTML toolkit fits and Ionic's Angular binding is not part of the decision.

What people are saying

  1. [velocity-scout] ionic-team/ionic-framework

Sources

  1. Ionic Framework README
  2. Ionic Core README
  3. Ionic 9 breaking changes
  4. Ionic Framework v9.0.4 release
  5. Android Switch Access issue 29806
  6. Modal select ARIA issue 31074

More web reviews

pixijs · django-rest-framework · gin · components · docs · docusaurus · the whole board →