React Router is dead. Long live rrtr.
I apologize in advance to everyone for whom this makes more work. This will be better in the long run, I promise.
I am now maintaining a fork of the old React Router as rrtr: https://github.com/taion/rrtr .
The problem is that React Router as a project has fallen into a very slow release cycle.
This is a problem. React Router isn’t feature-complete. React Router doesn’t support scroll position management, doesn’t support any sort of sophisticated path matching by patterns or with dynamic data, and has a deeply flawed API for async routes and code splitting.
I’ve written quite a lot of code for React Router.
I’ve more code that integrates with React Router, and even more code that depends on React Router – the code I ship to production, for my day job.
As a user of React, there are a few things that I need that I’m not getting right now from React Router – and these will be priorities for me with rrtr:
- A stable API that evolves incrementally, at a measured pace, instead of one that deprecates half its features every few months and forces me to rewrite my code
- Support at the library level for the features I need, when it makes sense for those features to live in the library
- Well thought-out APIs that make it easy to write good code and difficult to write bad code
- A rich system of integrations that lets me write the code I want to write, and provides support for the tools I know I need
What’s coming next?
- Faster, more flexible route matching, with support for defining custom patterns for route parameters, and dynamically skipping routes that shouldn’t match
- An updated code splitting API aimed at minimizing server round-trips and overfetching of routes and components unrelated to the loaded routes
- Dramatically increased performance for <Link> components in evaluating active state
- First-class support for extended functionality: named routes, scroll position management, &c. &c.
As part of this, I’m also cutting over all of the former React Router integrations I currently maintain: react-router-relay , React-Router-Bootstrap , and use-named-routes . I’ll also be rewriting scroll-behavior in the near future to fix some lingering issues there, and will integrate it to rrtr instead of React Router as well.
I’m sorry for making work for all of you. This will be better in the long run. This is a library that I use extensively, and I need it to not suck.
And if you’d like to help maintain me maintain rrtr, please drop me a line!