Skip to content
ubugeeei-prodPublic

About

blazing fast Vue.js toolchain. compiler, linter, type checker, formatter, lsp, story system, editors. already 30k+ tests.

Topics

Resources

Contributing

Security policy

Stars

922 stars

Watchers

4 watching

Forks

Latest commit

 

History

9,521 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vize

High-Performance Vue.js Toolchain in Rust

/viːz/: Named after Vizier + Visor + Advisor, a wise tool that sees through your code.

Documentation ・ Playground ・ Sponsor

Real World Testing — Wanted

▶ Watch the Real World Testing PV

Warning

Vize is experimental and in its Real World Testing phase — not a completely production-ready toolchain yet. Breaking changes and behavior that diverges from Vue are expected. Review the stability guide, production-readiness checklist, and support policy before adopting it.

What Is Vize?

Vize is a Rust-native toolchain for Vue. One shared parser powers compilation, linting, type-checking, formatting, and editor tooling, so the Vue workflow runs on the same core instead of a patchwork of disconnected tools.

It plugs into the tools you already use: @vizejs/vite-plugin for Vite, @vizejs/nuxt for Nuxt, the vize package for project scripts, oxlint-plugin-vize for Oxlint, and @vizejs/vite-plugin-musea for the component gallery.

Usage

Vize is a toolchain you add to a Vue app. It does not scaffold the app itself. Pick the shortest path that matches your project; the docs have the rest.

Drop-in

On a Vue 3 + Vite app, replace @vitejs/plugin-vue with @vizejs/vite-plugin. Your SFCs stay as they are.

npm i -D @vizejs/vite-plugin
// vite.config.ts
import { defineConfig } from "vite";
import vize from "@vizejs/vite-plugin";

export default defineConfig({
  plugins: [vize()],
});

Then use the same dev / build scripts as before. This swaps SFC compilation only. Lint, format, and type-check stay on your current tools until you add them. The claim is Vue 3 SFCs in Vite — see Drop-in Scope.

Nuxt apps should use @vizejs/nuxt instead of wiring the Vite plugin by hand.

Type checking

Type-check .vue files with TypeScript 7.1 or newer and Vize's content mapper. tsrs can run the same tsconfig.

npm i -D vize typescript@beta
{
  "contentMappers": [{ "package": "vize", "extensions": [".vue"] }]
}
npx tsc --runExternalCode --noEmit -p tsconfig.json
npx tsrs --runExternalCode --noEmit -p tsconfig.json

typescript@beta is the 7.1 beta, the first release that includes content mappers. After 7.1 is stable, install typescript at 7.1 or newer and keep the same command. Details are in the type checking guide.

New setup

Create a Vue + Vite or Nuxt app first, then let vize init wire the toolchain.

Vue + Vite:

npm create vue@latest my-app
cd my-app
npx vize init

Nuxt:

npm create nuxt@latest my-app
cd my-app
npx vize init

init can add the Vite plugin or Nuxt module, Oxlint, vize fmt, vize check, and a VS Code recommendation. If you already have Vite+, run vpx vize init instead.

Migration

For an existing Vite, Vite+, or Nuxt project, preview the plan, then apply it:

npx vize init --dry-run
npx vize init

init is idempotent and lets you choose surfaces. Existing vize.config.* is left as-is. A second run adds no duplicate plugin, script, or dependency. The first run may still add vize:* scripts and update a plain vite.config.* or nuxt.config.*.

Non-interactive:

npx vize init --yes --lint --bundler --fmt --typecheck --editor

If you only want the compiler, use the drop-in swap above. Custom vue({ ... }) options and unusual Vite configs are not rewritten automatically. See Project Setup.

Vize is in its Real World Testing phase: fix requests and PRs are very welcome, and we are looking for reasonably large Vue projects to use as test beds.

Benchmarks

One committed artifact supplies the README and every locale. File counts are stated per row.

