{"record":{"id":"c7a7451f1efd01a0","repo":"angular/angular-cli","slug":"the-angular-devkit-build-angular-extract-i18n-b","errorCode":null,"errorMessage":"The \"@angular-devkit/build-angular:extract-i18n\" builder is deprecated as part of Angular's Webpack support deprecation. Use \"@angular/build:extract-i18n\" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.","messagePattern":"The \"@angular-devkit/build-angular:extract-i18n\" builder is deprecated as part of Angular's Webpack support deprecation\\. Use \"@angular/build:extract-i18n\" instead\\. For more information, see https://angular\\.dev/tools/cli/build-system-migration\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/angular_devkit/build_angular/src/builders/extract-i18n/builder.ts","lineNumber":38,"sourceCode":"/**\n * @experimental Direct usage of this function is considered experimental.\n */\nexport async function execute(\n  options: ExtractI18nBuilderOptions,\n  context: BuilderContext,\n  transforms?: {\n    webpackConfiguration?: ExecutionTransformer<webpack.Configuration>;\n  },\n): Promise<BuilderOutput> {\n  // Determine project name from builder context target\n  const projectName = context.target?.project;\n  if (!projectName) {\n    context.logger.error(`The 'extract-i18n' builder requires a target to be specified.`);\n\n    return { success: false };\n  }\n\n  context.logger.warn(\n    'The \"@angular-devkit/build-angular:extract-i18n\" builder is deprecated as part of Angular\\'s Webpack support deprecation. ' +\n      'Use \"@angular/build:extract-i18n\" instead. For more information, see https://angular.dev/tools/cli/build-system-migration.',\n  );\n\n  const { projectType } = (await context.getProjectMetadata(projectName)) as {\n    projectType?: string;\n  };\n  if (projectType !== 'application') {\n    context.logger.error(\n      `Tried to extract from ${projectName} with 'projectType' ${projectType}, which is not supported.` +\n        ` The 'extract-i18n' builder can only extract from applications.`,\n    );\n\n    return { success: false };\n  }\n\n  // Check Angular version.\n  assertCompatibleAngularVersion(context.workspaceRoot);","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/angular_devkit/build_angular/src/builders/extract-i18n/builder.ts#L20-L56","documentation":"The webpack-based `@angular-devkit/build-angular:extract-i18n` builder is deprecated as part of Angular's deprecation of Webpack support. Executing it prints this deprecation warning directing users to the esbuild/Vite-based `@angular/build:extract-i18n` builder. The extraction still runs; the warning signals future removal.","triggerScenarios":"Running `ng extract-i18n` in a project whose builder target is still `@angular-devkit/build-angular:extract-i18n` (the default for pre-v17 angular.json workspaces, or non-application builders); emitted at the start of `execute()` after the project/target check.","commonSituations":"Workspaces not yet migrated to the application builder; projects that skipped `ng update` migrations; new extractions added by copying older angular.json snippets.","solutions":["Update the builder to `\"@angular/build:extract-i18n\"` in angular.json","Run `ng update @angular/cli` to apply the automated build-system migration","Migrate the application itself to the esbuild-based application builder first, since the new extractor targets it","Verify extracted output paths/options (outputPath, format) still match the new builder's schema"],"exampleFix":"// before (angular.json)\n\"extract-i18n\": { \"builder\": \"@angular-devkit/build-angular:extract-i18n\" }\n// after\n\"extract-i18n\": { \"builder\": \"@angular/build:extract-i18n\" }","handlingStrategy":"validation","validationCode":"// angular.json pre-check before ng extract-i18n\nconst builder = workspace.projects[p].architect?.['extract-i18n']?.builder;\nif (builder === '@angular-devkit/build-angular:extract-i18n') {\n  console.warn('Deprecated builder in use; migrate to @angular/build:extract-i18n.');\n}","typeGuard":"function usesDeprecatedBuilder(builder: string | undefined): boolean {\n  return builder === '@angular-devkit/build-angular:extract-i18n';\n}","tryCatchPattern":null,"preventionTips":["Run ng update @angular/cli regularly to pick up builder migrations","Use @angular/build:extract-i18n with the application builder","Grep angular.json for build-angular:extract-i18n after upgrades","Track Angular deprecation notes before major version upgrades"],"tags":["deprecation","i18n","extract-i18n","webpack","migration"],"backgroundTag":"webpack-builder-deprecated","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}