Compiler inputs
ACI compiles two versioned inputs together:Content state
Pages, fragments, site configuration, asset references, and overlays from a branch or the
live content state.Frontend build
Component and layout contracts, their registries, and the rendering implementation from the linked code build.
What compilation checks
1
Validate document structure
ACI checks each document type and its required fields. Page metadata, regions, component blocks, and configuration must use the expected shape.
2
Validate component and layout contracts
Component props, asset slots, layout regions, and slot defaults are checked against the contracts exported by the frontend project.
3
Resolve references
References to fragments, assets, and other content must point to valid targets. A broken or incompatible reference stops compilation.
4
Build routes and dependencies
ACI resolves page paths and records which shared content contributes to each route so the complete release can be prepared consistently.
5
Apply overlays
Locale, audience, and experiment overlays are applied over valid base content. Every resulting experience must satisfy the same frontend contracts.
6
Emit release artifacts
ACI produces one base artifact and the finite set of configured variant artifacts needed for each route.
ACI starter projects include
npm run content:compile for the local content compilation loop. See the CLI Reference for direct CLI workflows.Base content and variants
Personalization changes which compiled artifact a visitor receives; it does not bypass compilation. If no audience or locale variant applies, delivery uses the base artifact. This fallback is part of the content model and should always be reviewed alongside personalized variants.Static and server-rendered output
ACI uses one content compiler for supported delivery modes. The final artifact shape differs only at the rendering boundary.
In the server-rendered mode, the frontend receives the selected page result. Personalization matching and fallback do not move into application code.
Changing a contract safely
When a component or layout contract changes:- Link a branch to the updated code build.
- Compile existing content against the new contract.
- Update each incompatible content path.
- Preview representative routes and variants.
- Land and promote the compatible content with the intended code build.
- Stage and activate the release.
Next: Publishing & Releases →