Features

Type-safe

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

Universal

Supports both the app router and pages router.

Simple

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

Batteries included

Built-in parsers 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.

Transition

Support for useTransition to get loading states on server updates.

Customizable

Make your own parser and serializer.

Tiny

Only 4.09 kB gzipped.

Tested

Tested against every Next.js release.

Sponsors

Used by

supabase/supabaselobehub/lobe-chatcalcom/cal.comchatchat-space/Langchain-ChatchatGitbookIO/gitbooklearn-anything/learn-anythingudecode/platebaptisteArno/typebot.iosupermemoryai/supermemoryhyperdxio/hyperdxrisingwavelabs/risingwaveopenstatusHQ/openstatusmidday-ai/middaymfts/papermarkcommunity-scripts/ProxmoxVEunkeyed/unkeyBasedHardware/omiDhravya/supermemoryOpenpanel-dev/openpanelsadmann7/shadcn-tableelie222/inbox-zeroKiranism/next-shadcn-dashboard-starterpancakeswap/pancake-frontendpiotrkulpinski/openalternativePeerDB-io/peerdbpqoqubbw/iconsinngest/inngestun/inboxBearStudio/start-ui-weblunary-ai/lunarysaleor/storefrontBennyKok/comfyui-deployblefnk/relivator-nextjs-templateAnswerOverflow/AnswerOverflowlatticexyz/mudbenjamintd/chronotrainstszhong0411/honghong.mel2beat/l2beatBlazity/enterprise-commerceAIDotNet/fast-wikifreesewing/freesewingisland-is/island.isgetsentry/sentry-docsplotwist-app/plotwistmastra-ai/mastraline/abc-user-feedbackcfahlgren1/qwen-2.5-code-interpretercraftgen/craftgenosmosis-labs/osmosis-frontendfranky47/francoisbest.comLightDotSo/LightDotSoyanggggjie/rising-repotinloof/medusa-dtc-starter-munchiesreductoai/remembrallmichaelkremenetsky/Refeedrocicorp/repliearpyth-network/pyth-crosschaintryabby/abbymrmartineau/Ottermazipan/tanyaaja.incommonalityco/commonalitysmartive/smartive.chswc-project/websitechristianalares/seventy-sevenswiss-knife-xyz/swiss-knifeTheOrcDev/orcish-fullstack-adminzakiego/baku-hantamzeus-12/uxiegoat-community/goatSouthclaws/storydenleft-curve/left-curvealfonsusac/service-title-logochokiproai/ChatGPT-Pluginsanand346/findissuesdepapp/IndoGitHubersgitcoinco/easy-retro-pgfLevofron/NotionLingomichaelbrusegard/WebGL-Fluid-EnhancedBibliothecaDAO/eternumzachpmanson/minecraftlejsartisan/frontend-challengeshsnards/qifsoftflow24/data-riverniikeec/virtual-gridbgwastu/moonlithocgin/yourself-emailsujjeee/artoonspillowfication/ffxivdingyi/ding.one0xbe1/miniscantheopensource-company/playrbasemicro-course/corehirosystems/ordinals-explorersoni-canra-wiguna/lazorahundehausen/monero-suitePhantomKnight287/framegroundwebb-tools/webb-dapptangle-network/dappnikitavoloboev/tryFTCHD/frametrain
N8
N8
@nathanbrachotte

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.

Kingsley O.
Kingsley O.
@Kingsley_codes
The DX improvement using nuqs for me has been amazing.
We use nuqs pretty much everywhere 🖤
It’s a database ORM for your URL
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.
KafKa
KafKa
@KafKa303
This is a great idea, way better than calling useSearchParam and cook my own stuff! nuqs is such a important last piece for app router! An extremely underrated lib!