Skip to content

The @nx/angular plugin provides various migrations to help you migrate to newer versions of angular projects within your Nx workspace. Below is a complete reference for all available migrations.

21.5.x

set-tsconfig-option

Version: 21.5.0-beta.0

Set the ‘tsConfig’ option to build and test targets to help with Angular migration issues.

Set tsConfig option for build and test targets

  • Set the tsConfig option in the target options for library build executors. It moves the value from the target development configuration and it doesn’t set it if the option is already set.
  • Set tsconfig.spec.json as the tsConfig option in the target options for the @nx/jest:jest executor. It only does it if the file exists and the options is not already set.

Examples

The migration will move the tsConfig option for library build executors (@nx/angular:ng-packagr-lite and @nx/angular:package) from the development configuration to the target options if it’s not already set:

{% tabs %} {% tab label=“Before” %}

{
"targets": {
"build": {
"executor": "@nx/angular:ng-packagr-lite",
"configurations": {
"development": {
"tsConfig": "libs/lib1/tsconfig.lib.dev.json"
}
}
}
}
}

{% /tab %}

{% tab label=“After” %}

{
"targets": {
"build": {
"executor": "@nx/angular:ng-packagr-lite",
"options": {
"tsConfig": "libs/lib1/tsconfig.lib.dev.json"
},
"configurations": {
"development": {}
}
}
}
}

{% /tab %} {% /tabs %}

The migration will set the tsConfig option for the @nx/jest:jest executor when the tsconfig.spec.json file exists and the option is not already set:

{% tabs %} {% tab label=“Before” %}

{
"targets": {
"test": {
"executor": "@nx/jest:jest"
}
}
}

{% /tab %}

{% tab label=“After” %}

{
"targets": {
"test": {
"executor": "@nx/jest:jest",
"options": {
"tsConfig": "apps/app1/tsconfig.spec.json"
}
}
}
}

{% /tab %} {% /tabs %}

If the tsConfig option is already set in the target options, the migration will not modify the configuration:

{% tabs %} {% tab label=“Before” %}

{
"targets": {
"build": {
"executor": "@nx/angular:ng-packagr-lite",
"options": {
"tsConfig": "libs/lib1/tsconfig.lib.json"
},
"configurations": {
"development": {
"tsConfig": "libs/lib1/tsconfig.lib.dev.json"
}
}
}
}
}

{% /tab %}

{% tab label=“After” %}

{
"targets": {
"build": {
"executor": "@nx/angular:ng-packagr-lite",
"options": {
"tsConfig": "libs/lib1/tsconfig.lib.json"
},
"configurations": {
"development": {
"tsConfig": "libs/lib1/tsconfig.lib.dev.json"
}
}
}
}
}

{% /tab %} {% /tabs %}

update-angular-cli-version-20-2-0

Version: 21.5.0-beta.2

Update the @angular/cli package version to ~20.2.0.

Requires

NameVersion
@angular/core>=20.2.0

Sample Code Changes

Update the @angular/cli package version in the package.json file at the workspace root to ~20.2.0.

{% tabs %} {% tab label=“Before” %}

{
"devDependencies": {
"@angular/cli": "~20.1.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"devDependencies": {
"@angular/cli": "~20.2.0"
}
}

{% /tab %}

{% /tabs %}

remove-default-karma-configuration-files

Version: 21.5.0-beta.2

Remove any Karma configuration files that only contain the default content. The default configuration is automatically available without a specific project configurationfile.

Requires

NameVersion
@angular/core>=20.2.0

Remove the Default Karma Configuration Files

Removes Karma configuration files that match the default configuration generated by Angular CLI to reduce boilerplate code in the workspace. The migration also removes the karmaConfig option from project targets when the configuration file is removed.

Examples

The migration will remove karma.conf.js files that contain only default settings and update the project configuration:

{% tabs %} {% tab label=“Before” %}

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
},
jasmineHtmlReporter: {
suppressAll: true, // removes the duplicated traces
},
coverageReporter: {
dir: require('path').join(__dirname, '../../coverage/my-app'),
subdir: '.',
reporters: [{ type: 'html' }, { type: 'text-summary' }],
},
reporters: ['progress', 'kjhtml'],
browsers: ['Chrome'],
restartOnFileChange: true,
});
};
{
"name": "my-app",
"targets": {
"test": {
"executor": "@angular-devkit/build-angular:karma",
"options": {
"karmaConfig": "apps/my-app/karma.conf.js",
"polyfills": ["zone.js", "zone.js/testing"]
}
}
}
}

{% /tab %}

{% tab label=“After” %}

File apps/my-app/karma.conf.js is removed.

{
"name": "my-app",
"targets": {
"test": {
"executor": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": ["zone.js", "zone.js/testing"]
}
}
}
}

{% /tab %} {% /tabs %}

If the Karma configuration contains customizations, the migration will preserve the file and configuration:

{% tabs %} {% tab label=“Before” %}

module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma'),
],
browsers: ['ChromeHeadless'], // Custom browser configuration
restartOnFileChange: true,
});
};

{% /tab %}

{% tab label=“After” %}

module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma'),
],
browsers: ['ChromeHeadless'], // Custom browser configuration
restartOnFileChange: true,
});
};

{% /tab %} {% /tabs %}

21.5.0-package-updates

Version: 21.5.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~20.2.0Updated only
@angular-devkit/core~20.2.0Updated only
@angular-devkit/schematics~20.2.0Updated only
@angular/build~20.2.0Updated only
@angular/pwa~20.2.0Updated only
@angular/ssr~20.2.0Updated only
@schematics/angular~20.2.0Updated only
@angular-devkit/architect~0.2002.0Updated only
@angular-devkit/build-webpack~0.2002.0Updated only
@angular/core~20.2.0Added if not installed
@angular/material~20.2.0Updated only
@angular/cdk~20.2.0Updated only
@angular/google-maps~20.2.0Updated only
ng-packagr~20.2.0Updated only

21.5.0-angular-eslint-package-updates

Version: 21.5.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
angular-eslint^20.2.0Updated only
@angular-eslint/eslint-plugin^20.2.0Updated only
@angular-eslint/eslint-plugin-template^20.2.0Updated only
@angular-eslint/template-parser^20.2.0Updated only
@angular-eslint/utils^20.2.0Updated only
@angular-eslint/schematics^20.2.0Updated only
@angular-eslint/test-utils^20.2.0Updated only
@angular-eslint/builder^20.2.0Updated only
@angular-eslint/bundled-angular-compiler^20.2.0Updated only

21.5.0-@angular-eslint-package-updates

Version: 21.5.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-eslint/eslint-plugin^20.2.0Updated only
@angular-eslint/eslint-plugin-template^20.2.0Updated only
@angular-eslint/template-parser^20.2.0Updated only
@angular-eslint/utils^20.2.0Updated only
@angular-eslint/schematics^20.2.0Updated only
@angular-eslint/test-utils^20.2.0Updated only
@angular-eslint/builder^20.2.0Updated only
@angular-eslint/bundled-angular-compiler^20.2.0Updated only

21.4.x

21.4.0-ngrx-package-updates

Version: 21.4.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store^20.0.0Updated only

21.3.x

update-angular-cli-version-20-1-0

Version: 21.3.0-beta.4

Update the @angular/cli package version to ~20.1.0.

Requires

NameVersion
@angular/core>=20.1.0

Sample Code Changes

Update the @angular/cli package version in the package.json file at the workspace root to ~20.1.0.

{% tabs %} {% tab label=“Before” %}

