Skip to content

feat!: upgrade builders + examples to Angular 22 (22.0.0-rc.2)#2264

Merged
just-jeb merged 3 commits into
release/v22from
feat/v22-upgrade
Jun 2, 2026
Merged

feat!: upgrade builders + examples to Angular 22 (22.0.0-rc.2)#2264
just-jeb merged 3 commits into
release/v22from
feat/v22-upgrade

Conversation

@just-jeb
Copy link
Copy Markdown
Owner

@just-jeb just-jeb commented Jun 2, 2026

PR Checklist

  • Tests for the changes have been added (for bug fixes / features) — N/A; this is a version bump validated by the full existing integration matrix (42 passed / 0 failed) + per-package unit/e2e suites
  • Docs have been added / updated (for bug fixes / features) — MIGRATION.MD / migration-coverage work tracked separately for the v22 cut (Stream 2c/2d)

PR Type

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[x] Other... Please describe: Angular major-version upgrade (v22 integration base)

What is the current behavior?

Builders and the ~7 examples/ apps target Angular 21 (@angular/core 21.2.15, builder ranges ^21). The release/v22 branch is an empty integration shell (master + the upgrade runbook) with no Angular 22 content.

What is the new behavior?

Upgrades the monorepo to Angular 22.0.0-rc.2 — the v22 integration base on release/v22:

  • All @angular-builders/* Angular dependency ranges bumped to 22.0.0-rc.2; all example apps upgraded via ng update.
  • TypeScript 6.0 (Angular 22 requires >=6.0 <6.1): devDep 5.9.3 → 6.0.3 and all example apps to 6.0.3. TS6 breakage fixed at root cause:
    • explicit rootDir where TS6 now requires it (emitting package tsconfigs, e2e tsconfigs);
    • @types/node / @types/jest resolution fixes (standalone packages + jest tsconfig.lib/spec, incl. moving a misplaced top-level types under compilerOptions and excluding specs from the published lib build);
    • deprecation hard-errors (ignoreDeprecations: "6.0") and a html-webpack-plugin default-import fix in full-cycle-app webpack configs.
  • Tooling: scripts/update-package.js / update-example.js now accept an explicit version or dist-tag (22.0.0-rc.2 / next), not just an integer major — required to target RCs. Also fixed a bug where jest's Angular peerDependencies were skipped by the bump script.

Verification (local): yarn build:packages:all → 6/6 packages build; yarn test:local42 passed, 0 failed (custom-esbuild 12/12, custom-webpack 14/14 incl. Karma+Chrome, jest 15/15 incl. Cypress e2e, bazel 1/1). This PR runs the matrix on CI to confirm.

Notes:

Does this PR introduce a breaking change?

[x] Yes
[ ] No

Targets Angular 22 (peer requirement) and TypeScript 6.0 — consuming apps must be on Angular 22. This is the v22 major's foundation; user-facing migration path will be delivered via the forthcoming ng update schematics + MIGRATION.MD for the v22 release. This PR merges into the long-lived release/v22 integration branch, not master.

Other information

Base: release/v22 (integration branch). Built against the Angular 22 RC so the major is ready when 22 goes GA.

just-jeb added 3 commits June 2, 2026 12:00
Extend update-package.js/update-example.js to accept explicit version
strings and dist-tags (required for RC prework), and bump all
@angular-builders/* Angular dependency ranges to 22.0.0-rc.2.
…build breakage

- Bump example apps to Angular 22.0.0-rc.2 and TypeScript 6.0.3.
- Add explicit rootDir to package tsconfigs (TS6 TS5011 now requires it
  when emitting with outDir).
- Add @types/node + types:[node] to standalone packages bazel/timestamp
  (TS6 no longer auto-includes node types without a transitive trigger).
- jest: move types into compilerOptions and pin to @types/jest so the
  ambient jest global resolves under TS6 (the bare 'jest' entry now
  resolves to the runtime jest package, which lacks the global); exclude
  spec files from the lib build so they stop leaking into dist.
- Add ignoreDeprecations: "6.0" to app tsconfigs using deprecated
  options (baseUrl, downlevelIteration) that TS6 now errors on.
- Add rootDir to Cypress e2e tsconfigs so ts-loader stops failing with
  TS5011 under TS6.
- full-cycle-app webpack configs: switch html-webpack-plugin to a default
  import (TS6 rejects constructing a namespace import) and guard the
  optional cfg.plugins array.
@just-jeb just-jeb merged commit b3c7e1c into release/v22 Jun 2, 2026
46 checks passed
@just-jeb just-jeb deleted the feat/v22-upgrade branch June 3, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant