finds.dev← search

// the find

vuejs/vue-router

★ 18,887 · JavaScript · MIT · updated Apr 2026

🚦 The official router for Vue 2

The official router for Vue 2, now end-of-life alongside Vue 2 itself. If you're maintaining a Vue 2 app you haven't migrated yet, this is still what you reach for — it's battle-tested and the docs are genuinely good. For anything new, use vuejs/router (Vue Router 4) instead.

Navigation guards are well-designed — beforeEach, beforeResolve, and afterEach give you clean interception points without fighting the framework. Lazy-loading via dynamic imports works out of the box with webpack and Vite code-splitting. The scroll behavior hook is a rare feature that actually handles the restore-on-back case properly. Docs are thorough and translated into six languages, which is more than most projects bother with.

Both Vue 2 and this router are officially end-of-life — security patches are not guaranteed and the maintainers have said as much in the README. The composition API story is bolted on via a separate composables shim rather than being native, so $route and $router as instance properties is still the idiomatic path, which ages poorly. No typed routes — you get string-based route names with no compile-time checking, a problem Vue Router 4 later addressed with typed router plugins. The Flow type annotations (not TypeScript) are a relic that makes contributing or reading the source awkward in a world that has standardized on TS.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →