diff --git a/packages/e2e/cypress/e2e/clearOnDefault.cy.js b/packages/e2e/cypress/e2e/clearOnDefault.cy.js
index 189bfbaef..42097ef23 100644
--- a/packages/e2e/cypress/e2e/clearOnDefault.cy.js
+++ b/packages/e2e/cypress/e2e/clearOnDefault.cy.js
@@ -1,7 +1,9 @@
///
it('Clears the URL when setting the default value when `clearOnDefault` is used', () => {
- cy.visit('/app/clearOnDefault?a=a&b=b')
+ cy.visit(
+ '/app/clearOnDefault?a=a&b=b&array=1,2,3&json-ref={"egg":"spam"}&json-new={"egg":"spam"}'
+ )
cy.contains('#hydration-marker', 'hydrated').should('be.hidden')
cy.get('button').click()
cy.location('search').should('eq', '?a=')
diff --git a/packages/e2e/src/app/app/clearOnDefault/page.tsx b/packages/e2e/src/app/app/clearOnDefault/page.tsx
index 652ed2810..505ec850b 100644
--- a/packages/e2e/src/app/app/clearOnDefault/page.tsx
+++ b/packages/e2e/src/app/app/clearOnDefault/page.tsx
@@ -1,6 +1,11 @@
'use client'
-import { useQueryState } from 'nuqs'
+import {
+ parseAsArrayOf,
+ parseAsInteger,
+ parseAsJson,
+ useQueryState
+} from 'nuqs'
import { Suspense } from 'react'
export default function Page() {
@@ -11,18 +16,37 @@ export default function Page() {
)
}
+const defaultJSON = { foo: 'bar' }
+
function Client() {
const [, setA] = useQueryState('a')
const [, setB] = useQueryState('b', {
defaultValue: '',
clearOnDefault: true
})
+ const [, setArray] = useQueryState(
+ 'array',
+ parseAsArrayOf(parseAsInteger)
+ .withDefault([])
+ .withOptions({ clearOnDefault: true })
+ )
+ const [, setJsonRef] = useQueryState(
+ 'json-ref',
+ parseAsJson().withDefault(defaultJSON).withOptions({ clearOnDefault: true })
+ )
+ const [, setJsonNew] = useQueryState(
+ 'json-new',
+ parseAsJson().withDefault(defaultJSON).withOptions({ clearOnDefault: true })
+ )
return (
<>