{"_id":"@arthur-lobo/use-zod-search-params","_rev":"8-cb29cea923783ae872e23bef37d7ae41","name":"@arthur-lobo/use-zod-search-params","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@arthur-lobo/use-zod-search-params","version":"1.0.0","keywords":["zod","react","search params","query"],"author":{"name":"Arthur Lobo","email":"64273139+ArthurLobopro@users.noreply.github.com"},"license":"MIT","_id":"@arthur-lobo/use-zod-search-params@1.0.0","maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"dist":{"shasum":"79778975e192b1b20a118cf9884a9b5f427c8315","tarball":"https://registry.npmjs.org/@arthur-lobo/use-zod-search-params/-/use-zod-search-params-1.0.0.tgz","fileCount":6,"integrity":"sha512-ecQBz5Cxxzc2lFpRtx+0Rw4tmflR7jsmEwAcBFuJMxjgLgIwlL2sq8bRlyFV+R83lC+fosf0tjciYMbNanbkFw==","signatures":[{"sig":"MEUCIQDJ2/qmFpRiRjWD2XB4udtP+vRrH1iBBz1awd7bwbDgkAIgfqNCi6eqQQVax4uVDIPb950Fk+eLdkquTiTRsNSbIG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6926},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"d2b556aee0457ecedc0d63922472b6ff9b07b6ce","scripts":{"lint":"biome check","build":"tsc --emitDeclarationOnly && node build.js","prepack":"tsc","lint:fix":"biome check --write"},"_npmUser":{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"},"deprecated":"This version has devDependencies as dependencies by mistake","_npmVersion":"11.7.0","description":"React Hook to easily manipulate typed URL Search Params with zod.","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.3.6","react":"^18.2.0","react-dom":"^18.2.0","@biomejs/biome":"^2.3.13","react-router-dom":"^7.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.17.0","typescript":"^5.9.3","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/react-router-dom":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/use-zod-search-params_1.0.0_1770386983651_0.2804231098724381","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arthur-lobo/use-zod-search-params","version":"1.0.1","keywords":["zod","react","search params","query"],"author":{"name":"Arthur Lobo","email":"64273139+ArthurLobopro@users.noreply.github.com"},"license":"MIT","_id":"@arthur-lobo/use-zod-search-params@1.0.1","maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"dist":{"shasum":"3877b813c7adf3d42a4b5b922c2112451d536a8c","tarball":"https://registry.npmjs.org/@arthur-lobo/use-zod-search-params/-/use-zod-search-params-1.0.1.tgz","fileCount":6,"integrity":"sha512-U79GD8d4OMrq2UcbVm5iRjh/WjWCbK9RUQQwnP5bajY153WC1tBsaFJSl7KADwka+yBIej8msWufa4RGG0l0lg==","signatures":[{"sig":"MEUCIQDr2YsoqweLujoNx68IZ/0SV312PxgX/vGRRQ/be5XYfgIgBIbwah+gDn45ukFezHpxCsRRkQM5K15gLDnS5M36zMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6926},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"25da363ce76eb9425b2c8d8caa0cec26bbcce039","scripts":{"lint":"biome check","build":"tsc --emitDeclarationOnly && node build.js","prepack":"tsc","lint:fix":"biome check --write"},"_npmUser":{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"},"_npmVersion":"11.7.0","description":"React Hook to easily manipulate typed URL Search Params with zod.","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.3.6","react-router-dom":"^7.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","esbuild":"^0.17.0","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.0.0","@biomejs/biome":"^2.3.13","@types/react-dom":"^18.0.0","@types/react-router-dom":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/use-zod-search-params_1.0.1_1770394252202_0.34494463032971034","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@arthur-lobo/use-zod-search-params","version":"1.1.0","keywords":["zod","react","search params","query"],"author":{"name":"Arthur Lobo","email":"64273139+ArthurLobopro@users.noreply.github.com"},"license":"MIT","_id":"@arthur-lobo/use-zod-search-params@1.1.0","maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"dist":{"shasum":"a4e32d64f2e5c9132e5984a610fb2322f45db746","tarball":"https://registry.npmjs.org/@arthur-lobo/use-zod-search-params/-/use-zod-search-params-1.1.0.tgz","fileCount":6,"integrity":"sha512-RoJTS8mpN4F8Wu/ghP/BD6jnDvhtKOsjleaDGORw0GliK+mi4uwzrkRZNDFU+hWTy6mMErHukpgE2xul53Oglw==","signatures":[{"sig":"MEYCIQD5PkEiItVkCwKzyF53CaupCzVum66WKR76v/+0mhEY/gIhAOmH8P3z35zFEH15Io8OI+R4CKukzM+Z2Sub9Vy+Vyj9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8585},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"d302f380ce1cbe0a71a4d1839a1b4ac52d8dd89c","scripts":{"lint":"biome check","build":"tsc --emitDeclarationOnly && node build.js","prepack":"tsc","lint:fix":"biome check --write"},"_npmUser":{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"},"_npmVersion":"11.11.1","description":"React Hook to easily manipulate typed URL Search Params with zod.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"zod":"^4.3.6","react-router-dom":"^7.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","esbuild":"^0.17.0","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.0.0","@biomejs/biome":"^2.3.13","@types/react-dom":"^18.0.0","@types/react-router-dom":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/use-zod-search-params_1.1.0_1774620042077_0.4516101986856187","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@arthur-lobo/use-zod-search-params","version":"2.0.0","author":{"name":"Arthur Lobo","email":"64273139+ArthurLobopro@users.noreply.github.com"},"license":"MIT","description":"React Hook to easily manipulate typed URL Search Params with zod.","keywords":["zod","react","search params","query"],"scripts":{"build":"tsc --emitDeclarationOnly && node build.js","build:check":"tsc --noEmit","prepack":"tsc","lint":"biome check","lint:fix":"biome check --write"},"dependencies":{"react-router":"^8.3.0","zod":"^4.4.3"},"devDependencies":{"@biomejs/biome":"^2.5.7","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@types/react-router":"^5.1.20","esbuild":"^0.17.19","react":"^19.0.0","react-dom":"^19.0.0","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","gitHead":"4b8fc9fce1e1bc1491178102da8d93f640eb8e9e","_id":"@arthur-lobo/use-zod-search-params@2.0.0","_nodeVersion":"26.4.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-Zx9plesXf+Zn9SHUn2sZpYy3xCgvp/RPz7m7nEGiK95J4/e2fmqx+8sZ6aHipW3hu4J+A7qd/u9rmhUOIRFFug==","shasum":"ad2c69614697cd8abf550e8012df87667e08b4a2","tarball":"https://registry.npmjs.org/@arthur-lobo/use-zod-search-params/-/use-zod-search-params-2.0.0.tgz","fileCount":8,"unpackedSize":11169,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE9lEsnr8yxGxEwe7oAOzQuDSnnKxQ+gvT+8b2Lo6sxZAiEA7RA3flg4/wv9Pb0ov+jIlcAr7PMRDAUubf7EsAqrR4Q="}]},"_npmUser":{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"},"directories":{},"maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/use-zod-search-params_2.0.0_1786980312357_0.08096099281470459"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-06T14:09:43.547Z","modified":"2026-08-17T15:25:12.665Z","1.0.0":"2026-02-06T14:09:43.795Z","1.0.1":"2026-02-06T16:10:52.617Z","1.1.0":"2026-03-27T14:00:42.228Z","2.0.0":"2026-08-17T15:25:12.525Z"},"author":{"name":"Arthur Lobo","email":"64273139+ArthurLobopro@users.noreply.github.com"},"license":"MIT","keywords":["zod","react","search params","query"],"description":"React Hook to easily manipulate typed URL Search Params with zod.","maintainers":[{"name":"arthur-lobo","email":"arthurciprianolobo@gmail.com"}],"readme":"# use-zod-search-params\n\nA small React Hook to synchronize and validate URL search parameters using `react-router` and `zod`.\n\n---\n\n## Installation\n\nInstall the package and its runtime dependencies:\n\n```bash\nnpm install @arthur-lobo/use-zod-search-params\n# or\nyarn add @arthur-lobo/use-zod-search-params\n```\n\n> Ensure your project is using a React Router version that supports `useSearchParams`.\n\n---\n\n## Usage\n\nBasic TypeScript example:\n\n```tsx\nimport React from \"react\";\nimport { BrowserRouter, Routes, Route } from \"react-router\";\nimport { z } from \"zod\";\nimport { useZodSearchParams } from \"@arthur-lobo/use-zod-search-params\";\n\n// Every property must have .nullable() or .default()\nconst schema = z.object({\n  q: z.string().nullable(),\n  page: z.coerce.number().default(1),\n  show: z.coerce.boolean().nullable(),\n  sort: z.enum([\"asc\", \"desc\"]).default(\"asc\"),\n});\n\nfunction SearchPage() {\n  const { \n    params: { q, page },\n    setParams,\n    setters: { setPage }\n  } = useZodSearchParams(schema);\n\n  return (\n    <div>\n      <h2>Query: {q}</h2>\n      <p>Page: {page}</p>\n      <button onClick={() => setPage(page + 1)}>Next page</button>\n      <button onClick={() => setParams({ q: \"\", page: 1 })}>Clear Filters</button>\n    </div>\n  );\n}\n\nexport default function App() {\n  return (\n    <BrowserRouter>\n      <Routes>\n        <Route path=\"/\" element={<SearchPage />} />\n      </Routes>\n    </BrowserRouter>\n  );\n}\n```\n\n### API\n\n- `params` — parsed and validated values from the URL (result of `schema.parse(...)`).\n- `setters` — an object with auto-generated setters in the form `set<Key>`.\n- `setParams` — partial updater that merges values into the current query params.\n\n---\n\n## Supported Zod types\n\nThe hook supports fields using:\n\n- `z.string()`\n- `z.coerce.number()`\n- `z.coerce.boolean()`\n- `z.enum([...])`\n\nEvery property must have `.nullable()` or `.default()`. Otherwise, the function will display a TypeScript error.\n\n---\n\n## Notes\n\n- Empty values in the query string are ignored before parsing.\n- Use Zod coercion (`z.coerce.*`) to convert string query values into numbers and booleans.\n\n---\n\n## Contributing\n\nPRs and issues are welcome. Please include a description and reproduction steps for bugs.\n\n","readmeFilename":"readme.md"}