FAQ
Frequently asked questions about ACMS.
General
Section titled “General”What does ACMS stand for?
Section titled “What does ACMS stand for?”Any Content Management System. It’s designed to work with any JavaScript framework, any storage backend, and any editing environment.
How is ACMS different from other CMS platforms?
Section titled “How is ACMS different from other CMS platforms?”Traditional CMS platforms (Contentful, Sanity, Strapi) require you to define a content schema before using it. ACMS generates the schema automatically from your code. You write acms.hero.title and the field exists — no configuration, no dashboard setup, no schema definitions.
What frameworks does ACMS support?
Section titled “What frameworks does ACMS support?”ACMS is framework-agnostic. It works with any JavaScript framework:
- React / Next.js
- Vue / Nuxt
- Svelte / SvelteKit
- Astro
- Solid.js
- Vanilla JavaScript
- Any framework that runs JavaScript
Is ACMS free?
Section titled “Is ACMS free?”The core libraries (@useacms/client and @useacms/cli) are open source. The self-hosted model is completely free. The hosted SaaS platform has subscription pricing.
Do I need a backend?
Section titled “Do I need a backend?”During development, the CLI provides a local dev server. In production, you choose a storage adapter — some require no backend at all (GitHub Gist), while others use existing infrastructure (Vercel Edge Config, Cloudflare KV).
Technical
Section titled “Technical”How does the proxy system work?
Section titled “How does the proxy system work?”ACMS uses JavaScript’s Proxy object to intercept property access. When you access acms.hero.title, the proxy checks if the field exists. If not, it registers the field with the dev server. The proxy is recursive, so each level of nesting returns another proxy.
What are reserved field names?
Section titled “What are reserved field names?”Two field names are reserved:
displayName— Used internally when migrating a string field to an object_meta— Stores field metadata (types, timestamps, labels)
Can I use ACMS with TypeScript?
Section titled “Can I use ACMS with TypeScript?”Yes. ACMS auto-generates acms.d.ts with TypeScript definitions for your content schema. This provides full IDE autocomplete and type checking. See the TypeScript guide.
Does ACMS work with SSR?
Section titled “Does ACMS work with SSR?”Yes. ACMS works with both server-side rendering and static site generation. For SSR, use the runtime strategy to fetch content on each request. For SSG, use build-time to fetch once during the build.
How does ACMS handle concurrent writes?
Section titled “How does ACMS handle concurrent writes?”The dev server uses a promise queue to process field registrations sequentially. This prevents race conditions when multiple fields are registered simultaneously (e.g., when a page first renders and all fields are accessed at once).
What happens if I rename a field in my code?
Section titled “What happens if I rename a field in my code?”When you change acms.hero.title to acms.hero.heading, a new field hero.heading is registered. The old hero.title field remains in acms.json. Use acms purge to clean up unused fields based on their lastAccessed timestamps.
Can I nest fields deeply?
Section titled “Can I nest fields deeply?”Yes. There’s no limit to nesting depth. acms.section.subsection.group.field works fine and creates the full nested structure in acms.json.
Content Editing
Section titled “Content Editing”Do I have to use the dashboard?
Section titled “Do I have to use the dashboard?”No. The dashboard is optional. You can edit content by:
- Editing
acms.jsondirectly in any text editor - Using the REST API programmatically
- Using the self-hosted dashboard
- Building a custom UI
- Using the hosted SaaS platform
Can multiple people edit content at the same time?
Section titled “Can multiple people edit content at the same time?”With the self-hosted dashboard and SSE, multiple users can edit simultaneously and see each other’s changes in real-time. With the SaaS platform, this is built-in. With direct file editing, you’d use Git for collaboration.
How do I handle images?
Section titled “How do I handle images?”Set a field’s type to image in the metadata. The field value is a URL string. The dashboard shows an image preview. In your code, use it as a normal string:
<img src={acms.hero.image} alt={acms.hero.imageAlt} />Deployment
Section titled “Deployment”How do I deploy to production?
Section titled “How do I deploy to production?”- Configure a production storage adapter in
acms.config.ts. - Push content with
acms push. - Deploy your application normally.
See the deployment guides for Vercel, Netlify, and Cloudflare Pages.
Can I preview content changes before publishing?
Section titled “Can I preview content changes before publishing?”With the build-time strategy, content changes take effect on the next build. You can preview by building locally. With the runtime strategy, changes take effect immediately after acms push.
Is there vendor lock-in?
Section titled “Is there vendor lock-in?”No. Your content is stored in a standard JSON format. You can export it at any time with acms pull and switch between storage adapters freely. The client library is decoupled from the storage layer.
Next Steps
Section titled “Next Steps”- Check Troubleshooting for common issues
- Read the Getting Started guide