nuqs@2.0.0 is available, install it now:
Hello, React! 👋 ⚛️
nuqs started as a Next.js-only hook, and v2 brings compatibility for other React frameworks.
- Next.js 14 & 15 (app & pages routers)
- React SPA
- Remix
- React Router
No code change is necessary in components that use nuqs hooks, making them universal across all supported frameworks.
The only new requirement is to wrap your React tree with an Adapter for your framework
Testing
One of the major pain points with nuqs v1 was testing components that used its hooks.
Nuqs V2 comes with a built-in testing adapter that mocks URL behaviours, allowing you to test your components in isolation, outside of any framework runtime.
You can use it with any unit testing framework that renders React components (we recommend Vitest & Testing Library).
The adapter conforms to the setup / act / assert testing strategy, allowing you to set the initial URL, then letting your test framework perform actions on your component, and asserting on how the URL was changed as a result.
Breaking changes & migration
The biggest breaking change is the introduction of adapters. Another one is related to deprecated APIs.
The next-usequerystate
package that started this journey is no longer updated.
All updates are now published under the nuqs
package name.
Read the complete migration guide to update your application.
What’s next?
We have a lot of ideas for the future of nuqs, including:
- More adapters for other React frameworks
- Community-contributed parsers
Thanks
A huge thank you to sponsors, contributors and people who raised issues and discussions on GitHub and X/Twitter, you are the growing community that drives this project forward, and I couldn’t be happier with the response.
Sponsors
- Pontus Abrahamsson, founder of Midday.ai
- Carl Lindesvard, founder of OpenPanel
- Robin Wieruch, author of The Road to Next
- Yoann Fleury
- Sunghyun Cho
- Jalol
Contributors
Huge thanks to @andreisocaciu, @tordans, @prasannamestha, @Talent30, @neefrehman, @chbg, @dopry, @weisisheng, @hugotiger, @iuriizaporozhets, @rikbrown, @mateogianolio, @timheerwagen, @psdmsft, and @psdewar for helping!
Written by
François Best
At
Tue Oct 22 2024