router5/router5
Flexible and powerful universal routing solution
{ "createdAt": "2015-06-29T12:28:12Z", "defaultBranch": "master", "description": "Flexible and powerful universal routing solution", "fullName": "router5/router5", "homepage": "https://router5.js.org", "language": "TypeScript", "name": "router5", "pushedAt": "2023-01-07T05:57:10Z", "stargazersCount": 1711, "topics": [ "framework-agnostic", "functional", "javascript", "react", "reactive-programming", "redux", "router", "routing", "universal" ], "updatedAt": "2025-10-24T15:14:25Z", "url": "https://github.com/router5/router5"}Router5
Section titled “Router5”Official website: router5.js.org
router5 is a framework and view library agnostic router.
- view / state separation: router5 processes routing instructions and outputs state updates.
- universal: works client-side and server-side
- simple: define your routes, start to listen to route changes
- flexible: you have control over transitions and what happens on transitions
import createRouter from 'router5'import browserPlugin from 'router5-plugin-browser'
const routes = [ { name: 'home', path: '/' }, { name: 'profile', path: '/profile' }]
const router = createRouter(routes)
router.usePlugin(browserPlugin())
router.start()With React (hooks)
import React from 'react'import ReactDOM from 'react-dom'import { RouterProvider, useRoute } from 'react-router5'
function App() { const { route } = useRoute()
if (!route) { return null }
if (route.name === 'home') { return <h1>Home</h1> }
if (route.name === 'profile') { return <h1>Profile</h1> }}
ReactDOM.render( <RouterProvider router={router}> <App /> </RouterProvider>, document.getElementById('root'))With observables
Your router instance is compatible with most observable libraries.
import { from } from 'rxjs/observable/from'
from(router).map(({ route }) => { /* happy routing */})Examples
Section titled “Examples”- With React: [
code]!(./examples/react) |live
- Introduction
- Guides
- Integration
- Advanced
- API Reference