Features

Type-safe

End-to-end type safety between Server and Client components.

Universal

Supports Next.js (app & pages routers), React SPA, Remix, React Router, TanStack Router, and more.

Simple

A familiar React.useState-like API, that syncs with the URL.

Batteries included

Built-in parsers & serializers for common state types.

History controls

Replace or append to navigation history and use the Back button to navigate state updates.

Related queries

useQueryStates hook to manage multiple keys at once.

Client-first

Shallow updates by default, opt-in to notify the server to re-render RSCs (with throttle control).

Server cache

Type-safe search params access in nested React Server Components. No prop drilling needed.

Transition

Support for useTransition to get loading states on server updates.

Customizable

Make your own parser and serializer.

Tiny

Only 6 kB gzipped.

Tested & testable

Tested against every Next.js release. Use the provided test adapter to test your components in isolation.

Sponsors

Contributors

  • franky47
  • mezotv
  • andreisocaciu
  • TkDodo
  • Multiply
  • neefrehman
  • tordans
  • Amirmohammad-Bashiri
  • chbg
  • I-3B
  • MRobertEvers
  • niklasbec
  • prasannamestha
  • rmarscher
  • MartinCura
  • 87xie
  • AfeefRazick
  • Agastya18
  • ahmedrowaihi
  • anthonyshew
  • dopry
  • denis-sokolov
  • dmytro-palaniichuk
  • ethanniser
  • awosky
  • fuma-nama
  • guisehn
  • hugotiger
  • iuriizaporozhets
  • janglad
  • cenobitedk
  • Morabotti
  • CogitoBurrito
  • joshuaobrien
  • Joehoel
  • kapishdima
  • destocot
  • msabramo
  • mateogianolio
  • blyme
  • miinhho
  • HunainSiddiqui
  • bforbilly24
  • ntatoud
  • psdewar
  • pnodet
  • phelma
  • remcohaszing
  • rikbrown
  • aryasaatvik
  • sahilkapase
  • sebastianvitterso
  • timheerwagen
  • tylersayshi
  • weisisheng
  • rasvanjaya21
  • maslianok
  • mehm8128
  • mtlaso
  • gsaandy
  • stefan-schubert-sbb
  • teukuamru

Used by

openpanel.dev

Significant-Gravitas/AutoGPTlanggenius/difyshadcn-ui/uisupabase/supabaselobehub/lobehubgetsentry/sentrycalcom/cal.comchatchat-space/Langchain-ChatchatDavidHDev/react-bitsGitbookIO/gitbookheroui-inc/herouipatchy631/ai-engineering-hubdiscordjs/discord.jscommunity-scripts/ProxmoxVEkarakeep-app/karakeepmastra-ai/mastraCapSoftware/Capmediar-ai/screenpipesupermemoryai/supermemorylearn-anything/learn-anythingudecode/platemidday-ai/middayzaidmukaddam/scirarybbit-io/rybbittensorzero/tensorzeroMail-0/Zeroinstantdb/instantbaptisteArno/typebot.ioelie222/inbox-zerojnsahaj/tweakcnhyperdxio/hyperdxpolarsource/polarrisingwavelabs/risingwaveassistant-ui/assistant-uialibaba/spring-ai-alibabaopenstatusHQ/openstatusmfts/papermarkBoundaryML/bamlBasedHardware/omijeffvli/feishinNangoHQ/nangoethereum-optimism/optimismlangchain-ai/chat-langchainsadmann7/tablecnKiranism/next-shadcn-dashboard-starterpqoqubbw/iconsUniswap/interfaceopen-edge-platform/anomalibpiotrkulpinski/openalternativeunkeyed/unkeyOpenpanel-dev/openpanelvercel/examplesAmanVarshney01/create-better-t-stackuseplunk/plunkliam-hq/liamliveblocks/liveblocksredpanda-data/consolepontusab/directoriesupstash/jstackwevm/viemimskyleen/animate-uiDhravya/supermemorypmndrs/uikitIgnisDa/ryotbestofjs/bestofjsdiced/ziplinepancakeswap/pancake-frontendnizzyabi/Mail0keenthemes/reuiuseautumn/autumnmaximhq/bifrostYFGaia/dify-pluslanguine-ai/languinenkzw-tech/athena-crisisperses/persesun/inboxAnswerOverflow/AnswerOverflowBearStudio/start-ui-webagno-agi/agent-uiTheOrcDev/8bitcn-uievroon/bracketanalogdotnow/Analogreliverse/relivatorblefnk/relivator-nextjs-templatencdai/chanhdai.comtrycompai/compmehdibha/dotUImrmps/SMRYFranciscoMoretti/chatjscmdcolin/awesome-genome-visualizationBennyKok/comfyui-deployinkeep/agentsdatabuddy-analytics/DatabuddyMultiboxLabs/flow-browserlatticexyz/muddocker/compose-for-agentsdaangn/seed-designnelsonlaidev/nelsonlai.devantiwork/flexilejoschan21/contentport

I started building my own hook helpers for handling URL states and had to deal with some performance drawbacks.

Eventually stumbled on this little beauty and it has everything I wanted and more.

It’s a database ORM for your URL
We use nuqs pretty much everywhere 🖤
nuqs is fkn dope
Darathor17
Darathor17
Darathor17
thx a lot for this awesome library! I was syncing with URL like nextjs recommends .. performance are awful and I was about to move back to useState.
nuqs has to be one of the best libraries out there. lifting state to the url is so easy now and far better for ux.

Just used the nuqs library for the first time today… and wow - syncing URL query params in Next.js has never felt this elegant.

Parsing, defaults, clearOnDefault — it's pretty wild
Where has this been all my life?

Sometimes, there is no need to complicate managing state. nuqs is really powerful.
nuqs simplifies your URL logic like magic. Seriously.

It made me realize URL should be part of the design convo not just a place to dump state.

Since I started using nuqs more heavily in production, the way I see and treat URL completely changed.

The goat library
best library ever
i love nuqs
nuqs is one of my favorite pieces of software recently. don't mean to glaze but man, it's a type-safe, way better version of react state
Just did first custom parser today, pretty simple .. great API design 👌

Keep it up guys! You're doing a great job!

I'm using nuqs on real projects in production already, it's amazing how easy it is to control URL params.

nuqs is the perfect solution to the epidemically annoying problem of query param state management

I wish I had this 10 years ago

goated library
i am so happy every time i get to use nuqs!
also, nuqs is amazing

one of the most useful pieces of library ever made

thx for making our life easier as devs and ux way better for our users

Really glad to finally met Francois from nuqs! I love using it!
I integrated nuqs into an internal project, and it helped simplify filter-related query logic and reduce development time.
Big fan of nuqs!
meeting the guy behind nuqs was insane. it's one of those tools literally every web dev should know about
nuqs is so goated

thank you for your hard work 🫶

nuqs is awesome

Currently Using nuqs to add some pagination and searching feature into my nextjs app and i am loving it
We started using nuqs and achieved world peace internally.

Big thanks to nuqs for making URL state management actually enjoyable! 🙌


  • useState but synced with the URL? ✅
  • Type-safe? ✅
  • Works everywhere (Next.js, Remix, React Router)? ✅
  • Only 6kb? ✅

Happy to support such a well-crafted library 😇

I LOVE NUQS I LOVE PARAMS THAT JUST WORK AHAHA WOOHOOO❤️❤️❤️❤️
this is a huge time saver 😍 nuqs is literally the first thing i add to a project after some basic ui like tabs & toggles