Runner Measured Runs Warmups
blacksmith-32vcpu-ubuntu-2404 (32 CPU) 2026-11-03T16:43:39.549Z 5 1

Actions · 3d9c82f75c2a · JSON

Surface Files Existing tool Existing Vize Speedup
SFC compile 15,000 @vue/compiler-sfc 16.50s 297.9ms 55.4×
Lint 15,000 eslint-plugin-vue 99.32s 499.8ms 198.7×
Format 15,000 Prettier 141.76s 844.7ms 167.8×
Type check 500 vue-tsc 6.50s 573.5ms 11.3×
Vite build 1,000 @vitejs/plugin-vue 1.48s 448.9ms 3.3×
Nuxt build 500 Nuxt compiler 3.66s 3.32s 1.1×

Type-check rows on the 500-SFC corpus: each tool at its fastest measured setting (the full checker-count matrix is in the snapshot). Each row reports every planted diagnostic before it is timed. Warm is the median of the measured runs, Cold is the row's first timed run, CPU is user+sys time of the whole process tree (mapper processes included), and Peak RSS is the largest single process.

Checker Setting Engine Cold Warm CPU Peak RSS vs vue-tsc
vue-tsc default JS TypeScript engine (tsc) 6.49s 6.50s 10.21s 1,254 MB 1.0×
verter-tsc default native TypeScript engine (tsgo) 2.15s 2.13s 1.47s 254 MB 3.1×
vize check --checkers 4 native TypeScript engine (tsgo) 514.8ms 516.8ms 7.50s 412 MB 12.6×
tsc + Vize mapper --checkers 16 native TypeScript engine (tsgo) 262.6ms 258.5ms 2.12s 279 MB 25.2×
tsc + Vue mapper --checkers 16 native TypeScript engine (tsgo) 2.80s 2.79s 7.78s 547 MB 2.3×
tsrs + Vize mapper --fast native TypeScript port (tsrs) 217.0ms 217.6ms 790.0ms 196 MB 29.9×
tsrs + Vue mapper --fast native TypeScript port (tsrs) 2.65s 2.70s 4.88s 532 MB 2.4×

Type-check ratios compare Vize with vue-tsc, the type checker Vue projects run today. vue-tsc drives the JavaScript TypeScript compiler while Vize drives native tsgo, so the ratio covers the whole toolchain rather than the Vue layer alone; the per-engine-class tables in the full snapshot rank same-engine tools against each other to isolate that layer. Each timed invocation passes diagnostic-work validation. Diagnostic coverage differs between tools; these ratios do not prove accuracy parity or a performance improvement over an earlier Vize version. Rejected comparators have no published timing or rank.

Nuxt measures the entire build pipeline, not isolated SFC compilation. Most build work is shared by both variants. Its ratio is 1.1x; a ratio below 1 means Vize was slower in this run.

See the Blacksmith benchmark snapshot for per-variant timings, diagnostic counts, rejected measurements and methodology.

Tool versions and binary checksums
Tool Version Binary SHA-256
Vize vize 0.474.0-dev a3d8a0125ea04664754c8accb2c05b3e6e2e2d739147b7a722590688bf8dd6dd
tsgo Version 7.0.2 4f2de678286401759b3fb4475bafe35b8f32b4b3a07d92642bbf37eadc9b34a4
vue-tsc Version 6.0.3 811cc8124f36b6c770964d486da62af1b9db6949f62bc47205982d17e8e7dc8d
verter-tsc verter-tsc 0.0.1-beta.3 81bec5c957487bd2caf15312bf4f180afadd074f11c1d34cb4bb2c66bd7ac224
Golar Golar version 0.1.10 a100c0e559b6cf85fc3e67a65f0b8eedcee0ccf624022fc4882bea2a3d6316da
TypeScript (mapper host) Version 7.1.0-beta 2219f428a7e55aaf1f7ad85b9b0f0cf5078aeb76ccc9a7c6036c92d48f492ffd
tsrs Version 7.1.0-beta (tsrs 0.20.1-ts7.1.0-beta, microsoft/TypeScript@3e9236361fa9) 9d7f26b2c80d4e45576f6e783675c5f624b055a15f94cb4089b9e9cc529722f3
@vue/content-mapper 4.0.0-alpha.3 n/a
TypeScript (vue-tsc) n/a n/a
Vue 3.6.0-beta.10 n/a
ESLint v10.4.1 41dd060d45aca4a2144b94862e21e285bbb726b19e61db7a03c5b2e0b67973cc
Prettier 3.8.3 a7a78ad15344be4f14f24832a8c5fa5918bec4339b8d1d0903a5167c34ecb428
Node.js v24.14.0 n/a

