Skip to content

Documentation

Project Roadmap 2026

SveltyCMS 2026 roadmap β€” upcoming milestones and in-progress work. Completed items are documented in the technical evaluation.

7/30/2026
9 min read Edit on GitHub
Note

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 pin order + 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) in SmartFilterRow without 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 SmartTableShell empty/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-metrics into 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/marketplace endpoint), 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-postgresql as separate npm packages. Pending: adapter extraction from src/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).
  • Svelty Managed Cloud: Optional managed Postgres + Redis tier (Fly.io/Cloudflare).

  • Enterprise Infrastructure Scaling: Generate a multi-stage production Dockerfile and 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 oxfmt with tsv format for 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 .svelte template syntax, $state() runes, and Svelte block directives.

    • Phase 1 (v0.1, now): Evaluate @fuzdev/tsv_format_wasm as drop-in replacement for oxfmt. 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-check when 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.
  • Aggressive Adoption Onboarding (partial): One-click deploy buttons (Vercel, Netlify, Railway, Fly.io), create-sveltycms scaffolding CLI, interactive example gallery (20+ use-cases), live playground at try.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 --noEmit runs 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. Blocks tests/unit/utils/transformers.test.ts. Pending: upstream API migration or TS 7.x patch.


roadmaptodoplanning
Was this page helpful?