Project Roadmap 2026
SveltyCMS 2026 roadmap β upcoming milestones and in-progress work. Completed items are documented in the technical evaluation.
On this page
EU Compliance: Based on publicly available documentation as of June 2026. Performance measurements where cited: Intel i7-13700H, 32GB DDR5, Bun 1.3.14, SQLite WAL. Reproduce with BENCHMARK_RECORD=1 bun test tests/benchmarks/. See Technical Evaluation for details.
This document is the living roadmap β only in-progress and planned work. Completed achievements are documented in Technical Evaluation.
π CMS Tables & List Platform (Smart Table)
Shipped foundation (July 2026): one stack for admin lists β headless controller, schema-aware server filters, QueryBuilder IR, SWR/cache hash, shared UX primitives. Collections stay server-secure (URL + SSR + FLAC); design-system / small tables may use client mode.
Non-goals (deliberate): TanStack Table as the collection engine; client-side filtering of multi-tenant collection pages; forcing Smart Table onto every mini matrix (permissions grid, media detail widgets, migration field maps).
2FA & Auth Hardening (July 2026)
Completed:
- AES-256-GCM encryption of TOTP secrets at rest (backward compatible)
- Pending setup state β resumable 2FA enrollment after page close
- Trusted devices (__Host-2fa-trusted-device cookie, HMAC-signed, 30-day TTL)
- Configurable TOTP window via TOTP_WINDOW env var
- Plugin afterAuthenticate hook β plugins can deny logins or force 2FA gating
Next (high leverage β foundations ready)
| Enhancement | Surfaces | Notes |
|---|---|---|
| Saved views everywhere | Users (admin-area), website-tokens, then media |
Reuse SmartTableSavedViewsMenu + smart-table-saved-views; per-surface scope + snapshot/apply adapters (URL/API shape differs) |
| Column resize + layout prefs parity | Media, users, tokens | Entry-list already uses layoutKey: entry-list:{collectionId}; wire drag handles + density/order persistence on other adapters |
| Status / domain facets | Any list with a stable enum | Pattern from getStatusFacets + SmartTableStatusFacets; e.g. user role/active, token status, media type β server counts only |
| List metrics on all server lists | Users, tokens, media APIs | recordListQuery + optional SSR listMetrics + ?debug=table badge; keep marketing claims measurable |
| Filter engine reuse | Non-collection admin lists | Port compileSecureFilters / portable IR where fields are allowlisted (users, tokens); avoid ad-hoc WHERE strings |
Planned product UX
- Bulk field-edit UI (entry-list): Beyond status lifecycle (publish/draft/delete/clone) β multi-select β shared field patch with Valibot, FLAC, partial-failure reporting, audit trail. Separate from list chrome; needs bulk update API design.
- Pinned / sticky columns (full UX): Controller already has
pinorder +pinCellClass; ship column-manager pin toggles and sticky offsets for select + actions columns on wide collection schemas. - Column DnD order β Smart Table layout: Entry-list DnD still dual-writes local pagination settings; unify order with
layout-prefs/ saved views so one source of truth. - Multi-column sort (server): Secondary sort keys in URL + filter engine IR (
sort=field:desc,field2:asc); useful for editorial triage and report-like collections. - Advanced filter operators UI: Engine already has
in,isNull, day-bound dates, ranges β expose operator pickers (contains / equals / empty / between / in-list) inSmartFilterRowwithout breaking simple mode. - Export filtered selection: CSV/JSON export of current secure filter + selection, via server stream (LocalCMS/REST), not DOM scrape; respect FLAC + tenantId.
- Keyboard grid navigation (ATAG): Arrow-key cell/row focus, Space toggle select,
/focus search,?shortcuts help β align with WCAG 2.2 AA / ATAG 2.0 admin goals. - Responsive list β card mode: Below
sm, optional card stack sharing the same row actions/selection as the table (no second data path). - Shared empty/loading/error chrome: Finish migrating leftover bare tables to
SmartTableShellempty/loading snippets for consistent copy and a11y live regions. - Team / cloud saved views (enterprise): Promote localStorage views to optional per-user or per-tenant server storage + shareable links (
?view=), with RBAC on who can publish a default view.
Performance & observability
- Virtualization tuning: Threshold/buffer per surface; sticky thead + virtual body without double scroll (entry-list pattern:
manageScroll={false}). - Predictive preload + hot collections: Already wired for entry hover; extend βwarm next pageβ when pagination intent is high (behavioral learning).
- Benchmark matrix hooks: List p50/p95 from
list-query-metricsinto docs/benchmark trend notes for collection list loads (SQLite / Postgres / Mongo). - Negative cache / empty-page policy: Document and harden SWR behavior for empty filter results so facets + list stay consistent under concurrent writes.
Security & multi-tenant (must keep)
- Every new filter facet stays server-compiled (schema whitelist + FLAC + tenant scope).
- No βload full collection then filter in browserβ for multi-tenant data.
- Export and bulk edit must re-check permissions per field and log via existing audit chain where applicable.
Explicitly deferred / not adopting
| Item | Why |
|---|---|
| TanStack Table as collection core | SSR + multi-tenant security + tree-shake; use TanStack-style column meta only |
| Mini matrices on Smart Table | Permissions matrix, media detail tables, migration maps stay purpose-built |
| Client-only saved views as sole source | Fine for layout; server-backed views later for teams |
Docs: Smart Table Β· Collection Filtering Β· entry-list Β· Cache System
ποΈ Media DAM (Digital Asset Management)
Wired & Tested: sharing.ts (secure links), slim-sniffer.server.ts (binary MIME fallback), media-utils.ts (65-type MIME DB), media-processing.server.ts (Sharp hash/metadata/thumbnails), cloud-storage.ts (SSRF-protected S3/R2), media-service.server.ts (upload + dedup + versions).
Additional integrations: advanced-search.ts (media library modal), webgpu-processor.ts (browser-side), bulk-download.ts (TAR.GZ streaming endpoint + gallery selection toolbar), storage-analytics.ts (breakdown/insights/trends endpoint + dashboard widget), version-history.ts (list + compare endpoints + media details diff UI), streaming-upload.ts (real multipart parser + upload-client routing).
Focal Point & Aspect Preview (July 2026): Drupal/Payload-style aspect ratio preview grid with draggable focal point crosshair. Pure CSS object-fit: cover rendering across 7 ratio presets (16:9, 3:2, 4:3, 1:1, 2:3, 9:16, 21:9). Rule-of-thirds overlay guides. Keyboard-accessible (arrow keys + Shift). Persists to CmsMediaMetadata.focalPoint via PATCH /api/media/:id. Plugin-gated (disabled by default) β when enabled, injects into media gallery, media-upload widget, and image editor toolbar. See Focal Point Plugin.
ποΈ In Progress
- ποΈ Phased Marketplace Migration: Phase 1 (core widget doc naming) β
. Phase 2 pending: custom widgets β
marketplace.sveltycms.com. Backend API β (marketplace-service.ts,marketplace-client.ts,/api/marketplaceendpoint), but no in-app catalog/browse UI yet β Extensions page links externally. See Marketplace System. - ποΈ Published DB Adapters:
sveltycms-sqlite,sveltycms-mongodb,sveltycms-mariadb,sveltycms-postgresqlas separate npm packages. Pending: adapter extraction fromsrc/databases/, CI publishing, consumer docs.
π Planned
-
OIDC Provider Integration: OIDC logout endpoints (RP-Initiated, Front-Channel, Back-Channel) are implemented and tested. Next phase: OIDC login flow with provider discovery, token exchange, and JWT validation against provider JWKS.
-
Cross-Source Merge Execution (v3.1 β stable): Decomposition planner ships in v3.0 (plan-only); v3.1+ enables in-memory hash-join across connectors. Currently opt-in alpha (
enableCrossSourceAlpha+ Pro license). -
Visual Studio Query Builder: Drag-and-drop query builder for virtual collections β relationship visualizer, live data preview panes, permission matrix editor.
-
GraphQL Supergraph / Federation: Apollo-like schema stitching across native + virtual collections for cross-source GraphQL queries.
-
GraphQL.js 17 + Yoga Upgrade (evaluated 2026-07): graphql-js 17.0.2 ships stable with AbortSignal resolver cancellation, Node.js tracing channels (native APM),
@experimental_disableErrorPropagation(partial data on field errors), and fragment arguments. Blocked by graphql-yoga#4545 (in review, last activity Jul 24). SveltyCMS already outperforms graphql-js 17βs native executor via@envelop/graphql-jitβ the upgrade is about runtime features, not execution speed.- AbortSignal
info.getAbortSignal(): Cancel stale collection-list queries when users navigate to entry detail. High priority. - Tracing channels
node:diagnostics_channel: Free Datadog/NewRelic APM integration for GraphQL performance without code changes. Medium priority. - Disable error propagation
@experimental_disableErrorPropagation: Return available fields even when one resolver fails (e.g. broken media URL, valid metadata). Medium priority. - Fragment arguments: Parameterized reusable fragments for playground/docs. Low priority.
- Migration: Bump Yoga version post-merge β enable features via Yoga plugin config. No graphql-js API changes needed in SveltyCMS code (Yoga abstracts all v16βv17 breaking changes).
- AbortSignal
-
Svelty Managed Cloud: Optional managed Postgres + Redis tier (Fly.io/Cloudflare).
-
Enterprise Infrastructure Scaling: Generate a multi-stage production
Dockerfileand Terraform configurations (AWS Fargate, RDS Proxy, ElastiCache) for effortless horizontal scaling by large corporations. -
AI-Verified Zero-Downtime Deployments: Visual regression + Lighthouse CI pre-promote.
-
Autonomous Import Optimization: Dynamic concurrency for 30k+ row datasets.
-
Per-Content-Type Collection Split (planned β v2.1 imports all selected types into one collection; primary type sets the target id): When multiple source types are selected (e.g. WordPress
post+page), optionally import into separate SveltyCMS collections instead of todayβs single primary-type destination. -
βTime-Travelβ Git-Style Content Branching: Multi-collection branching with visual diffs.
-
Decentralized WebGPU Media Engine: Client-side WASM/WebGPU image processing.
-
Dynamic Administration Theme System: Gin-level layout flexibility via Svelte 5 design tokens.
π’ Enterprise Workspaces & Governance
-
βWhole-Team Studioβ Workflow: Framing layers for editors, reviewers, translators, managers.
-
Unbending Editorial State Visibility: Unify draft/published/scheduled states across all views.
-
Translation Cockpit: Collection-level targets, glossaries, brand tone, review matrices, HITL gates.
-
Adaptive Workspaces Theme: Role-based layouts, density levels, client previews, WCAG 3.0/APCA.
-
OAuth 2.1 for MCP: Dynamic client registration, scoped permissions, consent dialogs, agent trace logging.
-
Deep JSON/Object Field Filtering: Path-based SQL/NoSQL filtering across REST, GraphQL, LocalCMS.
-
AI Command Bar Guardrails: Permission-aware gating, diff previews, audit logging.
-
TSV Formatter Integration (v0.1 WASM available now; v0.2 native pending): Replace
oxfmtwithtsv formatfor Svelte-aware formatting. TSV is a Rust-based formatter specifically targeting Svelte + TypeScript + CSS β the identical stack to SveltyCMS. Unlike oxfmt (general JS/TS), TSV natively understands.sveltetemplate syntax,$state()runes, and Svelte block directives.- Phase 1 (v0.1, now): Evaluate
@fuzdev/tsv_format_wasmas drop-in replacement foroxfmt. WASM build available on npm, works in Node/Bun without setup. - Phase 2 (v0.2, pending): Switch to native N-API builds (
@fuzdev/tsv_format) for zero WASM overhead β faster cold starts, smaller install size. - Phase 3 (future): Replace
oxlint+svelte-checkwhen TSVβs planned linter and type checker ship (both depend on TypeScript 7 integration via TSVβs planned Go-based TS 7 backend). - Parser integration (Svelteβs acorn β tsv parser) is possible but deferred β deep build-infra change with regression risk until v0.2+ is battle-tested.
- Phase 1 (v0.1, now): Evaluate
-
Aggressive Adoption Onboarding (partial): One-click deploy buttons (Vercel, Netlify, Railway, Fly.io),
create-sveltycmsscaffolding CLI, interactive example gallery (20+ use-cases), live playground attry.sveltycms.com. Completed onboarding pieces are documented in Technical Evaluation. -
SvelteKit 3.0 Upgrade: Breaking changes checklist tracked in Migration Guide.
-
TypeScript 7 Upgrade (evaluated 2026-07):
tsc --noEmitruns in ~3.3s (vs ~20s on TS 6), but the"typescript"namespace API (ts.SourceFile,ts.createSourceFile,ts.transform,ts.createPrinter) has breaking changes in TS 7.0.2. Blockstests/unit/utils/transformers.test.ts. Pending: upstream API migration or TS 7.x patch.