{
"devDependencies": {
"@angular/cli": "~20.0.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"devDependencies": {
"@angular/cli": "~20.1.0"
}
}

{% /tab %}

{% /tabs %}

21.3.0-package-updates

Version: 21.3.0-beta.4

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~20.1.0Updated only
@angular-devkit/core~20.1.0Updated only
@angular-devkit/schematics~20.1.0Updated only
@angular/build~20.1.0Updated only
@angular/pwa~20.1.0Updated only
@angular/ssr~20.1.0Updated only
@schematics/angular~20.1.0Updated only
@angular-devkit/architect~0.2001.0Updated only
@angular-devkit/build-webpack~0.2001.0Updated only
@angular/core~20.1.0Added if not installed
@angular/material~20.1.0Updated only
@angular/cdk~20.1.0Updated only
@angular/google-maps~20.1.0Updated only
ng-packagr~20.1.0Updated only

21.3.5-jest-package-updates

Version: 21.3.5-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~15.0.0Updated only

21.2.x

update-angular-cli-version-20-0-0

Version: 21.2.0-beta.3

Update the @angular/cli package version to ~20.0.0.

Requires

NameVersion
@angular/core>=20.0.0

Sample Code Changes

Update the @angular/cli package version in the package.json file at the workspace root to ~20.0.0.

{% tabs %} {% tab label=“Before” %}

{
"devDependencies": {
"@angular/cli": "~19.2.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"devDependencies": {
"@angular/cli": "~20.0.0"
}
}

{% /tab %}

{% /tabs %}

migrate-provide-server-rendering-import

Version: 21.2.0-beta.3

Migrate imports of provideServerRendering from @angular/platform-server to @angular/ssr.

Requires

NameVersion
@angular/core>=20.0.0

Migrate Imports of provideServerRendering from @angular/platform-server to @angular/ssr

Migrate the imports of provideServerRendering from @angular/platform-server to @angular/ssr. This migration will also add the @angular/ssr package to your dependencies if needed.

Examples

Change the import of provideServerRendering from @angular/platform-server to @angular/ssr:

{% tabs %} {% tab label=“Before” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering } from '@angular/platform-server';
const serverConfig: ApplicationConfig = {
providers: [provideServerRendering()],
};

{% /tab %}

{% tab label=“After” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering } from '@angular/ssr';
const serverConfig: ApplicationConfig = {
providers: [provideServerRendering()],
};

{% /tab %} {% /tabs %}

If you already have imports from @angular/ssr, the migration will add provideServerRendering to the existing import:

{% tabs %} {% tab label=“Before” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering } from '@angular/platform-server';
import { provideServerRouting } from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [provideServerRendering(), provideServerRouting(serverRoutes)],
};

{% /tab %}

{% tab label=“After” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRouting, provideServerRendering } from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [provideServerRendering(), provideServerRouting(serverRoutes)],
};

{% /tab %} {% /tabs %}

replace-provide-server-routing

Version: 21.2.0-beta.3

Replace provideServerRouting and provideServerRoutesConfig with provideServerRendering using withRoutes.

Requires

NameVersion
@angular/core>=20.0.0

Replace provideServerRouting and provideServerRoutesConfig with provideServerRendering

Replace provideServerRouting and provideServerRoutesConfig calls with provideServerRendering using withRoutes.

Examples

Remove provideServerRouting from your providers array and update the provideServerRendering call to use withRoutes:

{% tabs %} {% tab label=“Before” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering, provideServerRouting } from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [provideServerRendering(), provideServerRouting(serverRoutes)],
};

{% /tab %}

{% tab label=“After” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering, withRoutes } from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [provideServerRendering(withRoutes(serverRoutes))],
};

{% /tab %} {% /tabs %}

If you have provideServerRouting with additional arguments, the migration will preserve them:

{% tabs %} {% tab label=“Before” %}

import { ApplicationConfig } from '@angular/core';
import {
provideServerRendering,
provideServerRouting,
withAppShell,
} from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [
provideServerRendering(),
provideServerRouting(serverRoutes, withAppShell(AppShellComponent)),
],
};

{% /tab %}

{% tab label=“After” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering, withAppShell, withRoutes } from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [
provideServerRendering(
withRoutes(serverRoutes),
withAppShell(AppShellComponent)
),
],
};

{% /tab %} {% /tabs %}

Remove provideServerRoutesConfig from your providers array and update the provideServerRendering call to use withRoutes:

{% tabs %} {% tab label=“Before” %}

import { ApplicationConfig } from '@angular/core';
import {
provideServerRendering,
provideServerRoutesConfig,
withAppShell,
} from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [
provideServerRendering(),
provideServerRoutesConfig(serverRoutes, withAppShell(AppShellComponent)),
],
};

{% /tab %}

{% tab label=“After” %}

import { ApplicationConfig } from '@angular/core';
import { provideServerRendering, withAppShell, withRoutes } from '@angular/ssr';
import { serverRoutes } from './app.routes.server';
const serverConfig: ApplicationConfig = {
providers: [
provideServerRendering(
withRoutes(serverRoutes),
withAppShell(AppShellComponent)
),
],
};

{% /tab %} {% /tabs %}

set-generator-defaults-for-previous-style-guide

Version: 21.2.0-beta.3

Update the generator defaults to maintain the previous style guide behavior.

Requires

NameVersion
@angular/core>=20.0.0

Set Generator Defaults for Previous Style Guide

Updates the generator defaults in the nx.json file to maintain the previous Angular Style Guide behavior. This ensures that newly generated code in existing workspaces follows the same conventions as the existing codebase.

Examples

The migration will add default configurations for the relevant Angular generators in the workspace’s nx.json file:

{% tabs %} {% tab label=“Before” %}

{
"generators": {}
}

{% /tab %}

{% tab label=“After” %}

