-
Notifications
You must be signed in to change notification settings - Fork 9
chore: bump nx to 22.0.3
#486
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThis PR performs a comprehensive upgrade of Angular from v19 to v20, Nx from v20 to v22, and Storybook to v9, alongside corresponding API migrations and configuration updates across the codebase. It introduces async jest configuration, updates TypeScript resolution settings across project configs, consolidates imports, and adjusts component implementations to use newer Angular patterns. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas requiring extra attention:
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
PR is detected, will deploy to dev environment |
|
Deploy failed, please check the logs in jenkins for more details. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
libs/shared/storybook/.storybook/main.ts (1)
1-23: Storybook version mismatch detected—major versions must align.@storybook/addon-docs 10.0.7 expects Storybook 10, so it is not compatible with @storybook/angular 9.1.9. Storybook addons follow major-version compatibility with Storybook core.
Fix by either:
- Upgrade @storybook/angular to 10.x to match @storybook/addon-docs 10.0.7, or
- Downgrade @storybook/addon-docs to a 9.x version compatible with Storybook 9.1.9
♻️ Duplicate comments (7)
libs/blog/search/ui-search-result/project.json (1)
13-14: Duplicate pattern—see previous file for verification.This change mirrors the same migration pattern applied across all files in this PR. Refer to the verification script in the first file's review comment to confirm all
tsconfig.spec.jsonfiles exist.libs/blog/roadmap/ui-roadmap-node/project.json (1)
13-14: Duplicate pattern—see first file for verification.Same systematic migration as other files. Verification of all
tsconfig.spec.jsonfiles is covered in the initial review comment.libs/shared/config/project.json (1)
13-14: Duplicate pattern—see first file for verification.Same systematic migration as other files. Verification of all
tsconfig.spec.jsonfiles is covered in the initial review comment.libs/blog/shared/ui-dynamic-text-clamp/project.json (1)
13-14: Duplicate pattern—see first file for verification.Same systematic migration as other files. Verification of all
tsconfig.spec.jsonfiles is covered in the initial review comment.libs/blog/authors/data-access/project.json (1)
13-14: Duplicate pattern—see first file for verification.Same systematic migration as other files. Verification of all
tsconfig.spec.jsonfiles is covered in the initial review comment.libs/blog/layouts/ui-layouts/project.json (1)
13-14: Duplicate pattern—see first file for verification.Same systematic migration as other files. Verification of all
tsconfig.spec.jsonfiles is covered in the initial review comment.libs/blog/roadmap/ui-roadmap/project.json (1)
13-14: Duplicate pattern—see first file for verification.Same systematic migration as other files. Verification of all
tsconfig.spec.jsonfiles is covered in the initial review comment.
🧹 Nitpick comments (1)
.gitignore (1)
48-49: LGTM! These patterns appropriately ignore Nx-related tooling and instruction artifacts that should not be committed.Minor style note: For consistency with other root-level ignores in this file (e.g.,
/coverage,/typings), consider prefixing these with/to make them explicitly root-level:-.cursor/rules/nx-rules.mdc -.github/instructions/nx.instructions.md +/.cursor/rules/nx-rules.mdc +/.github/instructions/nx.instructions.mdThis is optional—the current form works correctly but makes the intent clearer. Either way, the changes support the Nx upgrade objectives.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (77)
.gitignore(1 hunks)apps/blog/project.json(2 hunks)apps/blog/src/app/app.config.server.ts(1 hunks)apps/blog/src/app/app.config.ts(3 hunks)apps/blog/src/main.server.ts(1 hunks)apps/blog/tsconfig.app.json(1 hunks)jest.config.ts(1 hunks)libs/blog-bff/shared/util-wp/project.json(2 hunks)libs/blog/about-us/feature-about-us/project.json(1 hunks)libs/blog/ad-banner/data-access/project.json(1 hunks)libs/blog/ad-banner/ui/project.json(1 hunks)libs/blog/app-theme/data-access-app-theme/project.json(1 hunks)libs/blog/app-theme/data-access-app-theme/tsconfig.lib.json(1 hunks)libs/blog/app-theme/data-access-app-theme/tsconfig.lib.prod.json(1 hunks)libs/blog/articles/data-access/project.json(1 hunks)libs/blog/articles/feature-article/project.json(1 hunks)libs/blog/articles/feature-category/project.json(1 hunks)libs/blog/articles/feature-comments/project.json(1 hunks)libs/blog/articles/feature-latest-articles/project.json(1 hunks)libs/blog/articles/feature-list/project.json(1 hunks)libs/blog/articles/feature-related-articles/project.json(1 hunks)libs/blog/articles/ui-article-card/project.json(1 hunks)libs/blog/articles/ui-article-content/project.json(1 hunks)libs/blog/articles/ui-article-list-title/project.json(1 hunks)libs/blog/articles/ui-table-of-contents/project.json(1 hunks)libs/blog/authors/data-access/project.json(1 hunks)libs/blog/authors/feature-author/project.json(1 hunks)libs/blog/authors/ui-author-card/project.json(1 hunks)libs/blog/become-author/feature-become-author-page/project.json(1 hunks)libs/blog/home/feature-home/project.json(1 hunks)libs/blog/i18n/data-access/project.json(1 hunks)libs/blog/i18n/util/project.json(1 hunks)libs/blog/layouts/ui-layouts/project.json(1 hunks)libs/blog/layouts/ui-navigation/project.json(1 hunks)libs/blog/newsletter/data-access/project.json(1 hunks)libs/blog/newsletter/feature-newsletter/project.json(1 hunks)libs/blog/partners/ui-partners/project.json(1 hunks)libs/blog/roadmap/data-access/project.json(1 hunks)libs/blog/roadmap/feature-roadmap/project.json(1 hunks)libs/blog/roadmap/ui-roadmap-dialog/project.json(1 hunks)libs/blog/roadmap/ui-roadmap-node/project.json(1 hunks)libs/blog/roadmap/ui-roadmap/project.json(1 hunks)libs/blog/search/data-access/project.json(1 hunks)libs/blog/search/feature-search-results-page/project.json(1 hunks)libs/blog/search/feature-search/project.json(1 hunks)libs/blog/search/ui-search-result/project.json(1 hunks)libs/blog/shared/ui-avatar/project.json(1 hunks)libs/blog/shared/ui-button/project.json(1 hunks)libs/blog/shared/ui-card/project.json(1 hunks)libs/blog/shared/ui-card/src/lib/card-skeleton.component.ts(2 hunks)libs/blog/shared/ui-difficulty/project.json(1 hunks)libs/blog/shared/ui-dynamic-text-clamp/project.json(1 hunks)libs/blog/shared/ui-focusable/project.json(1 hunks)libs/blog/shared/ui-icon/project.json(1 hunks)libs/blog/shared/ui-not-found/project.json(1 hunks)libs/blog/shared/ui-pagination/project.json(1 hunks)libs/blog/shared/ui-pill/project.json(1 hunks)libs/blog/shared/ui-social-media-icons/project.json(1 hunks)libs/blog/shared/ui-tooltip/project.json(1 hunks)libs/blog/shared/util-seo/project.json(1 hunks)libs/blog/shared/util-seo/src/lib/services/seo.service.ts(1 hunks)libs/blog/shared/utils-inject/project.json(1 hunks)libs/blog/shell/feature-shell-web/project.json(1 hunks)libs/blog/tracking/feature/project.json(1 hunks)libs/blog/tracking/feature/src/lib/partytown/partytown.service.ts(1 hunks)libs/blog/tracking/feature/src/lib/scripts-loader.service.ts(1 hunks)libs/blog/writing-rules/feature-writing-rules/project.json(1 hunks)libs/shared/config/project.json(1 hunks)libs/shared/storybook/.eslintrc.json(1 hunks)libs/shared/storybook/.storybook/main.ts(2 hunks)libs/shared/utils-algolia/project.json(1 hunks)libs/shared/utils-signal-store/project.json(1 hunks)libs/utils/project.json(1 hunks)migrations.json(1 hunks)nx.json(1 hunks)package.json(4 hunks)storybook-migration-summary.md(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-02-24T16:17:27.933Z
Learnt from: DDonochVA
Repo: HouseOfAngular/angular-love PR: 390
File: libs/blog/home/feature-home/src/lib/home-page/home-page.component.html:1-26
Timestamp: 2025-02-24T16:17:27.933Z
Learning: In the angular-love project, use modern Angular control flow (for, if) instead of structural directives (*ngFor, *ngIf) for template iteration and conditional rendering.
Applied to files:
libs/blog/shared/ui-card/src/lib/card-skeleton.component.ts
🧬 Code graph analysis (4)
apps/blog/src/main.server.ts (1)
apps/blog/server.ts (1)
app(11-52)
libs/blog/shared/ui-icon/project.json (1)
libs/blog/shared/ui-icon/src/lib/icon/icon.component.ts (1)
IconComponent(33-36)
libs/blog/shared/ui-pagination/project.json (1)
libs/blog/shared/ui-pagination/src/lib/pagination/pagination.component.ts (1)
PaginationComponent(33-75)
libs/blog/shared/ui-tooltip/project.json (1)
libs/blog/shared/ui-tooltip/src/lib/ui-tooltip/ui-tooltip.component.ts (1)
UiTooltipComponent(17-19)
🔇 Additional comments (67)
libs/blog-bff/shared/util-wp/project.json (1)
1-23: LGTM! Clean structural reorganization aligned with Nx v22 conventions.The relocation of the
tagsproperty to a position immediately afterprojectTypeimproves readability and follows a more logical organizational structure for project metadata. The removal of the duplicate tags occurrence and the consolidation into a single, earlier location is a minor but worthwhile polish. All Nx executor configurations remain compatible with v22.libs/blog/articles/ui-table-of-contents/project.json (1)
14-14: Configuration correctly set for Nx 22.0.3 upgrade.Adding
tsConfigto the test target explicitly specifies TypeScript compilation settings for Jest tests and complements the existingjestConfigoption. The referencedtsconfig.spec.jsonfile exists and contains valid configuration.libs/blog/shared/ui-icon/project.json (1)
13-14: Configuration verified and correctly applied.The referenced
tsconfig.spec.jsonfile exists and is properly configured. This change aligns with Nx 22 best practices for explicit test target configuration and follows the consistent pattern applied across the codebase during the upgrade.libs/blog/articles/ui-article-card/project.json (1)
13-14: Configuration verified—no issues found.The
tsconfig.spec.jsonfile exists, and thetsConfigreference added to the Jest executor follows the consistent migration pattern applied across all blog article modules in the codebase for the Nx 22 upgrade.libs/blog/ad-banner/ui/project.json (1)
13-14: tsConfig reference is properly configured.The
tsConfigreference tolibs/blog/ad-banner/ui/tsconfig.spec.jsonexists and is correctly configured for Jest testing. The file extends the basetsconfig.jsonwith appropriate compiler options (commonjs module, es2016 target, jest/node types) and includes all necessary test file patterns. This aligns with Nx 22+ standards for jest test targets.libs/blog/articles/data-access/project.json (1)
13-14: tsconfig.spec.json exists and is properly configured.The addition of
tsConfigto the Jest test target aligns with Nx 22 configuration patterns. Verification confirmslibs/blog/articles/data-access/tsconfig.spec.jsonexists and is valid JSON.apps/blog/tsconfig.app.json (1)
6-7: Configuration updates align with Nx v22 migration.The addition of
esModuleInterop: trueandmoduleResolution: "bundler"are standard TypeScript settings appropriate for modern Angular and Nx tooling. These changes are consistent with best practices for Nx v22 projects.libs/blog/app-theme/data-access-app-theme/project.json (2)
13-14: Explicit tsConfig references added for Nx v22 compatibility.Adding
tsConfigoptions to build and test targets is aligned with Nx v22 executor expectations. These explicit references improve build transparency and enable proper TypeScript configuration scoping per target.Also applies to: 28-29
20-20: Verify the intent of the empty development configuration.Line 20 changes the development configuration to an empty object
{}. Confirm whether this is intentional (development overrides were removed/consolidated) or if configuration values were inadvertently cleared during the migration.libs/blog/app-theme/data-access-app-theme/tsconfig.lib.prod.json (1)
4-5: Consistent module resolution strategy across prod and non-prod builds.The addition of
moduleResolution: "bundler"mirrors the update in the basetsconfig.lib.jsonfile, ensuring both production and development builds use the same modern module resolution strategy required by Nx v22.libs/blog/app-theme/data-access-app-theme/tsconfig.lib.json (1)
8-9: Base library configuration updated for Nx v22 compatibility.The addition of
moduleResolution: "bundler"aligns with the upgrade to Nx v22 and matches the updates applied across other TypeScript configurations in the project. This setting enables proper module resolution for modern tooling.libs/blog/authors/ui-author-card/project.json (1)
13-14: No issues identified — change is correct and consistent with PR pattern.Verification confirms the referenced
tsconfig.spec.jsonexists, contains valid configuration, and follows the established Nx 22.0.3 upgrade pattern consistent across multiple other projects in the PR.libs/shared/utils-signal-store/project.json (1)
13-14: tsconfig.spec.json file exists and is properly configured.Verification confirms that
libs/shared/utils-signal-store/tsconfig.spec.jsonexists with valid Jest configuration, and thetsConfigfield addition aligns with the consistent Nx 22 upgrade pattern applied across the codebase. No issues found.libs/blog/i18n/util/project.json (1)
13-14: File exists and configuration is properly set up.Verification confirms that
libs/blog/i18n/util/tsconfig.spec.jsonexists in the repository. ThetsConfigreference added to the test target options follows the standard Nx v22 configuration pattern and is correctly positioned alongside existing TypeScript configs in the directory.libs/blog/shared/ui-card/src/lib/card-skeleton.component.ts (2)
12-24: LGTM! Modern control flow migration is correct.The migration from
*ngIfto@ifcontrol flow syntax is implemented correctly and aligns with the project's preference for modern Angular patterns. The conditional rendering logic remains functionally identical.Based on learnings
33-33: LGTM! Imports correctly updated.The removal of
NgIffrom imports is appropriate since the component now uses the modern@ifcontrol flow syntax instead of the structural directive.libs/blog/shared/util-seo/src/lib/services/seo.service.ts (1)
1-1: LGTM! Correct Angular 20 migration.The consolidation of
DOCUMENTinto the@angular/coreimport aligns with Angular 20's breaking changes, where theDOCUMENTtoken was moved from@angular/commonto@angular/core. This import refactoring is correct and improves code organization.libs/blog/tracking/feature/src/lib/partytown/partytown.service.ts (1)
2-2: LGTM! Consistent migration pattern.The
DOCUMENTtoken import has been correctly moved to@angular/core, consistent with Angular 20's API changes and the pattern applied across other files in this PR.libs/blog/tracking/feature/src/lib/scripts-loader.service.ts (1)
1-1: LGTM! Import consolidation complete.The
DOCUMENTtoken has been correctly migrated to@angular/corealong withinjectandInjectable, completing the Angular 20 migration pattern consistently across all affected files in this PR.libs/blog/shell/feature-shell-web/project.json (1)
13-14: Change verified and correct.The referenced
tsconfig.spec.jsonfile exists at the expected path. The addition oftsConfigis consistent with the established pattern across similar UI and feature modules in the codebase (libs/blog/articles/, libs/blog/search/, etc.). This aligns with the Nx 22 migration, where frontend modules explicitly specify TypeScript config for the Jest executor, while backend projects typically omit it.libs/blog/articles/ui-article-list-title/project.json (1)
13-14: Verify alignment with Nx 22 migration strategy.The
tsConfigoption is being removed from the@nx/jest:jestexecutor as part of Nx 22 migrations, marked as a breaking change. However, this change addstsConfigto the test target. Before approving, please verify:
- This aligns with the official Nx migration guidance for your upgrade path
- The referenced file
libs/blog/articles/ui-article-list-title/tsconfig.spec.jsonexists in the repository- Why this configuration is being added if it will be removed by migrations
nx.json (2)
92-142: PR snippet is incomplete—verify all changes are captured in lines 92-142.The codebase shows 20 total Angular generators configured in
nx.json, but the provided PR snippet (lines 92-142) displays only 10. For Angular 20+, the default typeSeparator is "-" (dash), and the configuration usestypeSeparator: "."as an intentional backwards-compatibility override. The following generators are missing from the snippet:
@nx/angular:application@nx/angular:library@schematics/angular:application@schematics/angular:library@schematics/angular:scam@schematics/angular:scam-directiveConfirm that lines 92-142 represent all intended changes, or provide the complete diff.
86-91: No actionable issues found with generator configuration.During Nx version upgrades, generator and schematic defaults are automatically set for your workspace. The configuration in nx.json containing
"type"and"typeSeparator"fields is consistent with this automatic migration behavior. The configuration validates successfully against the nx-schema.json and requires no changes.libs/shared/storybook/.eslintrc.json (1)
2-2: LGTM! Standard Storybook 9 migration.Adding the recommended Storybook ESLint plugin is the correct approach for the Storybook 9 upgrade.
libs/blog/layouts/ui-navigation/project.json (1)
13-14: LGTM! Nx 22 test configuration update.Adding the explicit
tsConfigreference for Jest tests aligns with the Nx 22 migration pattern applied consistently across the codebase.libs/blog/articles/feature-category/project.json (1)
13-14: LGTM! Consistent with Nx 22 migration pattern.The test configuration update matches the pattern applied across all project.json files in this PR.
libs/blog/ad-banner/data-access/project.json (1)
13-14: LGTM! Nx 22 migration update.Test configuration properly updated with explicit TypeScript config reference.
apps/blog/src/app/app.config.server.ts (1)
11-11: LGTM! Angular 20 SSR package migration.The import path update from
@angular/platform-serverto@angular/ssraligns with Angular 20's new SSR package structure. TheprovideServerRenderingfunction usage remains unchanged.libs/blog/shared/ui-pagination/project.json (1)
13-14: LGTM! Test configuration update.Properly adds TypeScript config reference for Jest tests, consistent with the Nx 22 migration.
libs/blog/articles/feature-latest-articles/project.json (1)
13-14: LGTM! Nx 22 test configuration.Test target properly configured with explicit TypeScript config reference.
libs/blog/roadmap/data-access/project.json (1)
13-14: LGTM! Final test configuration update.Test target configuration properly updated, completing the consistent pattern across all project.json files in this migration.
libs/blog/shared/ui-button/project.json (1)
13-14: No issues found. All referencedtsconfig.spec.jsonfiles are present in the codebase. The changes are safe to proceed.libs/blog/search/data-access/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/search/data-access/jest.config.tsandlibs/blog/search/data-access/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/shared/util-seo/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/shared/util-seo/jest.config.tsandlibs/blog/shared/util-seo/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/articles/feature-list/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/articles/feature-list/jest.config.tsandlibs/blog/articles/feature-list/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/about-us/feature-about-us/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/about-us/feature-about-us/jest.config.tsandlibs/blog/about-us/feature-about-us/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/shared/utils-inject/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/shared/utils-inject/jest.config.tsandlibs/blog/shared/utils-inject/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/search/feature-search-results-page/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/search/feature-search-results-page/jest.config.tsandlibs/blog/search/feature-search-results-page/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/shared/ui-not-found/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/shared/ui-not-found/jest.config.tsandlibs/blog/shared/ui-not-found/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/tracking/feature/project.json (1)
13-14: Verify TypeScript config files exist for test execution.Ensure that
libs/blog/tracking/feature/jest.config.tsandlibs/blog/tracking/feature/tsconfig.spec.jsonboth exist and are properly configured for Nx 22.0.3.libs/blog/partners/ui-partners/project.json (1)
13-14: LGTM: Nx 22 test configuration update.The addition of
tsConfigalongsidejestConfigaligns with Nx 22 migration requirements for explicit TypeScript test configuration. Paths are correctly scoped to the project.libs/blog/writing-rules/feature-writing-rules/project.json (1)
13-14: LGTM: Consistent Nx 22 migration pattern.Configuration follows the same pattern as other files in the PR with correctly scoped paths.
libs/blog/shared/ui-difficulty/project.json (1)
13-14: LGTM: Consistent Nx 22 migration pattern.Configuration correctly adds test TypeScript config.
apps/blog/project.json (2)
101-102: LGTM: Test configuration update.Adds TypeScript config for Jest tests following Nx 22 migration pattern.
84-85: Verify continuous mode enablement.Line 85 introduces
"continuous": truefor the serve target. Please confirm this aligns with intended behavior for Nx 22 dev-server and that it does not cause unexpected continuous rebuilds or side effects in the development workflow.libs/blog/home/feature-home/project.json (1)
13-14: LGTM: Consistent Nx 22 migration pattern.Configuration correctly adds test TypeScript config.
libs/blog/shared/ui-focusable/project.json (1)
13-14: LGTM: Consistent Nx 22 migration pattern.Configuration correctly adds test TypeScript config.
libs/utils/project.json (1)
13-14: LGTM: Consistent Nx 22 migration pattern.Configuration correctly adds test TypeScript config.
libs/blog/authors/feature-author/project.json (1)
13-14: LGTM! Standard Nx 22 test configuration.The addition of
tsConfigalongsidejestConfigin the test target options is a standard requirement for Nx 22. This change enables proper TypeScript configuration for Jest tests.libs/blog/shared/ui-tooltip/project.json (1)
13-14: LGTM! Consistent test configuration update.This follows the same pattern of adding
tsConfigfor Nx 22 compatibility.libs/shared/utils-algolia/project.json (1)
13-14: LGTM! Test configuration updated for Nx 22.libs/blog/newsletter/data-access/project.json (1)
13-14: LGTM! Test configuration follows the standard pattern.libs/blog/articles/feature-comments/project.json (1)
13-14: LGTM! Consistent with the Nx 22 upgrade pattern.libs/blog/shared/ui-social-media-icons/project.json (1)
13-14: LGTM! Test configuration updated appropriately.libs/blog/search/feature-search/project.json (1)
13-14: LGTM! Test configuration follows the standard upgrade pattern.apps/blog/src/app/app.config.ts (3)
9-9: LGTM! Correct Angular 20 API migration.The change from
provideExperimentalZonelessChangeDetectiontoprovideZonelessChangeDetectionreflects the graduation of zoneless change detection from experimental to stable in Angular 20.
66-66: LGTM! Provider correctly updated.The provider call has been correctly updated to use the stable
provideZonelessChangeDetection()API.
41-41: Verification complete: Angular 20 Router API migration is correct.The deprecated
getCurrentNavigation()method has been successfully removed from the codebase. The target file at line 41 shows the correct new API usage withrouter.currentNavigation()!.finalUrl!, and no remaining instances of the deprecated method were found in the TypeScript files. The migration to Angular 20 Router API is complete and properly implemented.libs/blog/become-author/feature-become-author-page/project.json (1)
13-14: LGTM! Configuration update aligns with Nx 22 requirements.The addition of
tsConfigto the test target options is part of the broader Nx 22 upgrade pattern applied consistently across the workspace. This enables explicit TypeScript configuration for Jest tests without altering test execution behavior.libs/blog/shared/ui-pill/project.json (1)
13-14: LGTM! Consistent with workspace-wide Nx 22 configuration pattern.The
tsConfigaddition follows the same pattern applied across all test targets in this upgrade.libs/blog/articles/ui-article-content/project.json (1)
13-14: LGTM! Configuration update consistent with Nx 22 upgrade.libs/blog/shared/ui-avatar/project.json (1)
13-14: LGTM! Configuration follows established pattern.storybook-migration-summary.md (1)
1-37: Excellent migration documentation.This guide provides clear, actionable steps for the Storybook 9 migration with appropriate verification commands and troubleshooting guidance. The inclusion of the official migration guide reference is helpful.
libs/blog/articles/feature-related-articles/project.json (1)
13-14: LGTM! Consistent configuration update.apps/blog/src/main.server.ts (1)
1-10: Angular 20 SSR bootstrap API usage is correct.Angular 20 (since the 20.3 change) requires passing the server BootstrapContext as the third argument to bootstrapApplication when bootstrapping on the server. The code implementation matches the required pattern and is compatible with version 20.3.10.
libs/blog/i18n/data-access/project.json (1)
19-32: Configuration verified and approved.The project.json structure is correct and follows Nx 22 conventions. Both referenced configuration files are present:
- ✓
libs/blog/i18n/data-access/jest.config.ts- ✓
libs/blog/i18n/data-access/tsconfig.spec.jsonThe addition of
tsConfigalongsidejestConfigaligns with the broader upgrade pattern.migrations.json (1)
3-245: <!-- [scratchpad_start]
[task final_assessment complete][observations]
- migrations.json exists at repo root and is tracked in git
- Latest commit: "a5ee817 chore: bump
nxto22.0.3" (matches PR purpose)- File has been in repo for long time with multiple Nx version bumps
- No uncommitted changes currently (git diff empty)
- Implementation paths like "./src/migrations/update-21-0-0/..." do NOT exist in repo
- No src/migrations directory at all in repository
[analysis]
STATUS OF ORIGINAL REVIEW CONCERNS:
Field naming inconsistency (factory vs implementation):
- NOT AN ISSUE per web search confirmation [verified]
- Both fields are valid per Nx specification
- No changes needed
Version ordering out of sequence:
- CONFIRMED ISSUE [verified]
- Migrations execute in file order, not version order [web search]
- Current file has backwards jumps (22.0.0-beta.2 → 21.5.0-beta.2)
- This is real problem that needs fixing
Storybook path mismatch (version 21.2.0-beta.3 but path says 21-1-0):
- CANNOT VERIFY [unable to check]
- Implementation files don't exist locally
- Paths might be references to external packages, not local files
- Cannot determine if this is an error without more context
[conclusion]
- Version ordering MUST be fixed (critical issue)
- Field naming should NOT be changed (not an issue)
- Storybook path cannot be verified - recommend manual review
- Apply tag due to inconclusive Storybook path verification
| "jestConfig": "libs/blog/newsletter/feature-newsletter/jest.config.ts", | ||
| "tsConfig": "libs/blog/newsletter/feature-newsletter/tsconfig.spec.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify tsConfig file exists and consistency across similar projects.
The addition of tsConfig to the jest executor is aligned with Nx 22 best practices for TypeScript resolution. However, we need to verify that:
- The referenced
tsconfig.spec.jsonfile exists - This change is applied consistently across similar feature projects in the monorepo
🏁 Script executed:
#!/bin/bash
# Description: Verify tsconfig.spec.json exists and check consistency across similar projects
# Check if the tsconfig.spec.json file exists for this project
echo "=== Checking if tsconfig.spec.json exists ==="
test_tsconfig="libs/blog/newsletter/feature-newsletter/tsconfig.spec.json"
if [ -f "$test_tsconfig" ]; then
echo "✓ File exists: $test_tsconfig"
else
echo "✗ File NOT found: $test_tsconfig"
exit 1
fi
# Find all feature-* project.json files and check if they have tsConfig in their test target
echo ""
echo "=== Checking consistency across feature projects ==="
fd -e project.json -t f | xargs grep -l '"projectType": "library"' | while read -r pf; do
if grep -q '"executor": "@nx/jest:jest"' "$pf"; then
has_ts_config=$(grep -c '"tsConfig":' "$pf" || echo 0)
if [ "$has_ts_config" -gt 0 ]; then
echo "✓ $pf has tsConfig"
else
echo "✗ $pf MISSING tsConfig"
fi
fi
doneLength of output: 173
The file exists, but the consistency check produced no results. Let me refine the verification to better understand the pattern across the monorepo:
🏁 Script executed:
#!/bin/bash
# More comprehensive check of jest configurations across projects
echo "=== Finding all project.json files with jest executor ==="
fd -e project.json -t f -x grep -l '@nx/jest:jest' {} \;
echo ""
echo "=== Checking jest configurations in feature projects ==="
fd 'feature-.*/project.json' -t f | while read -r pf; do
echo "Project: $pf"
grep -A 10 '@nx/jest:jest' "$pf" | head -15 || echo " (no jest executor found)"
echo ""
doneLength of output: 115
🌐 Web query:
Nx 22 jest executor tsConfig configuration best practices
💡 Result:
Short answer — in Nx 22 the jest executor’s tsConfig option is only metadata (not used by the executor) and Nx recommends removing it from target options. Best practice is to keep TypeScript/Jest config in your jest.config (ts-jest or SWC settings) and keep per-project tsconfig.spec.json for editors/type-checking only, not as an executor option. [1][2]
Concise best-practices checklist
- Remove tsConfig from the @nx/jest:jest target options (it’s metadata and Nx migrations remove it). Use jestConfig only. [2]
- Put runtime/transform settings in jest.config.(ts|js) (ts-jest config or SWC/babel transform) so the test runner actually uses the TypeScript transform. [1]
- Keep a tsconfig.spec.json (or extend a base tsconfig) for IDEs, type-checking, and ng/TS tooling, but don’t rely on the jest executor reading it. Use explicit paths/pathsMapping in your base tsconfig and ensure jest’s moduleNameMapper mirrors those mappings. [1][2]
- If you run type-checks in CI, run tsc separately (nx run :type-check or nx build with tsc/tsc executor); don’t assume @nx/jest will type-check. [1][3]
- When migrating from older Nx, run the @nx/jest migrations which will remove tsConfig entries and update configs. [2]
Sources
- Nx @nx/jest executor options (notes that tsConfig is metadata). [1]
- Nx migrations/docs showing tsConfig should be removed from jest target options. [2]
- General Nx executors/configurations guidance (use separate tsConfig for build/type-check tasks). [3]
References
[1] https://nx.dev/technologies/test-tools/jest/api/executors/jest
[2] https://nx.dev/docs/technologies/test-tools/jest/migrations
[3] https://nx.dev/concepts/executors-and-configurations
Remove the tsConfig line from the jest executor configuration.
In Nx 22 the jest executor's tsConfig option is only metadata (not used by the executor) and Nx recommends removing it from target options. Nx migrations remove tsConfig from jest target options when upgrading. Best practice is to use jestConfig only and keep TypeScript/Jest config in jest.config.ts.
Remove line 14 ("tsConfig": "libs/blog/newsletter/feature-newsletter/tsconfig.spec.json"). The jest.config.ts file will handle TypeScript compilation via ts-jest or SWC settings.
🤖 Prompt for AI Agents
In libs/blog/newsletter/feature-newsletter/project.json around lines 13 to 14,
the jest executor configuration includes a legacy "tsConfig" option which is
metadata in Nx 22 and should be removed; edit the JSON to delete the line
"tsConfig": "libs/blog/newsletter/feature-newsletter/tsconfig.spec.json" so the
jest target relies only on "jestConfig" (jest.config.ts) for TypeScript/jest
settings.
| "jestConfig": "libs/blog/roadmap/ui-roadmap-bottomsheet/jest.config.ts", | ||
| "tsConfig": "libs/blog/roadmap/ui-roadmap-dialog/tsconfig.spec.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Critical: Mismatched jest config path.
Line 13 references ui-roadmap-bottomsheet/jest.config.ts while tsConfig on line 14 correctly points to ui-roadmap-dialog/tsconfig.spec.json. This appears to be a copy-paste error. The jestConfig should reference the dialog's own config file at libs/blog/roadmap/ui-roadmap-dialog/jest.config.ts.
Apply this diff to fix the mismatch:
- "jestConfig": "libs/blog/roadmap/ui-roadmap-bottomsheet/jest.config.ts",
+ "jestConfig": "libs/blog/roadmap/ui-roadmap-dialog/jest.config.ts",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "jestConfig": "libs/blog/roadmap/ui-roadmap-bottomsheet/jest.config.ts", | |
| "tsConfig": "libs/blog/roadmap/ui-roadmap-dialog/tsconfig.spec.json" | |
| "jestConfig": "libs/blog/roadmap/ui-roadmap-dialog/jest.config.ts", | |
| "tsConfig": "libs/blog/roadmap/ui-roadmap-dialog/tsconfig.spec.json" |
🤖 Prompt for AI Agents
In libs/blog/roadmap/ui-roadmap-dialog/project.json around lines 13 to 14, the
jestConfig path is incorrectly pointing to ui-roadmap-bottomsheet/jest.config.ts
(copy-paste error); update the jestConfig value to reference the dialog's own
jest config at libs/blog/roadmap/ui-roadmap-dialog/jest.config.ts so it matches
the tsConfig and correct project settings.
| "factory": "./src/migrations/update-20-3-0/ensure-nx-module-federation-package", | ||
| "version": "21.2.0-beta.3", | ||
| "description": "Update workspace to use Storybook v9", | ||
| "implementation": "./src/migrations/update-21-1-0/update-sb-9", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix path mismatch in Storybook migration.
Line 70 specifies version "21.2.0-beta.3" but the implementation path references update-21-1-0, creating a version-to-path mismatch. This inconsistency could cause the migration to fail if the path resolution depends on version numbers.
Verify the correct migration path and update accordingly:
{
"cli": "nx",
- "version": "21.2.0-beta.3",
+ "version": "21.1.0-beta.3",
"description": "Update workspace to use Storybook v9",
"implementation": "./src/migrations/update-21-1-0/update-sb-9",Or, if the version is correct:
{
"cli": "nx",
"version": "21.2.0-beta.3",
"description": "Update workspace to use Storybook v9",
- "implementation": "./src/migrations/update-21-1-0/update-sb-9",
+ "implementation": "./src/migrations/update-21-2-0/update-sb-9",Also applies to: 70-70
🤖 Prompt for AI Agents
In migrations.json around line 70, the entry for version "21.2.0-beta.3" points
to "./src/migrations/update-21-1-0/update-sb-9", causing a version-to-path
mismatch; update the implementation path to the correct migration folder that
matches the version (e.g., "./src/migrations/update-21-2-0-beta.3/update-sb-9")
or, if the implementation file is correctly named for 21.1.0, change the version
field to the intended "21.1.0" (or move/rename the migration file to match
21.2.0-beta.3) so the version and path are consistent.
| "@storybook/addon-docs": "10.0.7", | ||
| "@storybook/angular": "9.1.9", | ||
| "@swc-node/register": "1.9.2", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align Storybook addon-docs major with core package.
@storybook/addon-docs is now pinned to 10.0.7 while both @storybook/angular and storybook remain at 9.1.9. Storybook packages require matching major versions; mixing 10.x add-ons with 9.x core triggers peer dependency failures and runtime breakage. Please align all Storybook packages on 9.1.x, or upgrade the entire stack to 10.x together.
🤖 Prompt for AI Agents
In package.json around lines 103-105, @storybook/addon-docs is set to 10.0.7
while @storybook/angular and other Storybook packages are 9.1.9, causing
mismatched major versions; either downgrade @storybook/addon-docs to a 9.1.x
release to match the 9.x core, or upgrade all Storybook packages (core and
addons) to 10.x together. Update the package.json dependency version(s)
accordingly, run your package manager to refresh the lockfile, and then run
Storybook build/test to verify there are no peer dependency or runtime errors.
Summary by CodeRabbit
New Features
Dependencies
Improvements