nuqs
banner
nuqs.dev
nuqs
@nuqs.dev
Type-safe search params state manager for React frameworks.
Like useState, but stored in the URL query string.

Made by @francoisbest.com & contributors

🔗 https://nuqs.dev
Pinned
nuqs @nuqs.dev · Sep 6
🔗 Introducing our new domain name: nuqs.dev

2 years ago, I restarted work on the useQueryState hook to support the @nextjs.org app router.

Since then, the project exploded:
⭐ +8k stars
📦 +30M downloads
👥 +50 contributors
🩷 +23 sponsors

Thank you, everyone! 🫶
Reposted by nuqs
I have an idea for my @reactadvanced.gitnation.org talk that would requiring building and shipping a new feature in @nuqs.dev next week (so I can actually rehearse with it).

Conference-driven development is real.
November 15, 2025 at 9:09 PM
Reposted by nuqs
Yesterday I quietly released @nuqs.dev 2.8.0

No big new feature, but a widening of the SemVer range for react-router{-dom} to include v5, as I need it in a client project.

Might be removed in nuqs@3.0.0, we'll see how support goes.

The adapter can be installed with the @shadcn.com CLI:
React Router v5 Adapter | nuqs
Using nuqs in React Router v5 applications.
nuqs.dev
November 18, 2025 at 8:51 AM
Reposted by nuqs
The @nuqs.dev @shadcn.com registry now has an RSS feed 📡

✨ Get notified when we drop a new adapter, parser or utility
🐞 or when we push updates & bug fixes

nuqs.dev/registry

It now contains community adapters, to one-command install nuqs in:

⛩️ Waku
🐘 Inertia
🥇 One.js
📱 Expo Router (coming soon)
November 13, 2025 at 12:13 PM
📦 nuqs@2.7.3 is out! 🚀

- bug fix when passing null to clear a key configured with parseAsArrayOf(...).withDefault([])

- parseAsBoolean is now case-insensitive
→ /?bool=TRUE does what you expect

Try it out: pnpm add nuqs@latest
November 7, 2025 at 9:42 PM
📦 nuqs has passed 1M weekly downloads on @npmjs.bsky.social 🚀

Thanks everyone! 🫶
October 29, 2025 at 11:57 AM
Reposted by nuqs
My talk at @nextjs.org conf is online!

Go watch it, it contains two gems:
- The dangers and limits of URL state (to make you a better engineer)
- A live demo of how @nuqs.dev uses a declarative approach to type-safe and time-safe behaviours, in a composable way.
Type-safe URL state in Next.js with nuqs
YouTube video by Vercel
www.youtube.com
October 27, 2025 at 11:19 PM
Reposted by nuqs
Post-conf weekend project: adding support for the @shadcn.com CLI in @nuqs.dev to install:

- parsers
- adapters
- little snippets that make more sense to vendor into your codebase & tweak as needed

First one is the utility I showed in my talk for type-safe linking (with typedRoutes) in @nextjs.org
October 26, 2025 at 6:02 PM
📦 nuqs@2.7.2 is out! 🚀

It includes a bug fix for debounce with `shallow: false` which sent unnecessary stale URL updates to the server.

Try it out: pnpm add nuqs@latest
October 16, 2025 at 11:46 AM
nuqs has passed 9k stars 🌟

Thank you everyone! 🫶
October 14, 2025 at 3:15 PM
Reposted by nuqs
I have been looking up to the @pmnd.rs collective for a while, the quality of the software they produce is inspiring.

Honoured to see them using @nuqs.dev 🫶
October 10, 2025 at 7:37 AM
📦 nuqs@2.7.1 is out! 🚀

Two rapid-fire PRs by @tkdodo.eu 🔥

- Fixed a bug with MultiParsers & history: push
- Prevent a re-render when doing setState(x => x) (same reference) in useQueryStates

Try it out: pnpm add nuqs@latest
October 6, 2025 at 7:17 PM
📦 nuqs@2.7.0 is out! 🚀

- MultiParsers: `parseAsNativeArrayOf`, and turn key repetition into Record, Map, Set, anything, with custom parsers. Thanks @tkdodo.eu ! 🙌