{
"generators": {
"@nx/angular:component": {
"type": "component"
},
"@nx/angular:directive": {
"type": "directive"
},
"@nx/angular:service": {
"type": "service"
},
"@nx/angular:scam": {
"type": "component"
},
"@nx/angular:scam-directive": {
"type": "directive"
},
"@nx/angular:guard": {
"typeSeparator": "."
},
"@nx/angular:interceptor": {
"typeSeparator": "."
},
"@nx/angular:module": {
"typeSeparator": "."
},
"@nx/angular:pipe": {
"typeSeparator": "."
},
"@nx/angular:resolver": {
"typeSeparator": "."
},
"@schematics/angular:component": {
"type": "component"
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:interceptor": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
}
}

{% /tab %} {% /tabs %}

If some of the generator defaults are already set, the migration will not override them:

{% tabs %} {% tab label=“Before” %}

{
"generators": {
"@nx/angular:component": {
"type": "cmp"
},
"@schematics/angular:component": {
"type": "cmp"
},
"@nx/angular:interceptor": {
"typeSeparator": "-"
},
"@schematics/angular:interceptor": {
"typeSeparator": "-"
}
}
}

{% /tab %}

{% tab label=“After” %}

{
"generators": {
"@nx/angular:component": {
"type": "cmp"
},
"@schematics/angular:component": {
"type": "cmp"
},
"@nx/angular:interceptor": {
"typeSeparator": "-"
},
"@schematics/angular:interceptor": {
"typeSeparator": "-"
},
"@nx/angular:directive": {
"type": "directive"
},
"@nx/angular:service": {
"type": "service"
},
"@nx/angular:scam": {
"type": "component"
},
"@nx/angular:scam-directive": {
"type": "directive"
},
"@nx/angular:guard": {
"typeSeparator": "."
},
"@nx/angular:module": {
"typeSeparator": "."
},
"@nx/angular:pipe": {
"typeSeparator": "."
},
"@nx/angular:resolver": {
"typeSeparator": "."
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
}
}

{% /tab %} {% /tabs %}

update-module-resolution

Version: 21.2.0-beta.3

Update ‘moduleResolution’ to ‘bundler’ in TypeScript configurations. You can read more about this here: https://www.typescriptlang.org/tsconfig/#moduleResolution.

Requires

NameVersion
@angular/core>=20.0.0

Update moduleResolution to bundler in TypeScript configurations

Updates the TypeScript moduleResolution option to 'bundler' for improved compatibility with modern package resolution algorithms used by bundlers like Webpack, Vite, and esbuild.

Examples

The migration will update TypeScript configuration files in your workspace to use the 'bundler' module resolution strategy:

{% tabs %} {% tab label=“Before” %}

{
"compilerOptions": {
"module": "es2020",
"moduleResolution": "node"
}
}

{% /tab %}

{% tab label=“After” %}

{
"compilerOptions": {
"module": "es2020",
"moduleResolution": "bundler"
}
}

{% /tab %} {% /tabs %}

If the moduleResolution is already set to 'bundler' or the module is set to 'preserve', the migration will not modify the configuration:

{% tabs %} {% tab label=“Before” %}

{
"compilerOptions": {
"module": "preserve",
"moduleResolution": "node"
}
}

{% /tab %}

{% tab label=“After” %}

{
"compilerOptions": {
"module": "preserve",
"moduleResolution": "node"
}
}

{% /tab %} {% /tabs %}

21.2.0-package-updates

Version: 21.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~20.0.0Updated only
@angular-devkit/core~20.0.0Updated only
@angular-devkit/schematics~20.0.0Updated only
@angular/build~20.0.0Updated only
@angular/pwa~20.0.0Updated only
@angular/ssr~20.0.0Updated only
@schematics/angular~20.0.0Updated only
@angular-devkit/architect~0.2000.0Updated only
@angular-devkit/build-webpack~0.2000.0Updated only
@angular/core~20.0.0Added if not installed
@angular/material~20.0.0Updated only
@angular/cdk~20.0.0Updated only
@angular/google-maps~20.0.0Updated only
ng-packagr~20.0.0Updated only

21.2.0-angular-eslint-package-updates

Version: 21.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
angular-eslint^20.0.0Updated only

21.2.0-@angular-eslint-package-updates

Version: 21.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-eslint/eslint-plugin^20.0.0Updated only
@angular-eslint/eslint-plugin-template^20.0.0Updated only
@angular-eslint/template-parser^20.0.0Updated only
@angular-eslint/utils^20.0.0Updated only
@angular-eslint/schematics^20.0.0Updated only
@angular-eslint/test-utils^20.0.0Updated only
@angular-eslint/builder^20.0.0Updated only
@angular-eslint/bundled-angular-compiler^20.0.0Updated only

21.2.0-angular-rspack-package-updates

Version: 21.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@nx/angular-rspack^21.1.0Updated only

21.2.0-jest-package-updates

Version: 21.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~14.6.0Updated only

21.1.x

21.1.0-package-updates

Version: 21.1.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@nx/angular-rspack^21.0.1Updated only

21.0.x

set-continuous-option

Version: 21.0.0-beta.3

Set the continuous option to true for continuous tasks.

Set continuous Option for Continuous Tasks

This migration sets the continuous option to true for tasks that are known to run continuously, and only if the option is not already explicitly set.

Specifically, it updates Angular targets using the following executors:

  • @angular-devkit/build-angular:dev-server
  • @angular-devkit/build-angular:ssr-dev-server
  • @nx/angular:dev-server
  • @nx/angular:module-federation-dev-server
  • @nx/angular:module-federation-dev-ssr

Examples

{% tabs %} {% tab label=“Before” %}

{
// ...
"targets": {
// ...
"serve": {
"executor": "@angular-devkit/build-angular:dev-server",
"options": {
"buildTarget": "my-app:build",
"port": 4200
}
}
}
}

{% /tab %}

{% tab label=“After” %}

{
// ...
"targets": {
// ...
"serve": {
"continuous": true,
"executor": "@angular-devkit/build-angular:dev-server",
"options": {
"buildTarget": "my-app:build",
"port": 4200
}
}
}
}

{% /tab %} {% /tabs %}

When a target is already explicitly configured with a continuous option, the migration will not modify it:

{% tabs %} {% tab label=“Before” %}

{
// ...
"targets": {
// ...
"serve": {
"continuous": false,
"executor": "@nx/angular:dev-server",
"options": {
"buildTarget": "my-app:build",
"port": 4200
}
}
}
}

{% /tab %}

{% tab label=“After” %}

{
// ...
"targets": {
// ...
"serve": {
"continuous": false,
"executor": "@nx/angular:dev-server",
"options": {
"buildTarget": "my-app:build",
"port": 4200
}
}
}
}

{% /tab %} {% /tabs %}

change-data-persistence-operators-imports-to-ngrx-router-store-data-persistence

Version: 21.0.0-beta.5

Change the data persistence operator imports to ‘@ngrx/router-store/data-persistence’.

Requires

NameVersion
@ngrx/store>=16.0.0

Change the Data Persistence Operator Imports from @nx/angular to @ngrx/router-store/data-persistence

The data persistence operators (fetch, navigation, optimisticUpdate, and pessimisticUpdate) have been deprecated for a while and are now removed from the @nx/angular package. This migration automatically updates your import statements to use the @ngrx/router-store/data-persistence module and adds @ngrx/router-store to your dependencies if needed.

Examples

If you import only data persistence operators from @nx/angular, the migration will update the import path to @ngrx/router-store/data-persistence.

{% tabs %} {% tab label=“Before” %}

import { Actions, createEffect, ofType } from '@ngrx/effects';
import { fetch } from '@nx/angular';
@Injectable()
export class UsersEffects {
// ...
}

{% /tab %}

{% tab label=“After” %}

import { Injectable } from '@angular/core';
import { fetch } from '@ngrx/router-store/data-persistence';
@Injectable()
export class UsersEffects {
// ...
}

{% /tab %} {% /tabs %}

If you import multiple data persistence operators from @nx/angular, the migration will update the import path for all of them.

{% tabs %} {% tab label=“Before” %}

import { Injectable } from '@angular/core';
import { fetch, navigation } from '@nx/angular';
@Injectable()
export class UsersEffects {
// ...
}

{% /tab %}

{% tab label=“After” %}

import { Injectable } from '@angular/core';
import { fetch, navigation } from '@ngrx/router-store/data-persistence';
@Injectable()
export class UsersEffects {
// ...
}

{% /tab %}

{% /tab %} {% /tabs %}

If your imports mix data persistence operators with other utilities from @nx/angular, the migration will split them into separate import statements.

{% tabs %} {% tab label=“Before” %}

import { Injectable } from '@angular/core';
import { fetch, someExtraUtility, navigation } from '@nx/angular';
@Injectable()
export class UsersEffects {
// ...
}

{% /tab %}

{% tab label=“After” %}

import { Injectable } from '@angular/core';
import { fetch, navigation } from '@ngrx/router-store/data-persistence';
import { someExtraUtility } from '@nx/angular';
@Injectable()
export class UsersEffects {
// ...
}

{% /tab %} {% /tabs %}

If you don’t already have @ngrx/router-store in your dependencies, the migration will add it to your package.json.

{% tabs %} {% tab label=“Before” %}

{
"dependencies": {
"@nx/angular": "^21.0.0",
"@ngrx/store": "^19.1.0",
"@ngrx/effects": "^19.1.0"
// ...
}
}

{% /tab %}

{% tab label=“After” %}

{
"dependencies": {
"@nx/angular": "^21.0.0",
"@ngrx/store": "^19.1.0",
"@ngrx/effects": "^19.1.0",
"@ngrx/router-store": "^19.1.0"
// ...
}
}

{% /tab %} {% /tabs %}

20.8.x

20.8.1-package-updates

Version: 20.8.1-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@nx/angular-rspack^20.7.0Updated only

20.5.x

update-angular-cli-version-19-2-0

Version: 20.5.0-beta.5

Update the @angular/cli package version to ~19.2.0.

Requires

NameVersion
@angular/core>=19.2.0

Sample Code Changes

Update the @angular/cli package version in the package.json file at the workspace root to ~19.2.0.

{% tabs %} {% tab label=“Before” %}

{
"devDependencies": {
"@angular/cli": "~19.1.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"devDependencies": {
"@angular/cli": "~19.2.0"
}
}

{% /tab %}

{% /tabs %}

20.5.0-package-updates

Version: 20.5.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~19.2.0Updated only
@angular-devkit/core~19.2.0Updated only
@angular-devkit/schematics~19.2.0Updated only
@angular/build~19.2.0Updated only
@angular/pwa~19.2.0Updated only
@angular/ssr~19.2.0Updated only
@schematics/angular~19.2.0Updated only
@angular-devkit/architect~0.1902.0Updated only
@angular-devkit/build-webpack~0.1902.0Updated only
@angular/core~19.2.0Added if not installed
@angular/material~19.2.1Updated only
@angular/cdk~19.2.1Updated only
@angular/google-maps~19.2.1Updated only
ng-packagr~19.2.0Updated only

20.5.0-angular-eslint-package-updates

Version: 20.5.0-rc.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
angular-eslint^19.2.0Updated only
@angular-eslint/eslint-plugin^19.2.0Updated only
@angular-eslint/eslint-plugin-template^19.2.0Updated only
@angular-eslint/template-parser^19.2.0Updated only
@angular-eslint/utils^19.2.0Updated only
@angular-eslint/schematics^19.2.0Updated only
@angular-eslint/test-utils^19.2.0Updated only
@angular-eslint/builder^19.2.0Updated only
@angular-eslint/bundled-angular-compiler^19.2.0Updated only

20.4.x

update-angular-cli-version-19-1-0

Version: 20.4.0-beta.1

Update the @angular/cli package version to ~19.1.0.

Requires

NameVersion
@angular/core>=19.1.0

Update @angular/cli to ~19.1.0

Update the version of the Angular CLI if it is specified in package.json

Sample Code Changes

Update in devDependencies:

{% tabs %} {% tab label=“Before” %}

{
"devDependencies": {
"@angular/cli": "~13.3.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"devDependencies": {
"@angular/cli": "~19.1.0"
}
}

{% /tab %} {% /tabs %}

Update in dependencies:

{% tabs %} {% tab label=“Before” %}

{
"dependencies": {
"@angular/cli": "~13.3.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"dependencies": {
"@angular/cli": "~19.1.0"
}
}

{% /tab %} {% /tabs %}

20.4.0-package-updates

Version: 20.4.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~19.1.0Updated only
@angular-devkit/core~19.1.0Updated only
@angular-devkit/schematics~19.1.0Updated only
@angular/build~19.1.0Updated only
@angular/pwa~19.1.0Updated only
@angular/ssr~19.1.0Updated only
@schematics/angular~19.1.0Updated only
@angular-devkit/architect~0.1901.0Updated only
@angular-devkit/build-webpack~0.1901.0Updated only
@angular/core~19.1.0Added if not installed
@angular/material~19.1.0Updated only
@angular/cdk~19.1.0Updated only
@angular/google-maps~19.1.0Updated only
ng-packagr~19.1.0Updated only

20.3.x

ensure-nx-module-federation-package

Version: 20.3.0-beta.2

If workspace includes Module Federation projects, ensure the new @nx/module-federation package is installed.

Ensure the @nx/module-federation Package is Installed

If workspace includes Module Federation projects, ensure the new @nx/module-federation package is installed.

Sample Code Changes

{% tabs %} {% tab label=“Before” %}

{
"dependencies": {}
}

{% /tab %} {% tab label=“After” %}

{
"dependencies": {
"@nx/module-federation": "20.3.0"
}
}

{% /tab %} {% /tabs %}

20.2.3-ngrx-package-updates

Version: 20.3.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store^19.0.0Updated only

20.2.x

update-20-2-0-update-module-federation-config-import

Version: 20.2.0-beta.2

Update the ModuleFederationConfig import use @nx/module-federation.

Migrate Module Federation Imports to New Package

Update the ModuleFederationConfig imports to use @nx/module-federation.

Sample Code Changes

Update import paths for ModuleFederationConfig.

{% tabs %} {% tab label=“Before” %}

import { ModuleFederationConfig } from '@nx/webpack';

{% /tab %} {% tab label=“After” %}

import { ModuleFederationConfig } from '@nx/module-federation';

{% /tab %} {% /tabs %}

update-20-2-0-update-with-module-federation-import

Version: 20.2.0-beta.2

Update the withModuleFederation import use @nx/module-federation/angular.

Migrate withModuleFederation Import to New Package

Update the withModuleFederation import to use @nx/module-federation/webpack.

Sample Code Changes

Update import paths for withModuleFederation and withModuleFederationForSSR.

{% tabs %} {% tab label=“Before” %}

import {
withModuleFederation,
withModuleFederationForSSR,
} from '@nx/angular/module-federation';

{% /tab %} {% tab label=“After” %}

import {
withModuleFederation,
withModuleFederationForSSR,
} from '@nx/module-federation/angular';

{% /tab %} {% /tabs %}

update-angular-cli-version-19-0-0

Version: 20.2.0-beta.5

Update the @angular/cli package version to ~19.0.0.

Requires

NameVersion
@angular/core>=19.0.0

Update @angular/cli to ~19.0.0

Update the version of the Angular CLI if it is specified in package.json

Sample Code Changes

Update in devDependencies:

{% tabs %} {% tab label=“Before” %}

{
"devDependencies": {
"@angular/cli": "~13.3.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"devDependencies": {
"@angular/cli": "~19.0.0"
}
}

{% /tab %} {% /tabs %}

Update in dependencies:

{% tabs %} {% tab label=“Before” %}

{
"dependencies": {
"@angular/cli": "~13.3.0"
}
}

{% /tab %} {% tab label=“After” %}

{
"dependencies": {
"@angular/cli": "~19.0.0"
}
}

{% /tab %} {% /tabs %}

add-localize-polyfill-to-targets

Version: 20.2.0-beta.5

Add the ‘@angular/localize/init’ polyfill to the ‘polyfills’ option of targets using esbuild-based executors.

Requires

NameVersion
@angular/core>=19.0.0

Add Localize Polyfill to Targets

Add the ‘@angular/localize/init’ polyfill to the ‘polyfills’ option of targets using esbuild-based executors.

Sample Code Changes

Add the @angular/localize/init polyfill to any of these executors:

  • @angular/build:application
  • @angular-devkit/build-angular:application
  • @nx/angular:application
  • @angular-devkit/build-angular:browser-esbuild
  • @nx/angular:browser-esbuild

{% tabs %} {% tab label=“Before” %}

{
"targets": {
"build": {
"executor": "@angular/build:application",
"options": {
"localize": true
}
}
}
}

{% /tab %} {% tab label=“After” %}

{
"targets": {
"build": {
"executor": "@angular/build:application",
"options": {
"localize": true,
"polyfills": ["@angular/localize/init"]
}
}
}
}

{% /tab %} {% /tabs %}

update-angular-ssr-imports-to-use-node-entry-point

Version: 20.2.0-beta.5

Update ‘@angular/ssr’ import paths to use the new ‘/node’ entry point when ‘CommonEngine’ is detected.

Requires

NameVersion
@angular/core>=19.0.0

Update Angular SSR Imports to Use Node Entry Point

Update ‘@angular/ssr’ import paths to use the new ‘/node’ entry point when ‘CommonEngine’ is detected.

Sample Code Changes

Update import paths for SSR CommonEngine properties to use @angular/ssr/node.

{% tabs %} {% tab label=“Before” %}

import { CommonEngine } from '@angular/ssr';
import type {
CommonEngineOptions,
CommonEngineRenderOptions,
} from '@angular/ssr';

{% /tab %} {% tab label=“After” %}

import { CommonEngine } from '@angular/ssr/node';
import type {
CommonEngineOptions,
CommonEngineRenderOptions,
} from '@angular/ssr/node';

{% /tab %} {% /tabs %}

disable-angular-eslint-prefer-standalone

Version: 20.2.0-beta.6

Disable the Angular ESLint prefer-standalone rule if not set.

Requires

NameVersion
@angular/core>=19.0.0

Disable Angular ESLint Prefer Standalone

Disable the Angular ESLint prefer-standalone rule if not set.

Sample Code Changes

Update import paths for withModuleFederation and withModuleFederationForSSR.

{% tabs %} {% tab label=“Before” %}

{
"overrides": [
{
"files": ["*.html"],
"rules": {
"some-rule-for-html": "error"
}
}
]
}

{% /tab %} {% tab label=“After” %}

{
"overrides": [
{
"files": ["*.html"],
"rules": {
"some-rule-for-html": "error"
}
},
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/prefer-standalone": "off"
}
}
]
}