Backend: native TypeScript engine ready at /home/runner/_work/vize/vize/node_modules/@typescript/typescript-linux-x64/lib/tsc. Planted-diagnostic gating for the type-check rows lives in tools/benchmarks/scripts/check-gate.mjs (.github/workflows/check-bench.yml).

Credits

This project draws inspiration from Volar.js, vuejs/language-tools, eslint-plugin-vue, eslint-plugin-vuejs-accessibility, Lightning CSS, Storybook, and OXC.

Special thanks to:

  • Blacksmith for sponsoring high-performance CI/CD runners and Testbox infrastructure for frequent benchmarks and real-project compatibility checks.
  • Mates Inc. for allowing ubugeeei, its employee, to dedicate discretionary work time to OSS and for adopting Vize in the build for the company's engineering website.
  • Anthropic, through Claude for Open Source, for supporting Vize's ongoing open-source development.
  • OpenAI Codex for Open Source for past support of Vize's open-source development. That support ended in September 2026.
  • dmnlk for sustained code contributions and performance improvements, especially to Canon's type checker. As a Vize committer, dmnlk is entrusted with write access to the repository. Thank you for helping develop and maintain Vize.
  • かっこかり for continuously testing Vize's compiler and Vite Plugin on Misskey (~103k lines of Vue across 586 SFCs), with timely reports as the implementation changed (report).
  • ushironoko for compiler, linter, and CLI fix reports, reference implementations, and reproduction repositories.
  • dannote for bringing Vize into the Elixir community through Volt, an Elixir-native frontend toolchain built on Vize, and for reporting missing pieces and sending PRs as Volt adopted Vize as a foundation.
  • n13u and #frontend_phpcon_do for persistently reporting fix cases while building a Nuxt-based conference website with Vize, then carrying that validation all the way to production adoption (report, write-up).
  • yamanoku for accessibility-focused feedback around Vize and for using the project in the Vue Fes Japan speaker-site migration documented in the v-tokyo Meetup #25 LT notes (write-up).
  • sevenc-nanashi for using the VOICEVOX editor (~26k lines of Vue across 128 SFCs) as a real-world target for improving compiler precision (report).
  • Q16solver for moving a Nuxt monorepo's Vue tooling onto Vize (type checking with tsrs and the content mapper, library builds, and the Nuxt app build) and turning every gap against vue-tsc into a precise, minimal report covering generic and dynamic components, inline callback props, event maps, and declaration emit.
  • naitokosuke for reports spanning nearly the whole toolchain (compiler SSR and Vapor output, linter rules, Nuxt builds, the language server, the VS Code extension, the content mapper, and Musea) and for fixes to the VS Code extension, the install guide, and the development shell.
  • Everyone who has mentioned, shared, tested, or amplified Vize across the community.

Vize is a personal project by ubugeeei, licensed under the MIT License and maintained as a non-commercial OSS effort. It is not owned by any specific company, is intended to remain open, and is not being built with a buyout in mind.

License

MIT

About

blazing fast Vue.js toolchain. compiler, linter, type checker, formatter, lsp, story system, editors. already 30k+ tests.

Topics

Resources

Contributing

Security policy

Stars

922 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages