@nanostores/router

A tiny (765 bytes) router for Nano Stores state manager
85,222 326
Install
npm install @nanostores/router
Latest Version:2.0.0
License:MIT
Last Updated:Sep 30, 2026
Links: GitHub  ·  npm
Maintainer: ai

Nano Stores Router

A tiny URL router for Nano Stores state manager.

  • Small. 765 bytes (minified and brotlied). Zero dependencies.
  • Good TypeScript support.
  • Framework agnostic. Can be used with React, Preact, Vue, Svelte, Angular, Solid.js, and vanilla JS.

Since Nano Stores promote moving logic to store, the router is a store, not a component in UI framework like React.

// stores/router.ts
import { createRouter } from '@nanostores/router'

export const $router = createRouter({
  home: '/',
  list: '/posts/:category',
  post: '/posts/:category/:post'
})

Store in active mode listens for <a> clicks on document.body and Back button in browser.

// components/layout.tsx
import { useStore } from '@nanostores/react'

import { $router } from '../stores/router.js'

export const Layout = () => {
  const page = useStore($router)

  if (!page) {
    return <Error404 />
  } else if (page.route === 'home') {
    return <HomePage />
  } else if (page.route === 'list') {
    return <ListPage category={page.params.category} filters={page.search} />
  } else if (page.route === 'post') {
    return <PostPage post={page.params.post} />
  }
}

  Nano Stores Router is built by Evil Martians, an American design and engineering consultancy for developer tools, AI, and cybersecurity startups.


Docs

Read full docs here.

Related Packages

@nanostores/media-query

A smart store for Nano Stores state manager to sync with some media query

164,218 22
@nanostores/persistent

A store for Nano Stores state manager to keep data in localStorage

4,223,533 383
@nirtamir2/nanostores-persistent-session-storage

A store for Nano Stores state manager to keep data in sessionStorage

2,744 383
@nanostores/query

Tiny remote data fetching library for Nano Stores

509,294 339
@logux/state

A tiny (152 bytes) state manager for React/Preact/Vue/Svelte with many atomic tr...

35,227 7,630

Version History

Version Released License
2.0.0 MIT
1.1.0 MIT
1.0.0 MIT
0.16.1 MIT
0.16.0 MIT