npm / nuqs
nuqs
What changed in nuqs 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
5 breaking5 new APIs and options1 performance7 behavior and defaults35 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initnuqs 253 changes
Breaking changes 5
parseAsIsoDate and IsoDateTime reject impossible calendar dates.
Strict loaders reject invalid empty queries.
Invalid timestamps are rejected.
Duplicate library copies now share internal state.
Debounced state updates no longer flush.
New APIs and options 5
The React adapter can seed SSR search params via serverSearch.
Adds history to adapters’ defaultOptions.
Adds support for React Router v8.
Export the CreateLoaderOptions type so developers can use it in their code.
Adds support for React Router v5.
Performance 1
The useQueryStates bundle size is trimmed.
Behavior and default changes 7
The debounce callback is passed at push time.
Query keys on the Object prototype are supported.
Server runtimes that do not provide process are supported.
Updates location.search synchronously.
Server-side debug detection now uses process.env.DEBUG.
Passing undefined means leave the value as-is in useQueryStates.
Makes boolean parsing case insensitive.
Fixes and other changes 35
Flushed queue values are kept until the adapter shows them.
Pending query state stays in its transition lane.
Render once on mount when the URL contains a value.
Recover state after a navigation render is discarded.
The testing adapter's URL update queue is reset once per mount.
React adapter queues are reset on popstate.
Fragment-only history updates preserve the query.
Pending URL updates are canceled on history navigation.
Fragments are ignored in query-only URLs.
Comma-separated values are distinguished from repeated query keys.
Explicit empty native arrays are preserved.
The queue recovers after URL middleware errors.
Reactivity now works for startTransition callbacks.
Negative hexadecimal values round-trip correctly.
Credentials are preserved in URL serializer bases.
Options and defaults are refreshed correctly.
Preserves query state across concurrent rebases.
Recovers state after a render is discarded.
Supports multi-value search params in createSearchParamsCache.
Preserves the hash fragment in createSerializer bases.
Fixes unwatched keys leaking through filterSearchParams.
Applies call > parser > global precedence for limitUrlUpdates.
Transitions remain pending while React Router loaders run.
Fixes stale values under Activity.
Fixes incorrect transient state when updating in useEffect.
Fixes stale URL values when revisiting a page under Next.js cacheComponents.
Fixes stale search parameters leaking across React Router navigation.
Fixes cross-page transitions in TanStack Router.
Prevents infinite re-renders with TSR viewport preloading.
Resets the queue after updates in the Next.js app router.
React Router adapters now wait for navigation before syncing.
The directive was removed from .d.ts definition files.
Forwards processUrlSearchParams through the debounce queue.
Pass the full pathname and search in TSR to avoid trailing slashes.
Fixes a TypeError in the serializer when an array has a default value.