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
- Rebuild the server application with '@angular/build:application' so the engine manifest is embedded
- Align @angular/ssr, @angular/build, and @angular/core versions (same minor) and reinstall node_modules
- Delete dist and run a clean full build (ng build) so no stale server bundle is served
- 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
- Clean dist and rebuild after upgrading @angular/ssr or @angular/build
- Verify server bundle registers the manifest (built by the application builder)
- Pin matching versions of @angular/core, @angular/ssr, and @angular/build in package.json
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
- Angular app manifest is not set. Please ensure you are using
- Server asset '${path}' does not exist.
- Error(s) occurred while extracting routes:\n${errors.map((er
- Could not find the implementation for builder
- *
AI-assisted analysis of angular/angular-cli@bb72145f9a (2026-08-30).
Data as JSON: /api/errors/0c9bfaee855df3cc.
Report an issue: GitHub.