{% /tab %} {% /tabs %}

import { addProjectConfiguration, writeJson, type ProjectConfiguration, type ProjectGraph, type Tree, } from ‘@nx/devkit’; import { createTreeWithEmptyWorkspace } from ‘@nx/devkit/testing’; import migration from ’./disable-angular-eslint-prefer-standalone’;

let projectGraph: ProjectGraph; jest.mock(‘@nx/devkit’, () => ({ …jest.requireActual(‘@nx/devkit’), createProjectGraphAsync: () => Promise.resolve(projectGraph), }));

describe(‘disable-angular-eslint-prefer-standalone’, () => { let tree: Tree;

beforeEach(() => { tree = createTreeWithEmptyWorkspace();

const projectConfig: ProjectConfiguration = {
name: 'app1',
root: 'apps/app1',
};
projectGraph = {
dependencies: {
app1: [
{
source: 'app1',
target: 'npm:@angular/core',
type: 'static',
},
],
},
nodes: {
app1: {
data: projectConfig,
name: 'app1',
type: 'app',
},
},
};
addProjectConfiguration(tree, projectConfig.name, projectConfig);

});

describe(‘.eslintrc.json’, () => { it(‘should not disable @angular-eslint/prefer-standalone when it is set’, async () => { writeJson(tree, ‘apps/app1/.eslintrc.json’, { overrides: [ { files: [‘*.ts’], rules: { ‘@angular-eslint/prefer-standalone’: [‘error’] }, }, ], });

await migration(tree);
expect(tree.read('apps/app1/.eslintrc.json', 'utf8'))
.toMatchInlineSnapshot(`
"{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/prefer-standalone": ["error"]
}
}
]
}
"
`);
});
it('should not disable @angular-eslint/prefer-standalone when there are multiple overrides for angular eslint and the rule is set in one of them', async () => {
writeJson(tree, 'apps/app1/.eslintrc.json', {
overrides: [
{
files: ['*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
],
},
},
{
files: ['*.ts'],
rules: { '@angular-eslint/prefer-standalone': ['error'] },
},
],
});
await migration(tree);
expect(tree.read('apps/app1/.eslintrc.json', 'utf8'))
.toMatchInlineSnapshot(`
"{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
]
}
},
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/prefer-standalone": ["error"]
}
}
]
}
"
`);
});
it('should disable @angular-eslint/prefer-standalone in an existing override for angular eslint', async () => {
writeJson(tree, 'apps/app1/.eslintrc.json', {
overrides: [
{
files: ['*.ts'],
rules: { 'no-unused-vars': 'error' },
},
{
files: ['*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
],
},
},
],
});
await migration(tree);
expect(tree.read('apps/app1/.eslintrc.json', 'utf8'))
.toMatchInlineSnapshot(`
"{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"no-unused-vars": "error"
}
},
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/prefer-standalone": "off"
}
}
]
}
"
`);
});
it('should disable @angular-eslint/prefer-standalone in an existing override for ts files', async () => {
writeJson(tree, 'apps/app1/.eslintrc.json', {
overrides: [
{
files: ['*.ts'],
rules: { 'no-unused-vars': 'error' },
},
],
});
await migration(tree);
expect(tree.read('apps/app1/.eslintrc.json', 'utf8'))
.toMatchInlineSnapshot(`
"{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"no-unused-vars": "error",
"@angular-eslint/prefer-standalone": "off"
}
}
]
}
"
`);
});
it('should disable @angular-eslint/prefer-standalone in a new override', async () => {
writeJson(tree, 'apps/app1/.eslintrc.json', {
overrides: [
{
files: ['*.html'],
rules: { 'some-rule-for-html': 'error' },
},
],
});
await migration(tree);
expect(tree.read('apps/app1/.eslintrc.json', 'utf8'))
.toMatchInlineSnapshot(`
"{
"overrides": [
{
"files": ["*.html"],
"rules": {
"some-rule-for-html": "error"
}
},
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/prefer-standalone": "off"
}
}
]
}
"
`);
});

});

