angular/angular-cli · critical · Error

Angular app engine manifest is not set. Please ensure you ar

Error message

Angular app engine manifest is not set. Please ensure you are using the '@angular/build:application' builder to build your server application.

What it means

Like the app manifest, the AngularAppEngineManifest must be registered by the build (setAngularAppEngineManifest, invoked by @angular/build:application). If it is unset when getAngularAppEngineManifest is called (e.g. by AngularAppEngine.manifest), the server bundle is incompatible with the current @angular/ssr runtime.

Source

Thrown at packages/angular/ssr/src/manifest.ts:198

/**
 * Sets the Angular app engine manifest.
 *
 * @param manifest - The engine manifest object to set.
 */
export function setAngularAppEngineManifest(manifest: AngularAppEngineManifest): void {
  angularAppEngineManifest = manifest;
}

/**
 * Gets the Angular app engine manifest.
 *
 * @returns The Angular app engine manifest.
 * @throws Will throw an error if the Angular app engine manifest is not set.
 */
export function getAngularAppEngineManifest(): AngularAppEngineManifest {
  if (!angularAppEngineManifest) {
    throw new Error(
      'Angular app engine manifest is not set. ' +
        `Please ensure you are using the '@angular/build:application' builder to build your server application.`,
    );
  }

  return angularAppEngineManifest;
}

View on GitHub (pinned to bb72145f9a)

Solutions

  1. Rebuild the server application with '@angular/build:application' so the engine manifest is embedded
  2. Align @angular/ssr, @angular/build, and @angular/core versions (same minor) and reinstall node_modules
  3. Delete dist and run a clean full build (ng build) so no stale server bundle is served
  4. Update the deployment to ship the newly built server output, not an old artifact

Example fix

// before
"@angular/ssr": "17.0.0", "@angular/build": "18.1.0"
// after (aligned versions)
"@angular/ssr": "18.1.0", "@angular/build": "18.1.0"
Defensive patterns

Strategy: try-catch

Validate before calling

import { getAngularAppEngineManifest } from '@angular/ssr';
try { getAngularAppEngineManifest(); } catch { console.error('Engine manifest missing; rebuild server bundle'); }

Try / catch

try {
  const manifest = engine.manifest;
} catch (e) {
  if (e instanceof Error && e.message.includes('engine manifest is not set')) {
    console.error('Server bundle incompatible; run a clean ng build with @angular/build:application');
    process.exit(1);
  }
  throw e;
}

Prevention

When it happens

Trigger: Running a server bundle produced by an unsupported/legacy builder, or a version mismatch where the server bundle never registers the engine manifest before AngularAppEngine accesses it.

Common situations: Mixed @angular/ssr versions between server bundle and node_modules at runtime, custom bundling that tree-shakes or omits the manifest registration call, running stale dist output after upgrading.

Related errors


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