Skip to content

Compatibility matrix ​

This page records the supported paths and integration tests in this repository. The beta table describes published packages; the additions below describe the opt-in 0.2 alpha scope. Each entry covers its named consumer path. Check package versions before applying a row; release lines explains the maintenance boundary.

Beta framework capabilities ​

All four adapter packages first shipped at 0.1.0-beta.0 on the npm beta channel. Published describes package availability; supported describes the narrower integration contract. Beta does not mean every host-framework feature is implemented.

Capability / evidenceVue 3React 19Solid 1.9Svelte 5
Beta support levelSupportedSupportedExperimentalExperimental
Rust-file Component mount, prop update, callback/eventVerifiedVerifiedVerifiedVerified
Instance-scoped Store actions and reactive snapshotsRef (state.value)Snapshot (state)Accessor (state())Readable ($state)
Generated component/Store declarations, owned struct and unit-enum typesImplementedImplementedImplementedImplemented
Lifecycle coverageMount/unmount and late Store resolutionStrictMode cleanup and late Store resolutionOwner cleanup and late Store resolution in adapter testsComponent and Store disposed once on child unmount
Rust-file production browser fixtureVite 7 + ChromiumVite 7 + ChromiumVite 7 + ChromiumVite 7 + Chromium
Separate clean packed consumer acceptance in the published releaseVerifiedVerifiedNot yet coveredNot yet covered
npm-registry consumer acceptanceVerifiedVerifiedNot yet coveredNot yet covered
SSR / hydration / slots in published betaNot supportedNot supportedNot supportedNot supported

The beta.0 release run passed verify:release, including test:rust-vue, test:rust-react, test:rust-solid, and test:rust-svelte. Adapter tests and the shared build-core declaration tests supplement these browser fixtures. Publishing all ten packages and checking their registry metadata does not substitute for the separate Vue/React clean-consumer tests (test:packed-release and test:registry).

Beta.0 also preserves React's ready null Store snapshot and Vue's omitted optional Boolean prop (Option::None, rather than Some(false)). Solid and Svelte already preserve those values; the React/Vue fixes do not imply those adapters were absent from earlier builds.

Alpha source-fixture evidence: test:vite8-frameworks installs Vue, React, Solid and Svelte in separate clean tarball consumers on Vite 8.2.1. It covers production Chromium interactions, strict generated declarations, development Rust edits, compiler-error recovery, rapid saves and host component edits. Svelte uses @sveltejs/vite-plugin-svelte 7.1.2 on Vite 8. These are packed source fixtures, not independent npm-registry browser evidence for Solid/Svelte; both adapters remain experimental. SvelteKit is not covered. See Getting started for all four configurations.

Framework and host-tool minimums ​

These rows combine published minimums with explicitly marked source-only experiments. Octane and the newer Vapor fixture are not additions to the published beta support table above.

LayerMinimum versionStatusEvidence and boundary
Node.js^20.19.0 || >=22.12.0SupportedSource quickstarts run on Ubuntu + Node 20, macOS + Node 22, Windows + Node 22; the full release gate runs on Ubuntu + Node 22
Vue>=3.5.2 <4SupportedStrict adapter declaration checks pass from 3.5.2 through 3.5.41; current-source Vue 3.6/Vapor evidence is listed separately below; 3.5.0 and 3.5.1 are outside the supported type boundary
React>=19SupportedBrowser fixtures cover 19.0.0 and 19.2.0; React 18 is below the supported minimum
Solid>=1.9 <2ExperimentalVite 7 production browser fixture covers a Rust-file component, callback event, and Accessor-backed Store update; adapter unit tests cover owner cleanup and late resolution
Svelte>=5 <6ExperimentalSvelte 5 + Vite 7 production Chromium fixture covers Component mount/callback, Store action, Component prop update, generated Readable declarations, and Component/Store owner cleanup
Octane0.9.0Private workspace experiment; excluded from 0.2Independent packed fixture with @octanejs/vite-plugin 0.2.1 on Vite 8.0.16 covers Component/Store isolation, props/events, disposal/remount and strict declarations; Node >=22.22.2; no npm release or SSR claim
React 19 Rust-file authoringVite 7Supported beta pathProduction build and browser interaction cover an instance-scoped store, useSyncExternalStore, atomic component prop updates, and StrictMode cleanup
Vue VaporVue 3.6 experimentalCurrent-source fixture, experimentalVite 8 + Vue 3.6.0-beta.17 mounts a Rust-file component when the app uses Vue's vaporInteropPlugin; Vapor remains an upstream Vue opt-in

Current-source browser fixtures ​

Commands in this section run the checkout; later main commits may include unpublished changes. Only the release evidence above establishes the npm beta boundary.

Consumer pathVerified behaviorEvidence
Vue 3 Rust-file component/storeVite 7 production build, scoped CSS, store action and snapshot-driven component updatenpm run test:rust-vue; packed source quickstarts run on the OS/Node jobs in .github/workflows/verify.yml
React 19 Rust-file component/storeVite 7 production build, StrictMode mount, store action and snapshot-driven component updatenpm run test:rust-react
Solid 1.9 Rust-file component/storeVite 7 production build, callback event, Store action, and signal/Accessor-driven DOM update; adapter tests cover owner-scoped disposalnpm run test:rust-solid; npm run test:solid
Svelte 5 Rust-file component/storeVite 7 production build, callback event, Store action, prop update, Readable declaration, no Chromium runtime error, and exactly one Component handle plus generated Store disposal after child unmountnpm run test:rust-svelte
Octane 0.9 Rust-file component/storeNative client components and Stores, independent instances, prop/event updates, generated types and unmount/remountnpm run test:rust-octane (independent private experiment, outside the public release gate)
Rust-file Vite development pathRust source edit, failed rebuild recovery, subsequent successful rebuild, and full reloadnpm run test:rust-hmr
Rust rsx! DOM runtimeSignal text/attribute updates, owned events, conditional if/else, keyed for reorder and DOM identity, disposalnpm run test:rsx
Vue TaskListReactive state, keyed rows, filtering, validation error statenpm run test:e2e (tasks target)
Vue DataGridFilter, sort, virtual scroll, local measurement controlnpm run test:e2e (benchmark target)
Vue Canvas scatter150,000-point initial island, point-count update, zoom/reset, no page or console errornpm run test:e2e:scatter
Vue precompiled build fixtureGenerated WASM in a clean Vite consumer without Rust tooling; mount and prop updatenpm run test:precompiled-vue