describe(‘flat config’, () => { it(‘should not disable @angular-eslint/prefer-standalone when it is set’, async () => { tree.write(‘eslint.config.js’, ‘module.exports = [];’); tree.write( ‘apps/app1/eslint.config.js’, module.exports = [ { files: ['*.ts'], rules: { '@angular-eslint/prefer-standalone': ['error'] }, }, ]; );

await migration(tree);
expect(tree.read('apps/app1/eslint.config.js', 'utf8'))
.toMatchInlineSnapshot(`
"module.exports = [
{
files: ['*.ts'],
rules: { '@angular-eslint/prefer-standalone': ['error'] },
},
];
"
`);
});
it('should not disable @angular-eslint/prefer-standalone when there are multiple overrides for angular eslint and the rule is set in one of them', async () => {
tree.write('eslint.config.js', 'module.exports = [];');
tree.write(
'apps/app1/eslint.config.js',
`module.exports = [
{
files: ['*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
],
},
},
{
files: ['*.ts'],
rules: { '@angular-eslint/prefer-standalone': ['error'] },
},
];
`
);
await migration(tree);
expect(tree.read('apps/app1/eslint.config.js', 'utf8'))
.toMatchInlineSnapshot(`
"module.exports = [
{
files: ['*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
],
},
},
{
files: ['*.ts'],
rules: { '@angular-eslint/prefer-standalone': ['error'] },
},
];
"
`);
});
it('should disable @angular-eslint/prefer-standalone in an existing override for angular eslint', async () => {
tree.write('eslint.config.js', 'module.exports = [];');
tree.write(
'apps/app1/eslint.config.js',
`module.exports = [
{
files: ['*.ts'],
rules: { 'no-unused-vars': 'error' },
},
{
files: ['*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{ type: 'attribute', prefix: 'app', style: 'camelCase' },
],
},
},
];
`
);
await migration(tree);
expect(tree.read('apps/app1/eslint.config.js', 'utf8'))
.toMatchInlineSnapshot(`
"module.exports = [
{
files: ['*.ts'],
rules: { 'no-unused-vars': 'error' },
},
{
files: ['**/*.ts'],
rules: {
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
prefix: 'app',
style: 'camelCase',
},
],
'@angular-eslint/prefer-standalone': 'off',
},
},
];
"
`);
});
it('should disable @angular-eslint/prefer-standalone in an existing override for ts files', async () => {
tree.write('eslint.config.js', 'module.exports = [];');
tree.write(
'apps/app1/eslint.config.js',
`module.exports = [
{
files: ['*.ts'],
rules: { 'no-unused-vars': 'error' },
},
];
`
);
await migration(tree);
expect(tree.read('apps/app1/eslint.config.js', 'utf8'))
.toMatchInlineSnapshot(`
"module.exports = [
{
files: ['**/*.ts'],
rules: {
'no-unused-vars': 'error',
'@angular-eslint/prefer-standalone': 'off',
},
},
];
"
`);
});
it('should disable @angular-eslint/prefer-standalone in a new override', async () => {
tree.write('eslint.config.js', 'module.exports = [];');
tree.write(
'apps/app1/eslint.config.js',
`module.exports = [
{
files: ['*.html'],
rules: { 'some-rule-for-html': 'error' },
},
];
`
);
await migration(tree);
expect(tree.read('apps/app1/eslint.config.js', 'utf8'))
.toMatchInlineSnapshot(`
"module.exports = [
{
files: ['*.html'],
rules: { 'some-rule-for-html': 'error' },
},
{
files: ['**/*.ts'],
rules: {
'@angular-eslint/prefer-standalone': 'off',
},
},
];
"
`);
});

}); });

