# Roadmap - [Completed](#completed) - [TODO](#to-do) - [Parking Lot](#parking-lot) | Version | State | Milestone | | ------- | ----- | -------------------------------------------------------------------------------- | | | ✓ | [Foundations](#foundations) | | | ✓ | [Reactivity & Bindings](#reactivity--bindings) | | | ✓ | [Actions & Effects](#actions--effects) | | | ✓ | [Plugins Framework](#plugins-framework) | | | ✓ | [Backend Integration & HTTP Actions](#backend-integration--http-actions) | | | ✓ | [Proxy-Based Reactivity Enhancements](#proxy-based-reactivity-enhancements) | | v0.1.0 | ✓ | [Markup Based Reactivity](#markup-based-reactivity) | | v0.2.0 | ✓ | [Reactive Attributes & Event Modifiers](#reactive-attributes--event-modifiers) | | v0.3.0 | ✓ | [Global State](#global-state) | | v0.4.0 | ✓ | [Animation & Transitions](#animation--transitions) | | v0.5.0 | ✓ | [Navigation & History API Routing](#navigation--history-api-routing) | | | ✓ | [Refactor](#evaluator--binder-hardening) | | v0.5.1 | ✓ | [Error Handling & Diagnostics](#error-handling--diagnostics) (partial) | | v0.6.0 | | [Error Handling & Diagnostics](#error-handling--diagnostics) | | v0.6.0 | | [Bundle Size Optimization](#bundle-size-optimization) | | v0.6.0 | | [IIFE Build Support](#iife-build-support) | | v0.7.0 | | [Testing & Benchmarking](#testing--benchmarking) | | v0.7.0 | | [CSP Compatibility](#csp-compatibility) | | v0.8.0 | | [DOM Morphing & Streaming](#dom-morphing--streaming) | | v0.9.0 | | [Scope Inheritance & State Management](#scope-inheritance--state-management) | | v0.10.0 | | [Background Requests & Reactive Polling](#background-requests--reactive-polling) | | v0.11.0 | | [Attribute Prefix Support](#attribute-prefix-support) | | v0.12.0 | | [Persistence & Offline](#persistence--offline) (advanced features) | | v0.13.0 | | [Inspector & Developer Tools](#inspector--developer-tools) | | v1.0.0 | | [Stable Release](#stable-release) | ## Completed _NOTE_: `data-x-*` is now `data-volt-*` ### Foundations **Goal:** Establish project structure, tooling, and base reactivity primitives. **Outcome:** A bootable TypeScript project with working reactivity primitives and test coverage. **Summary:** A TypeScript project scaffold with implemented signal() (subscribe/set/get) and foundational reactivity tests establishes the base system. ### Reactivity & Bindings **Goal:** Connect signals to DOM via declarative `data-x-*` bindings. **Outcome:** Reactive text/attribute binding with signals → DOM synchronization. **Summary:** Reactive DOM bindings (`data-x-text`, `data-x-html`, `data-x-class`) with a safe expression evaluator, mutation batching, and DOM testing ensure synchronized updates between signals and UI. ### Actions & Effects **Goal:** Add event-driven behavior and derived reactivity. **Outcome:** Fully functional reactive UI layer with event bindings and computed updates. **Summary:** An event binding system with `$el`, `$event`, and derived signals (computed, effect, async effects) delivers a complete reactive event-driven UI layer. ### Plugins Framework **Goal:** Build a modular plugin architecture with dynamic registration. **Outcome:** Stable plugin API enabling community-driven extensions. **Summary:** A modular plugin API with lifecycle hooks and built-in extensions (persist, scroll, url) enables dynamic feature registration and community contributions. ### Backend Integration & HTTP Actions **Goal:** Provide backend integration with declarative HTTP requests and responses. **Outcome:** VoltX.js can make backend requests and update the DOM **Summary:** Declarative HTTP directives (data-volt-get|post|put|patch|delete) with swap strategies, loading indicators, error handling, and form serialization integrate VoltX.js seamlessly with backend APIs. ### Markup Based Reactivity **Goal:** Allow Volt apps to declare state, bindings, and behavior entirely in HTML markup **Outcome:** Authors can ship examples without companion JavaScript bundles **Summary:** Declarative HTML state, binding, control-flow, and event directives with SSR support and a sandboxed evaluator enable Volt apps to run without separate JavaScript bundles. ### Proxy-Based Reactivity Enhancements **Goal:** Use JavaScript Proxies to improve reactivity ergonomics and automatic dependency tracking. **Outcome:** More intuitive API with automatic dependency tracking and optional deep reactivity for objects/arrays. **Summary:** Proxy-driven automatic dependency tracking, deep reactive() objects, reactive arrays, lazy signal creation, and debugging utilities improve reactivity ergonomics and performance. ### Reactive Attributes & Event Modifiers **Goal:** Extend VoltX.js with expressive attribute patterns and event options for fine-grained control. **Outcome:** VoltX.js supports rich declarative behaviors and event semantics built entirely on standard DOM APIs. **Summary:** Introduced expressive attribute patterns and event modifiers for precise DOM and input control, for fine-grained declarative behavior entirely through standard DOM APIs. ### Global State **Goal:** Implement store/context pattern **Outcome:** VoltX.js provides intuitive global state management **Summary:** The scope injects helpers like `$origin`, `$scope`, `$pulse`, `$store`, `$uid`, `$probe`, `$pins`, and `$arc`, giving templates access to global state, microtask scheduling, deterministic IDs, element refs, and custom event dispatch without leaving declarative markup. ### Animation & Transitions **Goal:** Add animation primitives for smooth UI transitions with Alpine/Datastar parity. **Outcome:** VoltX.js enables declarative animations and view transitions alongside reactivity. **Summary:** The surge directive ships fade/slide/scale/blur presets with duration and delay overrides, per-phase enter/leave control, and easing helpers, while the shift plugin applies reusable keyframe animations—both composable with `data-volt-if`/`data-volt-show` as showcased in the animations demo. ### Navigation & History API Routing **Goal:** Provide seamless client-side navigation with a first-class History API router. **Outcome:** VoltX.js delivers accessible, stateful navigation with clean URLs and signal-driven routing. **Summary:** Added seamless client-side navigation through a History API–powered router, enabling declarative routing with `data-volt-navigate` and `data-volt-url`, reactive URL synchronization, smooth transitions, scroll and focus restoration, dynamic route parsing, and full integration with signals and the View Transition API for accessible, stateful navigation and clean URLs. ## To-Do **Focus:** Versions v0.5.5 through v0.9.x prioritize core framework capabilities and performance: - Bundle size reduction to <15KB gzipped (currently 19KB) - CSP compatibility (removing Function constructor dependency) - DOM morphing and SSE streaming support - Optional scope inheritance for improved ergonomics These milestones strengthen VoltX.js as a signals-based reactive framework with declarative-first design. ### Error Handling & Diagnostics **Goal**: Provide clear, actionable feedback when runtime or directive errors occur. **Outcome**: VoltX.js surfaces developer-friendly diagnostics for expression evaluation, directive parsing, and network operations, making it easier to debug apps without opaque stack traces. **Deliverables**: - ✓ v0.5.1: Centralized error boundary system for directives and effects - ✓ v0.5.1: Sandbox error wrapping with contextual hints (directive name, expression, element) - ✓ v0.5.1: `$volt.report(error, context)` API for plugin and app-level reporting - ✓ v0.6.0: Enhanced console error messages with directive context - ✓ v0.6.0: Differentiated error levels: warn, error, fatal - ✓ v0.6.0: Documentation: "Understanding VoltX Errors" guide - v0.6.0: Add error handling examples to demo - v0.13.0: Visual in-DOM error overlays for development mode - v0.13.0: Runtime health monitor tracking failures - v0.13.0: Configurable global error policy ### Persistence & Offline **Goal:** Introduce persistent storage and offline-first behaviors. **Outcome:** Resilient state persistence and offline replay built into VoltX.js. **Deliverables:** - ✓ Persistent signals (localStorage, sessionStorage, indexedDb) - ✓ Storage plugin (`data-volt-persist`) - v0.12.0: Storage modifiers on signals (`.local`, `.session`, `.ifmissing`) - v0.12.0: Sync strategy API (merge, overwrite, patch) for conflict resolution - v0.12.0: Cache invalidation strategies - v0.12.0: Offline queue for deferred stream events and HTTP requests - v0.12.0: Service Worker integration for offline-first apps - v0.12.0: Background sync for deferred requests - v0.12.0: Cross-tab synchronization via `BroadcastChannel` ### Bundle Size Optimization **Goal:** Reduce bundle size to <15KB gzipped while maintaining full feature set. **Outcome:** Lightweight runtime footprint with comprehensive declarative capabilities. **Deliverables:** - v0.6.0: Audit and tree-shake unused code paths - v0.6.0: Optimize evaluator and binder implementations - v0.6.0: Minimize plugin footprint, ensure lazy loading - v0.6.0: Refactor expression compiler for smaller output - v0.6.0: Compress constant strings and reduce runtime helpers - v0.6.0: Optimize signal subscription management - v0.6.0: Production mode stripping (remove dev-only error messages) - v0.6.0: Aggressive minification pipeline tuning - v0.6.0: Target: <15KB gzipped sustained ### IIFE Build Support **Goal:** Provide an IIFE build target for VoltX.js to support direct `` - v0.6.0: Ensure plugins work with IIFE build - v0.6.0: Add IIFE examples to documentation ### Testing & Benchmarking **Goal:** Establish comprehensive testing infrastructure and performance benchmarking. **Outcome:** VoltX.js has rigorous end-to-end testing and quantifiable performance metrics against competing frameworks. **Deliverables:** - v0.7.0: Playwright-based integration test suite for real browser testing - v0.7.0: End-to-end tests for all core directives and plugins - v0.7.0: Cross-browser compatibility tests (Chrome, Firefox, Safari) - v0.7.0: Memory usage and leak detection benchmarks - v0.7.0: Bundle size tracking and regression detection - v0.7.0: Reactivity performance benchmarks (signal updates, computed chains, effect execution) - v0.7.0: DOM update performance benchmarks - v0.7.0: CI integration for automated benchmark runs and regression alerts ### CSP Compatibility **Goal:** Make VoltX.js Content Security Policy compliant without 'unsafe-eval'. **Outcome:** VoltX.js can run in strict CSP environments (no Function constructor). **Deliverables:** - v0.7.0: Research and design CSP-safe evaluator architecture - v0.7.0: Evaluate trade-offs: AST interpreter vs limited expression subset - v0.7.0: Implement CSP-safe expression evaluator (AST-based or restricted syntax) - v0.7.0: Maintain expression feature parity where possible - v0.7.0: Fallback mode detection for environments requiring CSP - v0.7.0: Full test coverage for CSP mode - v0.7.0: Documentation on CSP limitations and alternatives - v0.7.0: Bundle split: standard build vs CSP build ### DOM Morphing & Streaming **Goal:** Add intelligent DOM morphing and Server-Sent Events for real-time updates. **Outcome:** Built-in morphing and SSE streaming for seamless server-driven UI updates. **Deliverables:** - v0.8.0: Integrate Idiomorph or implement lightweight morphing algorithm - v0.8.0: `data-volt-morph` attribute for morphing-based swaps - v0.8.0: Preserve focus, scroll, and input state during morphs - v0.8.0: Server-Sent Events (SSE) integration - v0.8.0: `data-volt-stream` attribute for SSE endpoints - v0.8.0: Automatic reconnection with exponential backoff - v0.8.0: Signal patching from backend SSE events - v0.8.0: JSON Patch support for partial updates - v0.8.0: `data-volt-ignore-morph` for selective exclusion - v0.8.0: WebSocket as alternative to SSE - v0.8.0: Unified streaming API across SSE/WebSocket ### Scope Inheritance & State Management **Goal:** Improve data scoping with optional inheritance for ergonomic nested components. **Outcome:** Flexible scoping patterns for complex component hierarchies. **Deliverables:** - v0.9.0: Optional scope inheritance via `data-volt-scope="inherit"` - v0.9.0: Child scopes inherit parent signals with override capability - v0.9.0: $parent accessor for explicit parent scope access - v0.9.0: Scoped context providers for dependency injection - v0.9.0: Enhanced $store with namespacing and modules - v0.9.0: Cross-scope signal sharing patterns ### Background Requests & Reactive Polling **Goal:** Enable declarative background data fetching and periodic updates. **Outcome:** VoltX.js elements can fetch or refresh data automatically based on time, visibility, or reactive conditions. **Deliverables:** - v0.10.0: `data-volt-visible` for fetching when element enters viewport (IntersectionObserver) - v0.10.0: `data-volt-poll` attribute for periodic background requests - v0.10.0: Configurable intervals, delays, and signal-based triggers - v0.10.0: Automatic cancellation when elements unmount - v0.10.0: Conditional polling tied to reactive signals - v0.10.0: Background task scheduler with priority management ### Attribute Prefix Support **Goal:** Support multiple attribute prefix options for developer preference. **Outcome:** VoltX.js supports `voltx-`, `vx-`, and `data-volt-` prefixes. **Deliverables:** - v0.11.0: Add support for `voltx-*` and `vx-*` attribute prefixes - v0.11.0: Recommend `vx-*` as primary in documentation - v0.11.0: Maintain backward compatibility with `data-volt-*` - v0.11.0: Update demo to use recommended prefix ### Inspector & Developer Tools **Goal:** Improve developer experience and runtime introspection. **Outcome:** First-class developer ergonomics; VoltX.js is enjoyable to debug and extend. **Deliverables:** - v0.13.0: Visual in-DOM error overlays for development mode - v0.13.0: Runtime health monitor tracking failures - v0.13.0: Configurable global error policy (silent, overlay, throw) - v0.13.0: Developer overlay for inspecting signals, subscriptions, and effects - v0.13.0: Time-travel debugging for signal history - v0.13.0: Signal dependency graph visualization - v0.13.0: Performance profiling tools - v0.13.0: Browser console integration (`window.$volt.inspect()`) - v0.13.0: Dev logging toggle (`Volt.debug = true`) - v0.13.0: Request/response debugging (HTTP actions, SSE streams) - v0.13.0: Browser DevTools extension with full integration ### Stable Release **Goal:** Prepare & ship the stable release **Outcome:** VoltX.js 1.0 is stable, documented, performant, and ready for production. **Deliverables:** - ✓ Documentation site (VitePress) - Full API reference with examples - Create generator in `@voltx/cli` package - Finalized plugin registry and CLI (`volt plugins list/init`) - Versioned documentation () - Announcement post and release notes - Community contribution guide & governance doc ## Parking Lot ### Evaluator & Binder Hardening All expression evaluation now flows through a cached `new Function` compiler guarded by a hardened scope proxy, with the binder slimmed into a directive registry so plugins self-register while tests verify the sandboxed error surfaces.