Rust-file bundler additions ​

The 0.2 alpha batch adds Webpack/Rspack Rust-file integration. These checks run against tarballs built from this checkout, not the existing npm Beta artifacts. npm run test:rust-bundlers covers Vue and React on Webpack 5.109.2 and Rspack 2.1.10, including rust.sourceRoot: "." with Rust files at the application root. Vue watch fixtures cover invalid Rust and recovery, linked CSS updates, newly added .rs files, and stable builds after generated output. Applications retain responsibility for framework transforms, HTML and CSS rules. SSR/Next.js and state-preserving HMR are not implied.

Current-source bundler/toolchain matrix ​

These entries run against tarballs built from the checkout in a fresh temporary consumer. They are source evidence, not proof that installing npm @beta provides Vite+ four-framework support or Webpack/Rspack Rust-file integration. The evidence and boundary columns state the exact checks exercised by each toolchain; a production smoke does not imply development-server or HMR support.

ToolchainVersion range / tested versionEvidenceBoundary
Vite>=7 <9npm run test:vite8-frameworks; npm run test:vite8Vite 8.2.1: separate packed Vue/React/Solid/Svelte production, strict types and dev/error-recovery checks. Vite 7 remains a required regression path; the older compatibility smoke is separate.
Vite 8 + Vue VaporVite 8.2.1; Vue 3.6.0-beta.17npm run test:vite8-vaporRust-file component mounts in a Vapor app with vaporInteropPlugin; experimental evidence only
Vite+0.2.9, matching core alias 0.2.9 (Vite 8.2.1)npm run test:vite-plus-frameworks; npm run test:vite-plusPacked Vue/React/Solid/Svelte .rs production builds and Chromium interactions, strict declarations, dev rebuilds, Rust error recovery, rapid saves and host component edits. Rust edits use full reload; legacy .voo regression is separate. Normal npm installation uses the documented alias/overrides.
Rspack / RsbuildRspack >=2.1.10; Rsbuild >=2.1.13npm run test:rspackExperimental packed Vue/React/Rslib/native-Rspack fixtures with WASM, scoped CSS, lifecycle checks, mapped diagnostics, and rebuild recovery. test:rust-bundlers adds packed Vue/React .rs production builds, Stores, props/events, scoped CSS, and unmount/remount; Vue Rust-file watch also covers failure recovery, style edits and new modules; other framework/watch combinations remain unverified.
Webpack>=5npm run test:webpackExperimental packed Vue/React production and watch fixtures with emitted WASM, scoped CSS, lifecycle checks, mapped diagnostics, and recovery. test:rust-bundlers adds packed Vue/React .rs production builds, Stores, props/events, scoped CSS, and unmount/remount; Vue Rust-file watch also covers failure recovery, style edits and new modules; other framework/watch combinations remain unverified.

0.2 alpha SSR additions ​

Current source keeps Vue Store creation in the browser and preserves React client boundaries. Adapter tests cover server rendering and hydration; the Nuxt packed consumer covers WASM loading, props/events, independent Stores and route cleanup. The server renders host containers, not Rust component content. Next.js remains unverified. See the SSR scope for the API boundaries.

Not verified / not supported yet ​

  • WebKit/Safari and mobile browsers have no current compatibility claim. Firefox evidence is limited to the named Vue source component path above.
  • Solid on Rspack/Webpack, or browsers other than the named Chromium fixture has no current compatibility claim.
  • Svelte 3/4, SvelteKit, Svelte SSR/hydration, and Svelte through Rspack/Webpack have no current compatibility claim. The Svelte row above is limited to its named Vite 7/8 + Chromium fixtures.
  • No precompiled component product is currently published; the Vue fixture is build-contract evidence only.
  • Webpack 4, Rspack versions below 2.1.10, Rollup, Turbopack, and other unlisted bundlers have no compatibility claim. The Turbopack API evidence and remaining integration questions are recorded in Turbopack research; exact Rspack evidence is limited to the versions named in the row above.
  • Vite+ adds a CLI, runtime/package-manager management, and a Vite core alias; it uses the normal vooya() Vite plugin. The pinned dev/build fixtures do not cover every bundled Vite+ tool or other Vite+ versions. See the Vite+ setup for alias and override configuration.
  • The old .voo path was an exploratory intermediate. Remaining legacy fixtures are repository regression evidence only and are not a supported authoring or compatibility claim.
  • Prerelease ABI revisions may be breaking. Use the beta channel and retain the lockfile; package versions are independent and internal dependencies are exact.
  • Vapor applications must use Vue's Vapor runtime, createVaporApp, and vaporInteropPlugin; Vooya does not replace that host-framework setup.

Updating this matrix ​

Add an entry only with an automated command that runs against a fresh browser or packed consumer. State the exact framework and browser project; do not turn a passing Chromium fixture into a general browser-support statement.

Vooya is a beta project. Check the compatibility matrix before relying on a path.