Navi
Declarative, asynchronous routing for React.
Navi is a JavaScript library for declaratively mapping URLs to asynchronous content.
It comes with:
- A set of modern React components and hooks, with Suspense support
- A static HTML generation tool that works with create-react-app without ejecting
- Great TypeScript support
Quick Start
At it's core, Navi is just a router. You can use it with any React app – just add the navi
and react-navi
packages to your project:
npm install --save navi react-navi
If you'd like a more full featured starter, you can get started with Create React/Navi App:
npx create-react-navi-app my-app cd my-app npm start
Or if you want to create a blog, use create-react-blog:
npx create-react-blog react-blog cd react-blog npm start
Getting Started
For a full introduction, see the Getting Started guide on the Navi website.
Who's using Navi?
- Frontend Armory
- Laska - a UI Builder for React Native
- Otovo uses Navi for serving 80+ pages across three different markets (.no, .se and .fr)
- Marek Calus' blog
- Offset Earth
- Using Navi? Submit a Pull Request to add your site here!
Contributing
We are grateful to the community for contributing bugfixes, documentation, translations, and any other improvements.
This repository is monorepo that holds the source for Navi and it's related packages, while the Navi website -- which includes Navi's documentation, is part of the navi-website repository.
Building and Testing Navi
To contribute code to Navi, you'll need to be able to build it and run the tests. To start, make sure you have lerna 3.x installed globally:
npm install -g lerna
Then fork, clone and bootstrap the repository:
lerna bootstrap yarn build yarn test
If you're working on Navi itself, it's often easier to run builds and tests from packages/navi
cd packages/navi yarn test:watch
The examples are set up to use the copy of Navi at packages/navi/dist
, so they can also be useful for quickly testing changes.
License
Navi is MIT licensed.