Content Strategies
ACMS supports two content delivery strategies. The right choice depends on how often your content changes and your performance requirements.
Build-Time (Static)
Section titled “Build-Time (Static)”Content is fetched once during the build process and baked into the output. This is the simplest approach for most sites:
export default defineConfig({ strategy: 'build-time',});Your content is resolved at build time, so pages load with zero runtime overhead.
Runtime (Dynamic)
Section titled “Runtime (Dynamic)”Content is fetched at runtime from the storage adapter. This enables updates without rebuilds:
export default defineConfig({ strategy: 'runtime',});Content updates are reflected immediately without redeploying.
Comparison
Section titled “Comparison”| Build-Time | Runtime | |
|---|---|---|
| Performance | Fastest — content is static HTML | Slightly slower — fetches on each request |
| Content freshness | Stale until next build | Always up-to-date |
| Hosting | Any static host (Vercel, Netlify, S3) | Requires server or edge runtime |
| Best for | Marketing sites, blogs, docs | Dashboards, frequently updated content |
| Rebuild needed? | Yes, on every content change | No |
Framework Recommendations
Section titled “Framework Recommendations”| Framework | Recommended Strategy | Notes |
|---|---|---|
| Next.js | Build-time with ISR | Use revalidate for periodic updates |
| Astro | Build-time | Static by default, ideal fit |
| SvelteKit | Build-time | Use prerender for static pages |
| Nuxt | Build-time | Use nuxi generate for static output |
| Remix | Runtime | Loader-based, natural fit for runtime |
| Vanilla JS / SPA | Runtime | No build step to bake content into |
Mixing Strategies
Section titled “Mixing Strategies”You can use both strategies in the same project. For example, use build-time for marketing pages and runtime for a user-facing dashboard:
// Marketing page — built staticallyexport async function getStaticProps() { return { props: { title: acms.marketing.title } };}
// Dashboard page — fetched at runtimeexport default function Dashboard() { return <h1>{acms.dashboard.heading}</h1>;}The strategy setting in acms.config.ts sets the default, but your framework’s data-fetching patterns ultimately control when content is resolved.
Next Steps
Section titled “Next Steps”- Set up your Configuration with the right strategy
- Choose a Storage Adapter for production
- Read the Deployment guide for your platform