Vitesse bundles file routing, auto imports and SSG for Vue 3, and its own README points new projects to Nuxt
🏕 Opinionated Vite + Vue Starter Template
At a glance
- What is it?
- An MIT-licensed Vite and Vue 3 starter template from antfu-collective with Pinia, UnoCSS, vite-ssg, Vitest and Cypress pre-wired. A note at the top of the README recommends Nuxt for better developer experience and warns of slower updates.
- Who is it for?
- Use Vitesse as a reference or a fast start for a Vue 3 single-page app or static site when you already like its choices: UnoCSS, Pinia, file routing and pnpm. Do not pick it for a long-lived production app if you want maintained defaults, since the README itself recommends Nuxt and expects slower updates.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 33 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- antfu-collective/vitesse9,436 ★ · -3
| Repository | 2026-10-09 | 2026-11-07 |
|---|---|---|
| antfu-collective/vitesse | 9.4k | 9.4k |
-3 Stars in the last 29 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The README itself recommends Nuxt over this template
A note at the top says the template was created during the early transition of Vue 3 and Vite. For better Vue developer experience and more consistent maintenance, it recommends Nuxt instead, and adds that Nuxt also works with SPA or SSG as needed. The template, in its words, still serves as a reference, but you should expect slower updates.
The repository is not archived, there are no GitHub releases, and the last push to main was 2026-10-06. So commits still land, but there are no version tags to pin to. A team copying the template gets a snapshot of main on the day it clones. Vitesse also has official offshoots: vitesse-nuxt3, vitesse-lite, vitesse-nuxt-bridge and vitesse-webext, which are the places the authors send people who want a variation.
Pages and components appear without import statements
Routing is file based: unplugin-vue-router builds routes from the src/pages directory, and vite-plugin-vue-layouts wraps pages in layouts from src/layouts. Components in src/components are auto imported by unplugin-vue-components. Composition API functions and others are auto imported by unplugin-auto-import, so a script block can call them directly.
The saving is boilerplate. The cost is that a newcomer reading a component cannot see where a function came from without checking the plugin config in vite.config.ts. Vue Macros is added for extra syntax sugar. The coding style is the script setup SFC syntax, enforced by ESLint with @antfu/eslint-config, which means single quotes and no semicolons.
UnoCSS and Iconify replace a component library
The only UI framework pre-packed is UnoCSS, described as the instant on-demand atomic CSS engine. There is no component library. uno.config.ts configures it, and @unocss/reset is a runtime dependency. Icons come from Iconify, and the UnoCSS preset-icons package turns any icon set into pure CSS icons used through class names. The package.json devDependencies include @iconify-json/carbon.
So a form or a table is yours to build. If your design system is Tailwind, the community variation vitailse by zynth17 swaps UnoCSS for TailwindCSS. The VS Code extension list adds Iconify IntelliSense for inline icon display, plus Vite, Volar, i18n Ally and ESLint, listed in .vscode/extensions.json.
State, i18n, markdown and head management arrive as separate plugins
Pinia handles state management. Vue I18n with unplugin-vue-i18n supports translations, with message files in the locales directory. Markdown works through unplugin-vue-markdown, which treats markdown as components and components in markdown, with @shikijs/markdown-exit for syntax highlighting. @unhead/vue v2 manipulates the document head reactively, and VueUse supplies a collection of composition APIs.
PWA support comes from vite-plugin-pwa, and vite-ssg-sitemap generates a sitemap. vite-plugin-vue-devtools adds Vue devtools. Every one of these is a dependency you now own: when Vue Router or Pinia ships a breaking change, the template does not upgrade for you. The package.json script up runs taze major -I for interactive major upgrades. The dependency versions themselves are not written in package.json but referenced as catalog:frontend, catalog:dev, catalog:build and catalog:types, so the real version numbers live in pnpm-workspace.yaml. To see what you are running, open that file rather than package.json.
Static generation uses vite-ssg and beasties, not a server renderer
The build script is `vite-ssg build`, which pre-renders routes to static files. Critical CSS is extracted by beasties. There is no server-side rendering mode in this template: the community variation vitesse-ssr-template by frandiox exists for that. If you need per-request rendering, Vitesse is the wrong base.
The Dockerfile shows the production path. It builds in a node:24-alpine stage with these steps:
RUN corepack enable
pnpm install --frozen-lockfile
RUN pnpm buildIt then copies /app/dist into nginx:stable-alpine and serves it on port 80. A netlify.toml supports zero-config deployment to Netlify, and the live demo runs at vitesse.netlify.app.
Vitest, Cypress and a strict Node range gate the workflow
Unit tests run through Vitest with jsdom and @vue/test-utils, and the scripts test and test:unit both call vitest. End-to-end tests use Cypress through test:e2e, which runs cypress open, with GitHub Actions as the CI host. typecheck runs vue-tsc --noEmit, and lint runs eslint.
The dev script is `vite --port 3333 --open`, so the dev server uses port 3333 rather than the Vite default. The engines field in package.json demands node ^22.22.2 || ^24.15.0 || >=26.0.0, and packageManager pins [email protected]. Using an older Node, such as an LTS that predates those versions, falls outside that engines range. The postinstall script runs npx simple-git-hooks, so a git hook is installed on first install.
Opinionated defaults mean removing things you did not choose
The README calls the template strongly opinionated and lists a curated set of community variations because of it. Features such as the PWA plugin, i18n and markdown come already switched on. Anyone who does not need them has to delete the plugin entries and the matching folders, which takes more effort than adding a feature to a minimal scaffold.
The lighter official variation, vitesse-lite, exists for that reason. Community variations include a Chrome extension Manifest V3 starter, a clean architecture variant and an enterprise variant. Contributors are told the project does not accept new README translations. The repository ships English and Simplified Chinese READMEs only. There is also a sizecheck script that runs npx vite-bundle-visualizer, and a preview-https script that serves the dist folder, both useful before you deploy the built output anywhere.
Editorial conclusion
Use Vitesse as a reference or a fast start for a Vue 3 single-page app or static site when you already like its choices: UnoCSS, Pinia, file routing and pnpm. Do not pick it for a long-lived production app if you want maintained defaults, since the README itself recommends Nuxt and expects slower updates. Before cloning, check that your Node version satisfies the engines range in package.json.
Frequently asked questions
What is Vitesse?
Vitesse is an opinionated Vite and Vue 3 starter template with file-based routing, component and API auto importing, Pinia, UnoCSS, i18n, markdown, PWA and static-site generation already configured.
What does Vitesse mean in English?
The README tagline pairs the name with the word speed in italics: Mocking up web app with Vitesse (speed). The template is built around Vite and pnpm for fast startup.
Does Vitesse still exist?
The repository is not archived and its last push to main was 2026-10-06, but there are no releases. The README expects slower updates and recommends Nuxt for more consistent maintenance.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/antfu-collective-vitesse)Star history chart for your README
[](https://hysenlabs.com/projects/antfu-collective-vitesse)Was this useful?