Vize

Stability

Vize is moving toward a v1 alpha. The alpha contract is intentionally narrower than a stable v1 contract: it names the surfaces that should be usable by early adopters, while keeping room to change internals and experimental integrations quickly. The full project is not yet a completely production-ready toolchain; release decisions should use the production-readiness checklist. Deprecation windows, SemVer rules, and release-line support are spelled out in the support policy.

Versioning Contract

Before v1 stable, any prerelease can include breaking changes. Vize still treats breaking changes as release-note material, especially when they affect package entrypoints, CLI flags, config fields, diagnostic codes, or generated output.

The v1 alpha line uses these rules:

Surface Alpha expectation
Published package names Should remain available or ship with migration notes
Documented CLI commands and flags Should avoid silent behavior changes
Documented config fields Should keep names and value shapes stable unless release notes call out a change
Diagnostic codes listed in docs Should remain recognizable so suppressions and issue reports stay useful
Rust crate internals May change without migration support before v1 stable
Generated code and virtual TS output May change when needed for correctness, compatibility, performance, or diagnostics

Runtime Support

The default Node.js floor for public npm runtime packages is Node 22. oxlint-plugin-vize is the exception and requires Node 24 because it follows Oxlint's JavaScript plugin runtime.

The release workflow builds native packages for macOS, Linux, and Windows across x64 and arm64 where the package declares support. CI compatibility jobs cover the declared Node floor and the current project Node version.

The full fresh-install smoke matrix (.github/workflows/native-smoke.yml) runs on a weekly cadence and on demand, not on every PR push. It exercises the published package install path on ubuntu-latest (linux-x64-gnu), ubuntu-24.04-arm (linux-arm64-gnu), macos-15-intel (darwin-x64), macos-latest (darwin-arm64), windows-latest (win32-x64-msvc), and windows-11-arm (win32-arm64-msvc) against Node 22 and Node 24. Release tags remain blocked by the release workflow's tarball install smoke before npm packages publish. The runtime smoke checks vize --version, vize check, @vizejs/native through both require and import, and a @vizejs/vite-plugin vite build from installed tarballs.

Two declared Linux musl targets are not currently exercised by a hosted fresh-install runner. They are covered by per-platform build artifacts plus the @vizejs/native-* optional-dependency resolver until a containerized Alpine smoke can stage the matching native tarball:

Target Hosted runner gap Compensating coverage
linux-x64-musl No GitHub-hosted Alpine/musl VM is available as a native runner Build job emits the musl tarball; manual node:alpine smoke.
linux-arm64-musl Arm64 hosted runners are Ubuntu GNU, not Alpine/musl native hosts Build job emits the arm64 musl tarball; manual Alpine arm64 smoke.

Closing these gaps is tracked alongside #493.

The minimum supported Rust version (MSRV) for the workspace is declared in Cargo.toml under [workspace.package].rust-version. The development toolchain pinned by rust-toolchain.toml may be the same version or newer. Before v1 stable the MSRV may move forward in any prerelease; the move is called out in release notes when it changes. Downstream packagers should read rust-version from a crate's Cargo.toml rather than infer it from the toolchain file.

Package Support Tiers

Tier Packages Contract
Alpha-supported vize, @vizejs/native, @vizejs/vite-plugin Intended for early production trials with release-note-backed breaking changes.
Compatibility preview @vizejs/unplugin, @vizejs/rspack-plugin, @vizejs/nuxt, @vizejs/musea-nuxt Expected to work for common host setups, but host-framework compatibility can move quickly.
Experimental oxlint-plugin-vize, @vizejs/vite-plugin-musea, @vizejs/musea-mcp-server, @vizejs/wasm Public packages, but APIs, commands, output, and workflow shape may change during alpha.
Incubating @vizejs/fresco, @vizejs/fresco-native, editor extension packages Useful for development and feedback, but not yet part of the v1 alpha production-ready target.

What Counts as Stable Enough for Alpha

A package or command can move into the alpha-supported tier when it has:

  • documented install and usage paths

  • CI coverage for package build, install, and supported Node runtime

  • release smoke coverage for published entrypoints

  • a clear owner for regressions and compatibility reports

  • known unsupported behavior documented in the relevant guide

What Is Not Promised Yet

The alpha does not promise full compatibility with every Vue compiler edge case, every package manager layout, every editor capability, or every framework integration. When Vize disagrees with official Vue tooling, treat the official output as the compatibility baseline unless a Vize guide explicitly documents a different behavior. The release-blocking compiler, type-checking, runtime, and Vite build surfaces are named in the Vue parity matrix.

For security handling, see the repository SECURITY.md. For contribution and issue workflow, see CONTRIBUTING.md.