Vue Router, the official routing library for Vue.js, has released version 5.0, a transition release that merges the popular unplugin-vue-router plugin directly into the core package. The release, which maintainer Eduardo San Martin Morote (posva) has described as intentionally “boring”, ships with no breaking changes for existing Vue Router 4 users.
The headline change in Vue Router 5 is the absorption of unplugin-vue-router, a build-time plugin that provided file-based routing with full TypeScript support. Previously maintained as a separate package, this functionality is now available directly from vue-router imports, eliminating the need for an additional dependency. For developers already using unplugin-vue-router, migration is primarily a matter of updating import paths. For those not using it, upgrading is a single command:
pnpm update vue-router@5
Alongside the file-based routing integration, Vue Router 5 introduces several new features as experimental additions. Data loaders, now importable from vue-router/experimental, provide a standardised way to tie data fetching directly to route definitions. This approach ensures components only render once their required data is available, reducing the need for manual loading state management.
The release also adds Volar plugin support for improved editor tooling, a route JSON schema for validation, and runtime errors for missing parameter parsers to catch configuration issues earlier. Under the hood, the devtools API has been upgraded to v8, though this means the IIFE build no longer bundles @vue/devtools-api, which is the sole exception to the no-breaking-changes commitment.
The community response has been largely positive, with the GitHub release receiving over 50 reactions. Posva announced on X that the beta “shouldn’t break anything, only enable you to replace unplugin-vue-router with new imports from vue-router directly,” a sentiment echoed by developers welcoming the simplified dependency chain. A follow-up v5.0.3 release has already landed with further improvements to file-based routing, including support for _parent.vue as a cleaner pattern for nested routes.
On X, a user asked why it is a major version, likely in reference to it having no breaking changes:
Interesting, why not minor bump?
The author responded:
It’s really about merging two repositories
The approach of embedding file-based routing into the core router draws comparisons with similar patterns in the React ecosystem. TanStack Router offers type-safe, file-based routing with built-in data loading for React applications. Both solutions share the philosophy that data fetching should be declaratively tied to routes rather than handled imperatively within components, though Vue Router’s data loaders remain experimental while TanStack Router’s are a core feature.
Importantly, Vue Router 5 also serves as a stepping stone towards version 6, which will be ESM-only and remove deprecated APIs. The migration guide recommends developers use the v5 transition period to prepare for those upcoming changes. For projects migrating from unplugin-vue-router, the guide provides a detailed checklist covering plugin imports, data loader paths, Volar configuration, and TypeScript setup.
Vue Router is an open-source project maintained by Eduardo San Martin Morote as part of the Vue.js ecosystem. It has over 5 million weekly downloads and it provides expressive route syntax, fine-grained navigation control, and component-based configuration for building single-page applications with Vue.js.
