Roadmap
VexCMS is under active development. Everything ships as 0.1.0-alpha until the core feature set is stable enough for a v0.1.0 release.
Status key: β Shipped Β· π In progress Β· π Planned Β· β³ Future Β· π Exploring
Shipped
Section titled βShippedβ- β
16 field types β
text,number,checkbox,select,date,url,email,textarea,json,relationship,upload,array,group,blocks,color,richtext(Plate.js via@vexcms/richtext-plate, with inline images from the media library) - β Versioning & drafts β draft/publish workflow, autosave, version history, restore, and unpublish
- β Convex schema + type codegen
- β Real-time admin panel
- β
DataTable with pagination and
totalDocs - β Media library
- β
RBAC with document-level access, indexed rules (
withIndexranges andwherepredicates), and per-callaccess.action/access.bypass - β
Access index resolution β a ruleβs
withIndexrange andwherepredicate apply inside the Convex query itself - β
anonRolefallback for unauthenticated callers - β
Globals (
defineGlobal) - β
Database-driven theming β
themescollection, active-theme selector,buildThemeCsscustom-property injection - β Better Auth integration
- β Convex file storage
- β TypeDoc API reference
- β
CLI β
vex dev/vex generate/vex deploy - β
create-vexcmsscaffolder - β Field-level RBAC permissions β a filter callback may return a field map instead of a boolean
- β
Static prerendering, path-based revalidation,
sitemap.xml/robots.txt - β Exported React test kit β run the admin panelβs own component suite against your config
- β
Lifecycle hooks β
beforeChange/beforeDelete(inline, may reject a write) andafterChange/afterDelete(viaconvex-helperstriggers), wired by default increate-vexcmsβsbase-nextjstemplate and both hand-maintained apps - β
Custom
validate()β async, server-side, database-aware (uniqueness checks and cross-document rules), enforced on every write. A dedicatedlifecycle-hooksguide covering both of the above is still to write; see@vexcms/coreβs README until then. - β
Live preview β the admin panel streams unsaved form state onto your real route, for collections and globals alike. Preview settings declare per collection/global or in one root
admin.livePreviewmap;urltakes a literal path, a(doc) => stringresolver, or a{ server }resolver that reads the database. Origin-allowlisted and gated per request by a session-verified cookie - β
email,textarea, andjsonfields βtextareaadds a character counter,jsonis a CodeMirror editor - β
tabs,collapsible,row, anduilayout fields β organize sibling fields into tabs, collapsible sections, and side-by-side rows, or drop in a non-persisted display/action component, all legal anywhere afieldsrecord is - β
Conditional fields β
admin.condition({ data, siblingData }) => booleanshows or hides any field (data or layout), enforced identically on the client and the server - β
Input masks β
admin.maskontext/email/number/url, with project-wide defaults atfields.inputMasks.<type> - β Block clipboard β copy/paste blocks across fields, documents, and collections from a localStorage clipboard validated against the target block definition
- β Admin extension points (experimental) β per-field and project-wide component overrides and additive action-menu contributions, documented in the admin customization guide
- β
List views β per-collection search, sort, an AND/OR filter builder with per-field filter inputs, column visibility/order/pinning/resizing, page size, local and shared saved views (
admin.view/admin.views), a peek panel, row and bulk actions, server-prerendered first paint. See the list views guide - β
commitTs()field β Convexβs own commit timestamp, read-only and auto-indexed; the auto-injectedupdatedAtuses it - β
Edit-view overhaul β reorganized header with a β― actions menu, every built-in action a replaceable
admin.components.editslot contribution, an unsaved-changes guard, duplicate for documents and blocks, and collection URLs under/admin/collections/<slug>. See the admin customization guide
In progress
Section titled βIn progressβThese are the v0.1.0 launch track, in the order they ship.
- π Localization design β the storage model and versioning interaction decided before anyone has data to migrate. Localization ships free in the core
- π Field input consistency pass β relationship field and others get consistent interaction and loading patterns
- π Responsive pass across the admin panel, marketing template, and docs
Planned
Section titled βPlannedβ- π Form builder
- π Block group categorization
- π Content scheduling
- π API keys
- π Team management
- π TanStack Start adapter
- π S3 / R2 storage adapters
- π Presence β avatars of everyone viewing a document, on every edit view
Committed, but not yet scheduled β distinct from Exploring, which is still open research. These are the items the siteβs roadmap block marks future.
- β³ Plugin system β custom field types
- β³ Localization β field variants and locale-aware versioning, free in the core
- β³ Auto-migration β schema diffing and field backfill on deploy
Exploring
Section titled βExploringβ- π Multi-component workspaces
- π Analytics adapter β per-document and per-block metrics surfaced directly in the admin panel
Enterprise
Section titled βEnterpriseβPaid add-ons, shipped as separate packages under a flat annual licence and running entirely in your own Convex deployment. The core stays Apache-2.0, and nothing free today moves behind the licence.
- π Real-time collaboration β per-field editing indicators, live cursors, follow mode, collaborative rich-text editing, and concurrent-edit conflict resolution
- π SAML / OIDC single sign-on
- π Audit log with retention and export
- π Approval workflows
- π Content branching between environments
Not planned
Section titled βNot plannedβAssessed and deliberately excluded, so you do not have to wonder:
imageUrlfield. Useuploadwith the media library, or aurlfield.