remove-angular-eslint-rules

Version: 20.2.0-beta.8

Remove Angular ESLint rules that were removed in v19.0.0.

Requires

NameVersion
@angular/core>=19.0.0

Remove Angular ESLint Rules

Remove Angular ESLint rules that were removed in v19.0.0.

Sample Code Changes

Removes @angular-eslint/no-host-metadata-property, @angular-eslint/sort-ngmodule-metadata-arrays and @angular-eslint/prefer-standalone-component from any ESLint config file. Files to be searched include .eslintrc.json, .eslintrc.base.json, .eslint.config.js and .eslint.config.base.js.

{% tabs %} {% tab label=“Before” %}

{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/no-host-metadata-property": ["error"],
"@angular-eslint/sort-ngmodule-metadata-arrays": ["error"],
"@angular-eslint/prefer-standalone-component": ["error"]
}
}
]
}

{% /tab %} {% tab label=“After” %}

{
"overrides": [
{
"files": ["*.ts"],
"rules": {}
}
]
}

{% /tab %} {% /tabs %}

remove-tailwind-config-from-ng-packagr-executors

Version: 20.2.0-beta.8

Remove the deprecated ‘tailwindConfig’ option from ng-packagr executors. Tailwind CSS configurations located at the project or workspace root will be picked up automatically.

Requires

NameVersion
@angular/core>=19.0.0

Remove tailwindConfig from ng-packagr Executors

Remove the deprecated ‘tailwindConfig’ option from ng-packagr executors. Tailwind CSS configurations located at the project or workspace root will be picked up automatically.

Sample Code Changes

Remove tailwindConfig from the @nx/angular:ng-packagr-lite or @nx/angular:package executor options in project configuration.

{% tabs %} {% tab label=“Before” %}

{
"targets": {
"build": {
"executor": "@nx/angular:ng-packagr-lite",
"options": {
"project": "libs/lib1/ng-package.json",
"tailwindConfig": "libs/lib1/tailwind.config.js"
}
}
}
}

{% /tab %} {% tab label=“After” %}

{
"targets": {
"build": {
"executor": "@nx/angular:ng-packagr-lite",
"options": {
"project": "libs/lib1/ng-package.json"
}
}
}
}

{% /tab %} {% /tabs %}

Remove tailwindConfig from the @nx/angular:ng-packagr-lite or @nx/angular:package executor target defaults in nx.json.

{% tabs %} {% tab label=“Before” %}

{
"targetDefaults": {
"@nx/angular:ng-packagr-lite": {
"options": {
"project": "{projectRoot}/ng-package.json",
"tailwindConfig": "{projectRoot}/tailwind.config.js"
}
}
}
}

{% /tab %} {% tab label=“After” %}

{
"targetDefaults": {
"@nx/angular:ng-packagr-lite": {
"options": {
"project": "{projectRoot}/ng-package.json"
}
}
}
}

{% /tab %} {% /tabs %}

20.2.0-module-federation-package-updates

Version: 20.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@module-federation/enhanced0.7.6Updated only
@module-federation/runtime0.7.6Updated only
@module-federation/sdk0.7.6Updated only
@module-federation/node2.6.11Updated only

20.2.0-package-updates

Version: 20.2.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~19.0.0Updated only
@angular-devkit/core~19.0.0Updated only
@angular-devkit/schematics~19.0.0Updated only
@angular/build~19.0.0Updated only
@angular/pwa~19.0.0Updated only
@angular/ssr~19.0.0Updated only
@schematics/angular~19.0.0Updated only
@angular-devkit/architect~0.1900.0Updated only
@angular-devkit/build-webpack~0.1900.0Updated only
@angular/core~19.0.0Added if not installed
@angular/material~19.0.0Updated only
@angular/cdk~19.0.0Updated only
@angular/google-maps~19.0.0Updated only
ng-packagr~19.0.0Updated only
zone.js~0.15.0Updated only

20.2.0-jest-package-updates

Version: 20.2.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~14.4.0Updated only

20.2.0-angular-eslint-package-updates

Version: 20.2.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
angular-eslint^19.0.0Updated only
@angular-eslint/eslint-plugin^19.0.0Updated only
@angular-eslint/eslint-plugin-template^19.0.0Updated only
@angular-eslint/template-parser^19.0.0Updated only
@angular-eslint/utils^19.0.0Updated only
@angular-eslint/schematics^19.0.0Updated only
@angular-eslint/test-utils^19.0.0Updated only
@angular-eslint/builder^19.0.0Updated only
@angular-eslint/bundled-angular-compiler^19.0.0Updated only

20.2.0-analog-package-updates

Version: 20.2.0-beta.7

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@analogjs/vitest-angular~1.10.0Updated only
@analogjs/vite-plugin-angular~1.10.0Updated only

20.2.2-angular-eslint-package-updates

Version: 20.2.2-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
angular-eslint^19.0.2Updated only
@angular-eslint/eslint-plugin^19.0.2Updated only
@angular-eslint/eslint-plugin-template^19.0.2Updated only
@angular-eslint/template-parser^19.0.2Updated only
@angular-eslint/utils^19.0.2Updated only
@angular-eslint/schematics^19.0.2Updated only
@angular-eslint/test-utils^19.0.2Updated only
@angular-eslint/builder^19.0.2Updated only
@angular-eslint/bundled-angular-compiler^19.0.2Updated only

19.7.x

19.7.0-package-updates

