angular/angular-cli · warning

The "@angular-devkit/build-angular:dev-server" builder is de

Error message

The "@angular-devkit/build-angular:dev-server" builder is deprecated as part of Angular's Webpack support deprecation. Use "@angular/build:dev-server" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.

What it means

Deprecation warning shown whenever the Webpack-based '@angular-devkit/build-angular:dev-server' builder runs. Angular is deprecating Webpack dev-server support in favor of the Vite/esbuild-based '@angular/build:dev-server'. Functionality continues but the builder will eventually be removed.

Source

Thrown at packages/angular_devkit/build_angular/src/builders/dev-server/builder.ts:76

  }

  context.logger.warn(
    'The "@angular-devkit/build-angular:dev-server" builder is deprecated as part of Angular\'s Webpack support deprecation. ' +
      'Use "@angular/build:dev-server" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.',
  );

  return defer(() => initialize(options, projectName, context, extensions?.builderSelector)).pipe(
    switchMap(({ builderName, normalizedOptions }) => {
      // Use vite-based development server for esbuild-based builds
      if (isEsbuildBased(builderName)) {
        if (transforms?.logging || transforms?.webpackConfiguration) {
          throw new Error(
            `The "application" and "browser-esbuild" builders do not support Webpack transforms.`,
          );
        }

        if (options.publicHost) {
          context.logger.warn(
            `The "publicHost" option will not be used because it is not supported by the "${builderName}" builder.`,
          );
        }

        if (options.disableHostCheck) {
          context.logger.warn(
            `The "disableHostCheck" option will not be used because it is not supported by the "${builderName}" builder.`,
          );
        }

        // New build system defaults hmr option to the value of liveReload
        normalizedOptions.hmr ??= normalizedOptions.liveReload;

        // New build system uses Vite's allowedHost option convention of true for disabling host checks
        if (normalizedOptions.disableHostCheck) {
          (normalizedOptions as unknown as { allowedHosts: true }).allowedHosts = true;
        } else {
          normalizedOptions.allowedHosts ??= [];

View on GitHub (pinned to bb72145f9a)

Solutions

  1. Switch the serve target builder to '@angular/build:dev-server' in angular.json.
  2. Run `ng update @angular/cli` to get the automated build-system migration.
  3. If staying temporarily on Webpack, plan removal since the builder will be dropped.

Example fix

// before
"builder": "@angular-devkit/build-angular:dev-server"
// after
"builder": "@angular/build:dev-server"
Defensive patterns

Strategy: validation

Validate before calling

if (target.builder === '@angular-devkit/build-angular:dev-server') {
  console.warn('Deprecated dev-server builder; migrate serve target to @angular/build:dev-server.');
}

Type guard

function isLegacyDevServer(t: { builder: string }): boolean {
  return t.builder === '@angular-devkit/build-angular:dev-server';
}

Prevention

When it happens

Trigger: Any `ng serve` (or programmatic schedule) using a target configured with '@angular-devkit/build-angular:dev-server'.

Common situations: Upgraded workspaces still serving with the old builder because angular.json was not migrated; mixed teams where some targets use '@angular/build:dev-server' and others the legacy one.

Related errors


AI-assisted analysis of angular/angular-cli@bb72145f9a (2026-08-30). Data as JSON: /api/errors/6f50bd36d5074329. Report an issue: GitHub.