Troubleshooting
Common issues and their solutions when working with ACMS.
Development Server
Section titled “Development Server””Connection refused” on port 3001
Section titled “”Connection refused” on port 3001”The ACMS dev server is not running. Start it with:
acms devMake sure port 3001 is not in use by another process. Use a custom port if needed:
acms dev -p 3002Fields are not being registered
Section titled “Fields are not being registered”- Check the dev server is running — The client needs the dev server at
http://localhost:3001to register fields. - Check browser console — Look for network errors to
/api/register. - Check the server logs — The dev server logs registrations to the console.
- Verify the field name —
displayNameand_metaare reserved and cannot be registered.
acms.json is not being created
Section titled “acms.json is not being created”Make sure you have write permissions to the directory specified in your config. The default path is ./acms.json relative to the project root.
Changes to acms.json are not reflected
Section titled “Changes to acms.json are not reflected”- Check file watcher — The dev server watches
acms.jsonwith chokidar. Restart the dev server if the watcher seems stuck. - Check your app — Make sure your app is fetching fresh content (not using a stale cache).
- Check SSE — If using the dashboard, verify the SSE connection is active (check browser DevTools > Network > EventStream).
TypeScript
Section titled “TypeScript”Types not updating in my editor
Section titled “Types not updating in my editor”- Make sure
acms devis running — it regeneratesacms.d.tson changes. - Restart the TypeScript language server:
- VS Code:
Cmd+Shift+P> “TypeScript: Restart TS Server” - Other editors: Restart the LSP
- VS Code:
- Check that
acms.d.tsexists in your project root. - Verify your
tsconfig.jsonincludes the directory containingacms.d.ts.
”Cannot find module ‘@useacms/client’”
Section titled “”Cannot find module ‘@useacms/client’””Install the client package:
npm install @useacms/clientType errors for existing fields
Section titled “Type errors for existing fields”If you recently changed the schema, the types might be stale. Regenerate manually:
acms generate-typesContent Sync
Section titled “Content Sync”acms push fails with authentication error
Section titled “acms push fails with authentication error”Check that your adapter credentials are correct:
# Verify environment variables are setecho $GITHUB_TOKENecho $GITHUB_GIST_IDMake sure the token has the required scopes:
- GitHub Gist:
gistscope - GitHub:
reposcope - Vercel: API token with appropriate permissions
acms pull overwrites local changes
Section titled “acms pull overwrites local changes”acms pull replaces your local acms.json with the remote version. If you have local changes you want to keep, use acms sync instead for bi-directional merging.
Sync conflicts
Section titled “Sync conflicts”When acms sync encounters conflicting values, specify a resolution strategy:
acms sync --resolve local # Keep local valuesacms sync --resolve remote # Keep remote valuesDashboard
Section titled “Dashboard”Dashboard shows no fields
Section titled “Dashboard shows no fields”- Make sure the ACMS dev server is running on port 3001.
- Check that
acms.jsonhas content (not just{}). - Check the browser console for errors.
- Verify the dashboard is connecting to the correct port.
Dashboard changes are not saved
Section titled “Dashboard changes are not saved”- Check browser DevTools for failed API requests.
- Make sure the dev server is running and accessible.
- Check for file permission issues on
acms.json.
SSE connection drops
Section titled “SSE connection drops”Server-Sent Events connections can drop due to:
- Dev server restart — The dashboard will reconnect automatically.
- Network issues — Refresh the dashboard page.
- Proxy/firewall blocking — Make sure port 3001 is accessible.
Client Library
Section titled “Client Library”Content is empty in production
Section titled “Content is empty in production”- Verify you ran
acms pushto upload content to the production adapter. - Check that the production adapter is correctly configured in
acms.config.ts. - Verify environment variables are set in your production environment.
- Check adapter-specific issues (e.g., Gist visibility, KV namespace permissions).
Proxy returns undefined
Section titled “Proxy returns undefined”The proxy returns an empty string for unregistered fields in development and undefined for missing fields in production. Check:
- The field exists in
acms.json(or the production adapter). - The field path is correct (e.g.,
acms.hero.titlenotacms.Hero.Title). - The content has been fetched (relevant for runtime strategy).
“displayName” field showing unexpectedly
Section titled ““displayName” field showing unexpectedly”When a field is migrated from a string to an object (e.g., hero was "Hello" and you access hero.title), the original value is preserved as hero.displayName. This is expected behavior. The displayName field is a reserved internal field.
Performance
Section titled “Performance”Dev server is slow
Section titled “Dev server is slow”- Check if
acms.jsonis very large — consider usingacms purgeto remove unused fields. - Restart the dev server.
- Check for excessive file watching triggers (e.g., build tools modifying files rapidly).
Too many registration requests
Section titled “Too many registration requests”When a page first renders, all accessed fields are registered simultaneously. The dev server uses a promise queue to handle these sequentially. This is normal and only happens during development.
Getting Help
Section titled “Getting Help”If none of these solutions work:
- Check the GitHub Issues for known problems.
- Open a new issue with:
- Your ACMS version (
acms -v) - Your framework and version
- Steps to reproduce
- Error messages or screenshots
- Your ACMS version (