NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3628 most downloaded on npm
Last release 16 days ago
02 Sep 2026
Release timing varies
gaps range from 1 weeks to 6 months
Most releases are documented
notes for 51 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
207 releases · first in 2015
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
One column per quarter.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
LocationQueryValueRaw as internal (dc02850)router.go() methods doesn't return anything
(like in Vue Router 3) anymore. The existing implementation was wrong as it
would resolve the promise for the following navigation if router.go()
was called with something that wasn't possible e.g. router.go(-20)
right after entering the application would not do anything. Even worse,
the promise returned by that call would resolve after the next
navigation. There is no proper native API to implement this
promise-based api properly, but one can write a version that should work
in most scenarios by setting up multiple hooks right before calling
router.go():export function go(delta) {
return new Promise((resolve, reject) => {
function popStateListener() {
clearTimeout(timeout)
}
window.addEventListener('popstate', popStateListener)
function clearHooks() {
removeAfterEach()
removeOnError()
window.removeEventListener('popstate', popStateListener)
}
// if the popstate event is not called, consider this a failure
const timeout = setTimeout(() => {
clearHooks()
reject(new Error('Failed to use router.go()'))
// It's unclear of what value would always work here
}, 10)
setImmediate
const removeAfterEach = router.afterEach((_to, _from, failure) => {
clearHooks()
resolve(failure)
})
const removeOnError = router.onError(err => {
clearHooks()
reject(err)
})
router.go(delta)
})
}
ScrollBehavior,
so we are renaming our type to avoid any confusions and allow the user
to use both types at the same type (which given what the existing
ScrollBehavior type is designed for, will likely happen).Build related fixes
onBeforeRouteLeave and onBeforeRouteUpdate used to
have access to the component instance through instance.proxy but given
that:
internal (https://github.com/vuejs/vue-next/pull/1849)setup, all variables are accessible on the scope (and
should be accessed that way because the code minimizes better)
It has been removed to prevent wrong usage and lighten Vue RouterFix build cache issues
router.history in
their apps. If you think this property is needed, please open an issue to
discuss the use case. Note it's already accessible as you have to create it:export const history = createWebHistory()
export const router = createRouter({ history, routes: [] })
history.state. It used to be an
object { fullPath: '/the-url' }. And it's now just the fullPath property.scroll: this change follows the RFC at https://github.com/vuejs/rfcs/pull/176:
selector is renamed into el
el also accepts an Element
left and top are passed along el instead of inside an object
passed as offset
scroll: scrollBehavior doesn't accept an object with x and y
coordinates anymore. Instead it accepts an object like
ScrollToOptions
with left and top properties. You can now also pass the
behavior
property to enable smooth scrolling in most browsers.
It is now necessary to escape id selectors like
explained at https://mathiasbynens.be/notes/css-escapes. This was
necessary to allow selectors like #container > child.
/#/, otherwise it
will result in a url starting with #/. This allows users to use the routing
system directly in simple files without needing to configure a server at all:
https://example.com/file.html + base: 'file.html will produce a final
url of https://example.com/file.html#/https://example.com/folder + base: 'folder will produce a final url of
https://example.com/folder#/https://example.com/folder + base: 'folder/ will produce a final url of
https://example.com/folder/#/$route and $router types (a4f80aa)router.afterEach and router.onError are now the global equivalent of
router.push/router.replace as well as navigation through the interface
(history.go()). A navigation only rejects if there was an unexpected error.
A navigation failure will still resolve the promise returned by router.push
and be exposed as the resolved value.href propertycustom prop (874510b)RouteLocation -> RouteLocationRawRouteLocationNormalized -> RouteLocationRouteLocationNormalized is now a location that can be displayed (not a static redirect)RouteLocationNormalizedResolved -> RouteLocationNormalizedLoadedRouteRecord -> RouteRecordRawRouteRecordNormalized -> RouteRecordRouteRecordNormalized is now a record that is not a static redirectnext (d76c6aa)useRoute now retrieves a reactive RouteLocationNormalized instead of a Ref<RouteLocationNormalized>.
This means there is no need to use .value when accessing the route. You still need to wrap it with toRefs if you want to expose parts of the route:
setup () {
return { params: toRefs(useRoute()).params }
}
createHistory is now named createWebHistory.
createHashHistory is now named createWebHashHistory.
Both createHistory and createHashHistory are renamed to better reflect that they must be used in a browser environment while createMemoryHistory doesn't.
Today Vue Router 4 is officially released as stable. After 14 alphas, 13 betas and 6 release candidates, Vue Router v4 is ready to bring the best of r
<p align="center"> <img width="200" alt="Vue logo" src="https://user-images.githubusercontent.com/664177/101339224-6a933880-387e-11eb-9d14-2b639b8604f3.png"> </p>
Today Vue Router 4 is officially released as stable. After 14 alphas, 13 betas and 6 release candidates, Vue Router v4 is ready to bring the best of routing to your Vue 3 applications with improved bundle size, TypeScript integration, new features and consistency improvements for modern apps.
It has taken almost 2 years of work, around 1500 commits, 15 RFCs, and the help of many users and their bug reports and feature requests to get here. Thank you all for your very much appreciated help!
Vue Router is now divided in three modules:
/users/:id and its rankingOne the most wanted features on Vue Router is Dynamic Routing. It makes the router more flexible and powerful and open possibilities for applications that were not possible before! This is possible thanks to an advanced path parsing with automatic ranking, allowing the router to guess what route should be matched based on the URL string representation, allowing user to define routes in any order.
The new navigation system is more consistent and improves the experience of Scroll Behavior to match native browser behavior. It also gives users almost more information about the status of a navigation and allow using that information to improve user experience through global UI elements like progress bars and modals.
Thanks to the new Vue Devtools, Vue Router is able to create more advanced integrations: navigation in the timeline and a complete route directory that helps you debug routes.
Say good bye to next and avoid easy-to-make mistakes inside navigation guards: return any value you were passing to next. The previous version is still supported to ease migration!
More information on the updated documentation.
Encoding has been adapted to make it consistent across different browsers and route location properties (params, query and hash). You don't need to encode these properties when passing them to router.push() and they will always appear decoded in the route locations (e.g. $route and useRoute()).
Vue Router 4 focus on improving the existing Router while keeping a very similar API, migration should be short and almost limited to a few renames if you were using the basics of Vue Router. You can check the full migration guide on the documentation
Vue Router has been effectively stable for the past couple of months and makes it possible to now focus on:
If you want to give Vue Router 4 a quick try, you can check this CodeSandbox, this Vite template with Tailwind CSS, or use the CLI to get started.
To Learn more about Vue Router 4, check out our new documentation. If you are an existing Vue 2.x user, go directly to the Migration Guide.
If your company uses Vue Router, please consider supporting its development by supporting me 🙏 . It will mean a lot and really help me to keep working on improving the Vue Ecosystem.
If you were already using the release candidate version of vue router, you can find the list of improvements on the CHANGELOG.md.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Please refer to CHANGELOG.md for details.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →