Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

@zoontek/chicane logo

@zoontek/chicane

mit licence npm version bundlephobia

A simple and safe router for React and TypeScript.

Design principles

  • Typed routes: improving the DX, and making sure all your params are here!
  • Component-friendly: the router nicely fits in your React app.
  • Easy-to-use: naming routes instead of moving around unsafe URLs.
  • Performant: avoids any unnecessary render.

Installation

$ yarn add @zoontek/chicane
# --- or ---
$ npm install --save @zoontek/chicane

Links

Quickstart

import { createRouter } from "@zoontek/chicane";
import { match } from "ts-pattern";
const Router = createRouter({
 Home: "/",
 Users: "/users",
 User: "/users/:userId",
});
const App = () => {
 const route = Router.useRoute(["Home", "Users", "User"]);
 // route object is a discriminated union
 return match(route)
 .with({ name: "Home" }, () => <h1>Home</h1>)
 .with({ name: "Users" }, () => <h1>Users</h1>)
 .with({ name: "User" }, ({ params }) => <h1>User {params.userId}</h1>) // params are strongly typed
 .otherwise(() => <h1>404</h1>);
};

Run the example app

$ git clone git@github.com:zoontek/chicane.git
$ cd chicane/example
$ yarn install && yarn dev
# --- or ---
$ npm install && npm run dev

πŸ™Œ Acknowledgements

About

A simple and safe router for React and TypeScript.

Topics

Resources

Code of conduct

Stars

465 stars

Watchers

5 watching

Forks

Releases

Used by

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /