angular/angular-cli · warning

The "@angular-devkit/build-angular:browser-esbuild" builder

Error message

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

What it means

The `@angular-devkit/build-angular:browser-esbuild` builder (the transitional esbuild browser builder in the Webpack package) is deprecated along with Angular's Webpack support. Running it warns users to migrate to the maintained `@angular/build:application` builder.

Source

Thrown at packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts:33

type OutputPathClass = Exclude<ApplicationBuilderOptions['outputPath'], string | undefined>;

/**
 * Main execution function for the esbuild-based application builder.
 * The options are compatible with the Webpack-based builder.
 * @param userOptions The browser builder options to use when setting up the application build
 * @param context The Architect builder context object
 * @returns An async iterable with the builder result output
 */
export async function* buildEsbuildBrowser(
  userOptions: BrowserBuilderOptions,
  context: BuilderContext,
  infrastructureSettings?: {
    write?: boolean;
  },
  plugins?: Plugin[],
): AsyncIterable<BuilderOutput> {
  context.logger.warn(
    'The "@angular-devkit/build-angular:browser-esbuild" builder is deprecated as part of Angular\'s Webpack support deprecation. ' +
      'Use "@angular/build:application" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.',
  );

  // Warn about any unsupported options
  if (userOptions['vendorChunk']) {
    context.logger.warn(
      `The 'vendorChunk' option is not used by this builder and will be ignored.`,
    );
  }
  if (userOptions['commonChunk'] === false) {
    context.logger.warn(
      `The 'commonChunk' option is always enabled by this builder and will be ignored.`,
    );
  }
  if (userOptions['webWorkerTsConfig']) {
    context.logger.warn(`The 'webWorkerTsConfig' option is not yet supported by this builder.`);
  }

View on GitHub (pinned to bb72145f9a)

Solutions

  1. Run the automated build-system migration: `ng generate @angular/build:apply-build-system-migration`.
  2. Change `angular.json` to use `"builder": "@angular/build:application"` and migrate options (e.g. drop Webpack-only options like `vendorChunk`).
  3. Remove plugin/Webpack-specific workarounds that the new builder doesn't need, then rebuild and compare output.

Example fix

// before (angular.json)
"builder": "@angular-devkit/build-angular:browser-esbuild"
// after
"builder": "@angular/build:application"
Defensive patterns

Strategy: validation

Validate before calling

// detect transitional esbuild browser builder in angular.json
const arch = require('./angular.json');
if (JSON.stringify(arch).includes('browser-esbuild')) {
  throw new Error('Use @angular/build:application instead of @angular-devkit/build-angular:browser-esbuild');
}

Prevention

When it happens

Trigger: Running a build target configured with `"builder": "@angular-devkit/build-angular:browser-esbuild"` in `angular.json`, or calling `buildEsbuildBrowser` programmatically.

Common situations: Projects that adopted the early esbuild integration inside `@angular-devkit/build-angular` and haven't migrated to the standalone `@angular/build` package after upgrading Angular.

Related errors


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