- Fixed a bug with flickering optimistic state on update

Try it out: pnpm add nuqs@latest
September 30, 2025 at 3:30 PM
📦 nuqs@2.7.0-beta.1 is out! 🚀

✨ MultiParsers allow transforming repeated keys in the URL into more complex data types. This had been a long-requested one, thanks @tkdodo.eu! 🫶

🧪 The testing adapter gets an optional memory to behave more closely to real frameworks.

Try it out: pnpm add nuqs@beta
September 26, 2025 at 9:36 PM
Reposted by nuqs
Relive the brilliance of #ReactParis 2025! 🌟

Catch up on last conf's unforgettable sessions:
➡️ Type Safe URL State Management in #React with nuqs -by- @francoisbest.com
🎞️ www.youtube.com/watch?v=U__R...

😉 See you next March 2026 👉🏽 react.paris
Type Safe URL State Management in React with nuqs - François Best
YouTube video by BeJS
www.youtube.com
September 24, 2025 at 12:05 PM
Reposted by nuqs
@nuqs.dev v3 will likely require @react.dev 19.

We managed to work around not using `useOptimistic` with hacks, but to properly support optimistic local state updates while the URL update is queued, with concurrent rendering & Suspense, we need to do it the right way.
September 23, 2025 at 1:17 PM
Reposted by nuqs
I need to get better at SEO.

A lot of folks can't remember the name `nuqs`, but know what it's about, and can't find it with search terms.

Neither the docs, the GitHub repo, nor the NPM package page rank for some critical keywords.
September 23, 2025 at 7:29 PM
Reposted by nuqs
I sat down with @kapehe.bsky.social to chat about @nuqs.dev, open-source, community, and desserts 🍰

Open Source Stories S1E3

www.youtube.com/watch?v=9PJx...
Open Source Stories: nuqs
YouTube video by Vercel
www.youtube.com
September 22, 2025 at 7:46 PM
Reposted by nuqs
Proud to have contributed this feature to @nuqs.dev ❤️
nuqs.dev nuqs @nuqs.dev · Sep 19
You can change this default globally at the adapter level if it makes more sense in your case:
September 20, 2025 at 7:35 AM
Why do nuqs URL updates occur client-side only by default?

Because you're guaranteed to run @react.dev on the client, but not all frameworks do SSR.

With `shallow: false`, you opt-out of this client-only behaviour, and cross the network boundary for search params you need during SSR.
September 19, 2025 at 9:45 PM
Imagine a local-first, distributed, peer-to-peer, immutable data exchange system.

This is not BitTorrent.

It’s what you get from putting your app state in the URL.
September 16, 2025 at 8:22 PM
Reposted by nuqs
🗣️ Big news: I'll be speaking at @nextjs.org Conf '25, on Oct 22 in SF !

We'll cover a few tricks @nuqs.dev has up its sleeve to scale URL state in Next.js (some I yet need to finish building 😅).

So thankful for the opportunity 🙌
September 15, 2025 at 7:18 PM
Reposted by nuqs
New section in the @nuqs.dev landing page.

A huge thank you to all these wonderful people 🫶
September 10, 2025 at 7:52 PM
🔗 Introducing our new domain name: nuqs.dev

2 years ago, I restarted work on the useQueryState hook to support the @nextjs.org app router.

Since then, the project exploded:
⭐ +8k stars
📦 +30M downloads
👥 +50 contributors
🩷 +23 sponsors

Thank you, everyone! 🫶
September 6, 2025 at 1:42 PM
📦 nuqs@2.6.0 is out! 🚀

- ✨ `processUrlSearchParams` middleware: sort the querystring alphabetically (for SEO & cache) or process it before updating the URL.
- 💎 Zod codecs community parser
- ⚠️ Log a warning when using debounce with shallow: true with a link to docs

Try it out: pnpm add nuqs@latest
September 5, 2025 at 3:06 PM
Reposted by nuqs
Absolutely love Nuqs. I don’t leave home without it!
September 3, 2025 at 8:46 PM