Vue Router

The official client-side router for Vue.js, powering nested routes, navigation guards, and single-page app navigation.

Framework
npm
v5.4.0
4,700 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
95 /100 Excellent
Development Activity 96
Maintenance 100
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
88 /100 Excellent
Architecture 90
Code Quality 88
Innovation 87
Learning Curve 85

Vue Router is the official routing library for Vue.js applications, maintained under the vuejs GitHub organization by Eduardo San Martin Morote. It maps URL paths to component trees, supporting nested routes, dynamic path segments, and named views, and it integrates directly with the Vue reactivity system via composables like useRouter and useRoute.

Beyond basic path matching, Vue Router provides a full navigation lifecycle: global, per-route, and in-component navigation guards; async route components with data-fetching hooks; scroll behavior control; and history modes (HTML5, hash, and memory for SSR/testing). Version 5 adds first-class Vite plugin integration, a file-based routing unplugin, and a RouterView/RouterLink-driven typed-routes system that generates route name and param types automatically.

What You Get

  • A createRouter() factory supporting HTML5 history, hash, and in-memory history modes
  • Nested and dynamic route matching with named routes, params, and query/hash handling
  • Navigation guards at the global, per-route, and in-component level, including async guards
  • RouterView and RouterLink components plus useRouter/useRoute composables for the Composition API
  • A Vite plugin and file-based routing unplugin that generates typed routes from your file structure
  • Scroll behavior customization and lazy-loaded route components for code-splitting

Common Use Cases

  • Building multi-page navigation for a Vue single-page application
  • Gating routes behind authentication with navigation guards
  • Code-splitting an app by lazily loading route-level components
  • Generating typed, autocompletable route names and params via file-based routing
  • Restoring or customizing scroll position across navigations

Under The Hood

Architecture - The library is organized around a small set of composable modules under packages/router/src: matcher/ builds and ranks a path-matching tree from route records (pathTokenizer.ts, pathParserRanker.ts), history/ abstracts over HTML5, hash, and memory navigation backends behind a common interface (history/common.ts), and router.ts ties these together in createRouter(), orchestrating resolution, guard execution (navigationGuards.ts), and Vue app integration via injectionSymbols.ts. RouterView.ts and RouterLink.ts are the rendering surface, consuming reactive route state exposed through shallowRef/shallowReactive so navigation updates propagate through Vue’s reactivity system without deep-cloning route objects on every change.

Tech Stack - Written in TypeScript and built with tsdown (a Rollup-based bundler), targeting ESM with CJS interop (index.cjs, dist/vue-router.js) and a UMD/global bundle for CDN use. Peer dependencies are vue ^3.5.34 || ^4.0.0 and, for the newer Vite/file-based routing features, vite ^7.3.0 || ^8.0.0 and @vue/compiler-sfc, all marked optional so consumers who only need the core router avoid pulling in Vite. The unplugin layer for file-based routing depends on unplugin, tinyglobby, and mlly for cross-bundler file scanning and module resolution.

Code Quality - The __tests__/ directory contains 47 test files covering the matcher, history backends, and navigation guards in isolation, run via Vitest (test:unit) alongside a separate test:types pass using tsgo/vue-tsc for type-level regression testing, plus Playwright-driven e2e/ scenarios (scroll behavior, keep-alive, suspense, multi-app). Source files are narrowly scoped by responsibility (one concern per file: encoding.ts, query.ts, scrollBehavior.ts), and public types are documented with TSDoc comments consumed by the published API docs.

API Design - The public surface favors composables (useRouter, useRoute) over injected globals, mirroring Vue 3’s Composition API conventions, and getting started requires only passing a routes array to createRouter() and calling app.use(router) — no boilerplate provider wiring beyond that. Multiple entry points (vue-router, vue-router/auto, vue-router/vite, vue-router/unplugin) let consumers opt into typed/file-based routing incrementally rather than committing to it upfront, and TypeScript augmentation via TypesConfig lets advanced users swap the public Router type without forking the library.

Used by 50 apps in this directory

Go
85%
Apache 2.0

frp

Networking

110,102

A fast reverse proxy that exposes local servers behind NAT or firewalls to the public internet with multi-protocol support.

View details
95
Repo Health
82
Technical
71
Dependency
Built with
Go 85%
Vue 11%
Updated 1 weeks ago
Go
91%
Apache 2.0

Gatus

Devops · Monitoring

12,386

Developer-oriented health dashboard with active endpoint probing, multi-protocol checks, and 40+ alerting integrations so you know about failures before your users do.

View details
84
Repo Health
84
Technical
75
Dependency
Built with
Go 91%
Updated 1 weeks ago
Ruby
66%
Other

GitLab

Developer Tools · Devops

24,537

The complete DevOps platform that unifies Git hosting, CI/CD, issue tracking, and security scanning into a single self-hostable application.

View details
87
Repo Health
86
Technical
65
Dependency
Built with
Ruby 66%
JavaScript 20%
Updated 1 weeks ago
Go
69%
Other

Hanko

Authentication · Security

9,045

Open source, self-hostable authentication platform with passkeys, SAML SSO, and OAuth — the privacy-first alternative to Auth0 and Clerk.

View details
90
Repo Health
81
Technical
66
Dependency
Built with
Go 69%
TypeScript 27%
Updated 1 weeks ago
Rust
51%
Other

hoodik

File Storage · Security

1,539

Self-hosted, end-to-end encrypted cloud storage with browser-based encryption and S3-compatible storage support

View details
77
Repo Health
71
Technical
63
Dependency
Built with
Rust 51%
TypeScript 34%
Vue 14%
Updated 1 weeks ago
Rust
37%
Other

Hook0

Devops

1,504

Open-source Webhooks-as-a-Service: deliver events to your users with auto-retry, signed payloads, and a real-time subscriber dashboard — all without building the infrastructure yourself.

View details
84
Repo Health
82
Technical
69
Dependency
Built with
Rust 37%
TypeScript 12%
Updated 1 weeks ago
TypeScript
68%
MIT

Hoppscotch

Developer Tools

80,676

A lightweight, offline-capable API development ecosystem for testing HTTP, GraphQL, WebSocket, MQTT, and SSE endpoints across web, desktop, and CLI.

View details
91
Repo Health
83
Technical
62
Dependency
Built with
TypeScript 68%
Vue 24%
Updated 1 weeks ago
Python
74%
GPL 3.0

Frappe HR

Human Resources

8,954

Complete open-source HRMS for employee lifecycle, attendance, payroll, and performance — built on Frappe Framework with a mobile PWA.

View details
93
Repo Health
70
Technical
78
Dependency
Built with
Python 74%
JavaScript 15%
Updated 1 weeks ago
Vue
50%
GPL 3.0

IT-Tools

Developer Tools

40,954

A unified collection of 88 web-based developer utilities — from JSON formatting to subnet calculation — all self-hostable, keyboard-searchable, and offline-ready.

View details
60
Repo Health
74
Technical
63
Dependency
Built with
Vue 50%
TypeScript 48%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers