@vooya/vue

Vue host adapter for Vooya component islands.
2,544 10
Install
npm install @vooya/vue@alpha
Latest Version:0.2.0-alpha.0
Vue:3
License:MIT OR Apache-2.0
Last Updated:Oct 21, 2026
Links: GitHub  ·  npm
Maintainer: seriohhhh

Vooya

Bring Rust and WebAssembly into the web app you already have.

npm beta version build status license

Documentation · Getting started · 中文指南 · Examples & experiments

Vooya connects Rust components and stores to existing web applications. Write ordinary .rs files, reuse browser-compatible crates, and import the result through a framework adapter. Your application keeps its router, page tree, and surrounding UI. Rust owns a focused component or stateful capability.

Vooya handles the work between them: compilation, WASM loading, typed bindings, props and events, reactive snapshots, lifecycle, and cleanup. Use it for a parser, visualization, simulation, editor surface, or another bounded workload.

How it fits together

Vooya ecosystem: bundlers connect to the Rust provider and native toolchain at build time; framework adapters connect the web app to generated WASM and JavaScript at runtime. Dashed language providers and ellipses indicate future extensions; asterisks mark experimental integrations.

  • Your framework owns the application. Vooya's adapters follow its lifecycle and reactive model; a Component owns its mounted subtree, while a Store exposes snapshots, actions, and subscriptions.
  • Your bundler owns the build integration. Vooya plugins connect source imports, generated modules, assets, rebuilds, and diagnostics to Vite, Rspack, or Webpack.
  • The language provider owns compilation. Rust is implemented today. @vooya/build-core currently forwards to @vooya/provider-rust; a public multi-language provider protocol is still being designed.
  • Toolchains run at build time. Use system Rust tools or the optional alpha @vooya/preset, which prepares pinned native tools. The browser runs the generated JS and WASM; the preset is not a browser-hosted compiler.

The diagram shows the current Rust path and future extension points. Asterisks mark experimental integrations; dashed outlines and ellipses indicate planned or additional integrations. See the compatibility matrix below for supported combinations. Read the architecture rationale and provider research for the design and its open questions.

A Rust component, used from Vue

// Greeting.rs
use wasm_bindgen::JsValue;
use vooya as voo;

#[voo::props]
#[derive(voo::FromJs)]
pub struct GreetingProps {
    pub name: String,
}

#[voo::component]
pub fn Greeting(
    view: &voo::View,
    props: GreetingProps,
) -> Result<voo::ViewElement, JsValue> {
    let label = format!("Hello, {}.", props.name);
    voo::rsx!(view, <p>{label}</p>)
}
<script setup lang="ts">
import Greeting from "./Greeting.rs";
</script>

<template>
  <Greeting name="Vooya" />
</template>

Vooya generates the wrapper and TypeScript declarations. Rust Stores use the same authoring model and expose framework-native state through generated hooks. Follow the Vue or React quickstart for installation, toolchain prerequisites, and project configuration.

Current scope

Vooya is a prerelease project. The default quickstart uses the beta channel; the 0.2 alpha is an explicit opt-in. Package versions differ: use the documented installation path rather than assigning one version to every package.

Area Current boundary
Authoring Rust .rs Components and Stores; other language providers are research
Frameworks Vue and React supported; Solid and Svelte experimental
Bundlers Vite 7/8 is the primary path; Rspack and Webpack support Rust .rs Components and Stores in the 0.2 alpha graph, with Vue/React coverage
Toolchains System Rust tools; optional managed @vooya/preset in alpha, with native SDK/linker prerequisites
Development Rust rebuilds reload the page; Rust state is not preserved
Distribution Authors organize and publish ordinary JS/WASM packages; Vooya has no dedicated component-package format

Rspack and Webpack integrations remain experimental: they have working implementations with a limited acceptance matrix. Rust .rs authoring requires the 0.2 alpha package set; the older non-Vite beta packages do not implement that path. Production browser tests cover Vue and React; Rust watch recovery is verified for Vue. Other framework/watch combinations are not yet verified.

See the compatibility matrix, project status, and alpha installation guide for exact versions and verified combinations. The current development line has removed the custom source format and its tooling; see the migration guide.

Learn more

Community

Questions, focused bug reports, and contributions are welcome. Start with Contributing, browse the good first issues, or discuss a proposal in Issues.

Vooya Lab exercises browser and integration boundaries. Vooya FS is a separate native Node.js batch-filesystem project; it uses Node-API, with its own runtime and support scope.

License

Dual-licensed under MIT or Apache-2.0.

Version History

Pre-releases (16)
Version Released Vue License
0.2.0-alpha.0 >=3.5.2 MIT OR Apache-2.0
0.1.0-beta.1 >=3.5.2 MIT OR Apache-2.0
0.1.0-beta.0 >=3.5.2 MIT OR Apache-2.0
0.1.0-alpha.12 >=3.5.2 MIT OR Apache-2.0
0.1.0-alpha.11 >=3.5.2 <4 MIT OR Apache-2.0