Version: 19.7.0-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@module-federation/enhanced~0.6.0Updated only
@module-federation/node~2.5.0Updated only

19.6.x

update-19-6-0

Version: 19.6.0-beta.4

Ensure Module Federation DTS is turned off by default.

update-angular-cli-version-18-2-0

Version: 19.6.0-beta.7

Update the @angular/cli package version to ~18.2.0.

Requires

NameVersion
@angular/core>=18.2.0

update-19-6-1-ensure-module-federation-target-defaults

Version: 19.6.1-beta.0

Ensure Target Defaults are set correctly for Module Federation.

19.6.0-package-updates

Version: 19.6.0-beta.7

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~18.2.0Updated only
@angular-devkit/core~18.2.0Updated only
@angular-devkit/schematics~18.2.0Updated only
@angular/build~18.2.0Updated only
@angular/pwa~18.2.0Updated only
@angular/ssr~18.2.0Updated only
@schematics/angular~18.2.0Updated only
@angular-devkit/architect~0.1802.0Updated only
@angular-devkit/build-webpack~0.1802.0Updated only
@angular/core~18.2.0Added if not installed
@angular/material~18.2.0Updated only
@angular/cdk~18.2.0Updated only
ng-packagr~18.2.0Updated only
zone.js~0.14.10Updated only

19.6.1-ngrx-package-updates

Version: 19.6.1-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store^18.0.2Updated only

19.5.x

update-angular-cli-version-18-1-0

Version: 19.5.0-beta.1

Update the @angular/cli package version to ~18.1.0.

Requires

NameVersion
@angular/core>=18.1.0

19.5.0-module-federation-package-updates

Version: 19.5.0-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@module-federation/node^2.3.0Updated only

19.5.0-package-updates

Version: 19.5.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~18.1.0Updated only
@angular-devkit/core~18.1.0Updated only
@angular-devkit/schematics~18.1.0Updated only
@angular/build~18.1.0Updated only
@angular/pwa~18.1.0Updated only
@angular/ssr~18.1.0Updated only
@schematics/angular~18.1.0Updated only
@angular-devkit/architect~0.1801.0Updated only
@angular-devkit/build-webpack~0.1801.0Updated only
@angular/core~18.1.0Added if not installed
@angular/material~18.1.0Updated only
@angular/cdk~18.1.0Updated only
ng-packagr~18.1.0Updated only

19.5.4-ngrx-package-updates

Version: 19.5.4-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store^18.0.1Updated only
@ngrx/operators^18.0.1Updated only

19.4.x

19.4.0-ngrx-package-updates

Version: 19.4.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store^18.0.0Updated only

19.2.x

add-typescript-eslint-utils

Version: 19.2.1-beta.0

Installs the ‘@typescript-eslint/utils’ package when having installed ‘@angular-eslint/eslint-plugin’ or ‘@angular-eslint/eslint-plugin-template’ with version >=18.0.0.

Requires

NameVersion
@angular-eslint/eslint-plugin>=18.0.0

19.1.x

update-angular-cli-version-18-0-0

Version: 19.1.0-beta.2

Update the @angular/cli package version to ~18.0.0.

Requires

NameVersion
@angular/core>=18.0.0

19.1.0-package-updates

Version: 19.1.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~18.0.0Updated only
@angular-devkit/core~18.0.0Updated only
@angular-devkit/schematics~18.0.0Updated only
@angular/pwa~18.0.0Updated only
@angular/ssr~18.0.0Updated only
@schematics/angular~18.0.0Updated only
@angular-devkit/architect~0.1800.0Updated only
@angular-devkit/build-webpack~0.1800.0Updated only
@angular/core~18.0.0Added if not installed
@angular/material~18.0.0Updated only
@angular/cdk~18.0.0Updated only
ng-packagr~18.0.0Updated only

19.1.0-jest-package-updates

Version: 19.1.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~14.1.0Updated only

19.1.2-package-updates

Version: 19.1.2-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-eslint/eslint-plugin^18.0.1Updated only
@angular-eslint/eslint-plugin-template^18.0.1Updated only
@angular-eslint/template-parser^18.0.1Updated only
@angular-eslint/utils^18.0.1Updated only
@angular-eslint/schematics^18.0.1Updated only
@angular-eslint/test-utils^18.0.1Updated only
@angular-eslint/builder^18.0.1Updated only
@angular-eslint/bundled-angular-compiler^18.0.1Updated only

18.2.x

update-angular-cli-version-17-3-0

Version: 18.2.0-beta.0

Update the @angular/cli package version to ~17.3.0.

Requires

NameVersion
@angular/core>=17.3.0

18.2.0-package-updates

Version: 18.2.0-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~17.3.0Updated only
@angular-devkit/core~17.3.0Updated only
@angular-devkit/schematics~17.3.0Updated only
@angular/pwa~17.3.0Updated only
@angular/ssr~17.3.0Updated only
@schematics/angular~17.3.0Updated only
@angular-devkit/architect~0.1703.0Updated only
@angular-devkit/build-webpack~0.1703.0Updated only
@angular/core~17.3.0Added if not installed
@angular/material~17.3.0Updated only
@angular/cdk~17.3.0Updated only
ng-packagr~17.3.0Updated only

18.2.0-angular-eslint-package-updates

Version: 18.2.0-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-eslint/eslint-plugin~17.3.0Updated only
@angular-eslint/eslint-plugin-template~17.3.0Updated only
@angular-eslint/template-parser~17.3.0Updated only

18.1.x

update-angular-cli-version-17-2-0

Version: 18.1.0-beta.1

Update the @angular/cli package version to ~17.2.0.

Requires

NameVersion
@angular/core>=17.2.0

fix-target-defaults-for-webpack-browser

Version: 18.1.1-beta.0

Ensure targetDefaults inputs for task hashing when ‘@nx/angular:webpack-browser’ is used are correct for Module Federation.

18.1.0-jest-package-updates

Version: 18.1.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~14.0.3Updated only

18.1.0-package-updates

Version: 18.1.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~17.2.0Updated only
@angular-devkit/core~17.2.0Updated only
@angular-devkit/schematics~17.2.0Updated only
@angular/pwa~17.2.0Updated only
@angular/ssr~17.2.0Updated only
@schematics/angular~17.2.0Updated only
@angular-devkit/architect~0.1702.0Updated only
@angular-devkit/build-webpack~0.1702.0Updated only
@angular/core~17.2.0Added if not installed
@angular/material~17.2.0Updated only
@angular/cdk~17.2.0Updated only
ng-packagr~17.2.0Updated only

18.0.x

add-module-federation-env-var-to-target-defaults

Version: 18.0.0-beta.0

Add NX_MF_DEV_SERVER_STATIC_REMOTES to inputs for task hashing when ‘@nx/angular:webpack-browser’ is used for Module Federation.

17.3.x

update-angular-cli-version-17-1-0

Version: 17.3.0-beta.10

Update the @angular/cli package version to ~17.1.0.

Requires

NameVersion
@angular/core>=17.1.0

add-browser-sync-dependency

Version: 17.3.0-beta.10

Add ‘browser-sync’ as dev dependency when ‘@angular-devkit/build-angular:ssr-dev-server’ or ‘@nx/angular:module-federation-dev-ssr’ is used.

Requires

NameVersion
@angular/core>=17.1.0

add-autoprefixer-dependency

Version: 17.3.0-beta.10

