- Drop-in support instead of 
ref() - Supports all common types (string, number, boolean, Arrays, Objects)
 - Coherently typed for good DX
 
Install the module to your Nuxt application with one command:
npx nuxi module add nuxt-queryrefThat's it! You can now use queryRef in your Nuxt app ✨
Use queryRef() just like you would use a normal ref()
const variable = queryRef(<key>, <value>)It takes two Parameters:
<key>: The key for the URL Query Param<value>: The actual value, just like you would use withref()
Following types are supported for <value>:
stringnumberbooleanObjectArray (of each of the above)
const name = queryRef('name', 'Lukas')// With generic type (optional, default is based on <value>)
const name = queryRef<string>('name', 'Lukas')// With Object and custom type
const name = queryRef<{ firstName: string }>('name', { firstName: 'Lukas' })There are multiple scenarios where URL-persisting makes sense:
- In general: making URLs shareable or look the same on reload
 - Persisting filters or sorting for sharing
 - Persisting selected tabs or popups
 - Persisting selected image (-index) for e.g. a slider
 
Some insights:
queryRef()uses a regularref()under the hood, but adds the according loader and watcher to sync with the URL - therefore you can use your local variable exactly like a regular ref (e.g. setting likevariable.value = 'foobar')- The value is loaded on page load via useRoute(), which ensures that the value will already be loaded during SSR and no flickering will occur
 - If the provided value is an array, the type will be inferred by the first item of the value. Therefore mixed-type arrays are currently not supported (or will lead to problems)
 
Local development
# Install dependencies
npm install
# Generate type stubs
npm run dev:prepare
# Develop with the playground
npm run dev
# Build the playground
npm run dev:build
# Run ESLint
npm run lint
# Run Vitest
npm run test
npm run test:watch
# Release new version
npm run release