Conversation
* fix(ci): fixing eslint and prettier * feat!: support Angular 21 and 22 via peerDependencies * fix: regenerating lock files * fix(schematics): default page and component schematics to standalone * chore(npm): updating package-lock.json
BREAKING CHANGE: Generated code now targets Ionic 9 and Angular 21 or 22. Pages and components import `IonicModule` from `@ionic/angular/lazy` and standalone components from the `@ionic/angular` root, which is the Ionic 9 export layout, so generated code no longer compiles against Ionic 8. The `page` and `component` schematics now default to standalone, and peerDependencies drop Angular 20 and below.
ShaneK
added a commit
that referenced
this pull request
Aug 19, 2026
* docs: correct typo in monorepo description (#522) * chore(npm): Update release npm action to stop using tokens (#526) * Update release yaml to use trusted publishers approach * Update cd.yml * Finetuned workflows triggers and improved linting issues (#527) * feat(many): support for Ionic Framework v9 (#532) * feat!: support Angular 21 and 22 via peerDependencies (#531) * fix(ci): fixing eslint and prettier * feat!: support Angular 21 and 22 via peerDependencies * fix: regenerating lock files * fix(schematics): default page and component schematics to standalone * chore(npm): updating package-lock.json * fix(schematics): update templates to Ionic 9 component import paths * fix(schematics): repair generated component code and route registration BREAKING CHANGE: Generated code now targets Ionic 9 and Angular 21 or 22. Pages and components import `IonicModule` from `@ionic/angular/lazy` and standalone components from the `@ionic/angular` root, which is the Ionic 9 export layout, so generated code no longer compiles against Ionic 8. The `page` and `component` schematics now default to standalone, and peerDependencies drop Angular 20 and below. --------- Co-authored-by: mohammad altamash <78483966+Shaikhaltamash861@users.noreply.github.com> Co-authored-by: Gonçalo M. <goncalo.martins@outsystems.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updating templates to support Ionic Framework v9.
What is the current behavior?
Currently, the schematics generate code for Ionic 8's export layout, importing
IonicModulefrom@ionic/angularand standalone components from@ionic/angular/standalone. Neither is correct in Ionic 9. Beyond the import paths, three template bugs meant the generated output did not compile or run on a current Angular app:waitForAsync, which needs zone.js, so every generated component spec failed on a zoneless Angular 22 app.--create-moduleemittedexport class FooComponent Module {}, which is a syntax error.pageschematic silently skipped route registration when the targetroutesarray was empty, which is the shapeng newproduces.What is the new behavior?
Generated code now targets the Ionic 9 export layout, with
IonicModulecoming from@ionic/angular/lazyand standalone components from the@ionic/angularroot. The peerDependencies move to Angular 21 and 22, and thepageandcomponentschematics default to standalone.The three bugs above are fixed. Route insertion now handles an empty
routesarray, and it leaves aroutesthat is not an array literal alone rather than writing into it, because anchoring off the array's tokens corrupted files whereroutescame from a helper call.Does this introduce a breaking change?
Generated code requires Ionic 9 and Angular 21 or 22. On Ionic 8 the
lazysubpath does not exist and the root does not export standalone components, so generated pages and components will not compile.Other information
Verified against the released
@ionic/angular@9.0.0and Angular 22.1.4 by generating every schematic variant into real apps. Builds pass, the generated specs pass, and bothionic-cordova-buildandionic-cordova-servestill work on a webpack app. Both packages also typecheck against Angular 21.2.21 and TypeScript 5.9 to cover the low end of the peerDependencies range.Note on merging: lerna 4's
conventional-changelog-angular@5preset does not understand thefeat!:bang shorthand, since itsheaderPatternhas no!and it has nobreakingHeaderPattern. The major bump comes from theBREAKING CHANGE:footer on 02709d2 instead. If this is squash merged, keep that footer in the commit body or the release will publish as a minor.