Add ‘autoprefixer’ as dev dependency when ‘@nx/angular:ng-packagr-lite’ or ‘@nx/angular:package` is used.

Requires

NameVersion
@angular/core>=17.1.0

17.3.0-types-node-package-updates

Version: 17.3.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@types/node^18.16.9Updated only

17.3.0-package-updates

Version: 17.3.0-beta.10

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/build-angular~17.1.0Updated only
@angular-devkit/core~17.1.0Updated only
@angular-devkit/schematics~17.1.0Updated only
@angular/pwa~17.1.0Updated only
@angular/ssr~17.1.0Updated only
@schematics/angular~17.1.0Updated only
@angular-devkit/architect~0.1701.0Updated only
@angular-devkit/build-webpack~0.1701.0Updated only
@angular/core~17.1.0Added if not installed
@angular/material~17.1.0Updated only
@angular/cdk~17.1.0Updated only
ng-packagr~17.1.0Updated only
zone.js~0.14.3Updated only

17.2.x

rename-webpack-dev-server-executor

Version: 17.2.0-beta.2

Rename ‘@nx/angular:webpack-dev-server’ executor to ‘@nx/angular:dev-server’

17.2.0-ngrx-package-updates

Version: 17.2.0-beta.3

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store~17.0.0Updated only

17.1.x

update-angular-cli-version-17-0-0

Version: 17.1.0-beta.5

Update the @angular/cli package version to ~17.0.0.

Requires

NameVersion
@angular/core>=17.0.0

rename-browser-target-to-build-target

Version: 17.1.0-beta.5

Rename ‘browserTarget’ to ‘buildTarget’.

Requires

NameVersion
@angular/core>=17.0.0

replace-nguniversal-builders

Version: 17.1.0-beta.5

Replace usages of ‘@nguniversal/builders’ with ‘@angular-devkit/build-angular’.

Requires

NameVersion
@angular/core>=17.0.0

replace-nguniversal-engines

Version: 17.1.0-beta.5

Replace usages of ‘@nguniversal/’ packages with ‘@angular/ssr’.

Requires

NameVersion
@angular/core>=17.0.0

update-zone-js-deep-import

Version: 17.1.0-beta.5

Replace the deep imports from ‘zone.js/dist/zone’ and ‘zone.js/dist/zone-testing’ with ‘zone.js’ and ‘zone.js/testing’.

Requires

NameVersion
@angular/core>=17.0.0

17.1.0-package-updates

Version: 17.1.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/architect~0.1700.0Updated only
@angular-devkit/build-angular~17.0.0Updated only
@angular-devkit/build-webpack~0.1700.0Updated only
@angular-devkit/core~17.0.0Updated only
@angular-devkit/schematics~17.0.0Updated only
@angular/pwa~17.0.0Updated only
@angular/core~17.0.0Added if not installed
@angular/material~17.0.0Updated only
@angular/cdk~17.0.0Updated only
@schematics/angular~17.0.0Updated only
ng-packagr~17.0.0Updated only
zone.js~0.14.0Updated only

17.1.0-jest-package-updates

Version: 17.1.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~13.1.3Updated only

17.1.0-angular-eslint-package-updates

Version: 17.1.0-beta.5

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-eslint/eslint-plugin~17.0.0Updated only
@angular-eslint/eslint-plugin-template~17.0.0Updated only
@angular-eslint/template-parser~17.0.0Updated only

17.1.3-jest-package-updates

Version: 17.1.3-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~13.1.4Updated only

16.8.x

16.8.0-package-updates

Version: 16.8.0-beta.2

Packages

The following packages will be updated:

NameVersionAlways add to package.json
esbuild^0.19.2Updated only

16.7.x

update-angular-cli-version-16-2-0

Version: 16.7.0-beta.6

Update the @angular/cli package version to ~16.2.0.

Requires

NameVersion
@angular/core>=16.2.0

16.7.0-package-updates

Version: 16.7.0-beta.6

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/architect~0.1602.0Updated only
@angular-devkit/build-angular~16.2.0Updated only
@angular-devkit/build-webpack~0.1602.0Updated only
@angular-devkit/core~16.2.0Updated only
@angular-devkit/schematics~16.2.0Updated only
@angular/pwa~16.2.0Updated only
@angular/core~16.2.0Added if not installed
@angular/material~16.2.0Updated only
@angular/cdk~16.2.0Updated only
@nguniversal/builders~16.2.0Updated only
@nguniversal/common~16.2.0Updated only
@nguniversal/express-engine~16.2.0Updated only
@schematics/angular~16.2.0Updated only
ng-packagr~16.2.0Updated only

16.6.x

explicitly-set-projects-to-update-buildable-deps

Version: 16.6.0-beta.0

Explicitly set ‘updateBuildableProjectDepsInPackageJson’ to ‘true’ in targets that rely on that value as the default.

16.4.x

rename-angular-eslint-accesibility-rules

Version: 16.4.0-beta.6

Remove the ‘accessibility-’ prefix from ‘@angular-eslint/eslint-plugin-template’ rules.

Requires

NameVersion
@angular-eslint/eslint-plugin-template>=16.0.0

update-angular-cli-version-16-1-0

Version: 16.4.0-beta.11

Update the @angular/cli package version to ~16.1.0.

Requires

NameVersion
@angular/core>=16.1.0

16.4.0-package-updates

Version: 16.4.0-beta.11

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-devkit/architect~0.1601.0Updated only
@angular-devkit/build-angular~16.1.0Updated only
@angular-devkit/build-webpack~0.1601.0Updated only
@angular-devkit/core~16.1.0Updated only
@angular-devkit/schematics~16.1.0Updated only
@angular/pwa~16.1.0Updated only
@angular/core~16.1.0Added if not installed
@angular/material~16.1.0Updated only
@angular/cdk~16.1.0Updated only
@nguniversal/builders~16.1.0Updated only
@nguniversal/common~16.1.0Updated only
@nguniversal/express-engine~16.1.0Updated only
@schematics/angular~16.1.0Updated only
ng-packagr~16.1.0Updated only

16.2.x

switch-data-persistence-operators-imports-to-ngrx-router-store

Version: 16.2.0-beta.0

Switch the data persistence operator imports to ‘@ngrx/router-store/data-persistence’.

Requires

NameVersion
@ngrx/store>=16.0.0

16.2.0-ngrx-package-updates

Version: 16.2.0-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@ngrx/store~16.0.0Updated only

16.1.x

16.1.0-package-updates

Version: 16.1.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular/core~16.0.0Added if not installed
zone.js~0.13.0Updated only
@angular-devkit/architect~0.1600.0Updated only
@angular-devkit/build-angular~16.0.0Updated only
@angular-devkit/build-webpack~0.1600.0Updated only
@angular-devkit/core~16.0.0Updated only
@angular-devkit/schematics~16.0.0Updated only
@angular/pwa~16.0.0Updated only
@schematics/angular~16.0.0Updated only
ng-packagr~16.0.0Updated only
@nguniversal/build-angular~16.0.0Updated only
@nguniversal/builders~16.0.0Updated only
@nguniversal/common~16.0.0Updated only
@nguniversal/express-engine~16.0.0Updated only
@angular/material~16.0.0Updated only
@angular/cdk~16.0.0Updated only

16.1.0-angular-eslint-package-updates

Version: 16.1.0-beta.1

Packages

The following packages will be updated:

NameVersionAlways add to package.json
@angular-eslint/eslint-plugin~16.0.0Updated only
@angular-eslint/eslint-plugin-template~16.0.0Updated only
@angular-eslint/template-parser~16.0.0Updated only

16.1.3-jest-package-updates

Version: 16.1.3-beta.0

Packages

The following packages will be updated:

NameVersionAlways add to package.json
jest-preset-angular~13.1.0Updated only