{"_id":"@asudbury/use-session-storage","_rev":"4-9c573fe154e62aac619cb3169bf5ac35","name":"@asudbury/use-session-storage","dist-tags":{"latest":"1.0.32"},"versions":{"1.0.0":{"name":"@asudbury/use-session-storage","version":"1.0.0","keywords":["react","hooks","sessionStorage","typescript","storage","session","state-management","serialization"],"author":{"name":"Your Name"},"license":"MIT","_id":"@asudbury/use-session-storage@1.0.0","maintainers":[{"name":"asudbury","email":"sudburya@gmail.com"}],"homepage":"https://asudbury.github.io/use-session-storage","bugs":{"url":"https://github.com/your-username/use-session-storage/issues"},"dist":{"shasum":"4d7d898a2e91e3e2ab9dcf78eb41ce1335f67519","tarball":"https://registry.npmjs.org/@asudbury/use-session-storage/-/use-session-storage-1.0.0.tgz","fileCount":9,"integrity":"sha512-SdobgPtadW8e26Q5tWyTqQ7gMVFy4MjYilGz2Eq87Txr51gnphzv62pStZkYnUx6Gkz/3oIpB4vVV/3mxEAbFg==","signatures":[{"sig":"MEUCID40Of/TS82vTQasbcjYCU6k6r2j3MIbV9f4MmLgk5y+AiEAoBtTMh7gJFgP15YiR1Mv+PK45u3dCzRioM9MCkgnEH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48693},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=14.0.0"},"gitHead":"8889c8872059bb8107f0833838a9b339bc72d9fd","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsc","format":"prettier --write src/**/*.{ts,tsx}","analyze":"node scripts/analyze-bundle.js","prepare":"npm run build","release":"npm run test && npm run lint && npm run build && npm run analyze","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","docs:build":"npm run docs:generate","test:watch":"vitest","format:check":"prettier --check src/**/*.{ts,tsx}","docs:generate":"node scripts/generate-docs.js","docs:markdown":"jsdoc2md --files src/useSessionStorage.ts > docs/api.md","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build","deploy:storybook":"npm run build-storybook:gh-pages && gh-pages -d storybook-static","preview-storybook":"npx http-server storybook-static -p 8080 -o","storybook:publish":"npm run build-storybook && gh-pages -d storybook-static","build-storybook:gh-pages":"storybook build --output-dir storybook-static"},"_npmUser":{"name":"asudbury","email":"sudburya@gmail.com"},"repository":{"url":"git+https://github.com/your-username/use-session-storage.git","type":"git"},"_npmVersion":"11.6.2","description":"A powerful React hook for SessionStorage management with TypeScript support, serialization, and comprehensive event handling","directories":{},"_nodeVersion":"22.20.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^4.5.0","husky":"^8.0.0","react":"^18.2.0","eslint":"^8.57.1","vitest":"^3.2.4","gh-pages":"^6.3.0","react-dom":"^18.2.0","storybook":"^7.5.0","typescript":"^5.8.3","@babel/core":"^7.23.0","@types/jest":"^29.5.0","@types/react":"^18.2.0","eslint-plugin-n":"^16.6.2","vite-plugin-dts":"^3.9.1","@storybook/react":"^7.5.0","@types/react-dom":"^18.2.0","@babel/preset-env":"^7.23.0","@storybook/blocks":"^7.5.0","jsdoc-to-markdown":"^9.1.1","@babel/preset-react":"^7.22.0","eslint-plugin-react":"^7.37.5","eslint-plugin-import":"^2.32.0","@storybook/react-vite":"^7.5.0","eslint-plugin-promise":"^6.6.0","@storybook/addon-links":"^7.5.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.7.0","eslint-plugin-storybook":"^0.6.0","@babel/preset-typescript":"^7.23.0","@storybook/addon-actions":"^7.5.0","@testing-library/jest-dom":"^6.1.0","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@storybook/testing-library":"^0.2.0","@storybook/addon-essentials":"^7.5.0","@testing-library/user-event":"^14.5.0","@storybook/addon-interactions":"^7.5.0","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/use-session-storage_1.0.0_1766351205173_0.051546585477267204","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@asudbury/use-session-storage","version":"1.0.1","keywords":["react","hooks","sessionStorage","typescript","storage","session","state-management","serialization"],"author":{"name":"Your Name"},"license":"MIT","_id":"@asudbury/use-session-storage@1.0.1","maintainers":[{"name":"asudbury","email":"sudburya@gmail.com"}],"homepage":"https://asudbury.github.io/use-session-storage","bugs":{"url":"https://github.com/your-username/use-session-storage/issues"},"dist":{"shasum":"a5ae7876411f43a6348d903d03412ceedf06cc3b","tarball":"https://registry.npmjs.org/@asudbury/use-session-storage/-/use-session-storage-1.0.1.tgz","fileCount":9,"integrity":"sha512-F7C55ZWfKbfsmpvI+I6kBwDVpa76XBkxr2csCfMn17WQWzsOOyoIuV43owQtmax9n0vjzdhZhsgF5s22ceRFTA==","signatures":[{"sig":"MEUCIQCqApRKnOlXMBewsjTiJaSn4RvIHle/Grn7bBlY99MmpAIgbGh+wB/AGibbi3ri+aAYdjcjr51Sirw+yh+ziBNRfy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49254},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=14.0.0"},"gitHead":"a7d1a22fc17aa04c6c40494b9df52e03fb22b482","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsc","format":"prettier --write src/**/*.{ts,tsx}","analyze":"node scripts/analyze-bundle.js","prepare":"npm run build","release":"npm run test && npm run lint && npm run build && npm run analyze","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","docs:build":"npm run docs:generate","test:watch":"vitest","format:check":"prettier --check src/**/*.{ts,tsx}","docs:generate":"node scripts/generate-docs.js","docs:markdown":"jsdoc2md --files src/useSessionStorage.ts > docs/api.md","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build","deploy:storybook":"npm run build-storybook:gh-pages && gh-pages -d storybook-static","preview-storybook":"npx http-server storybook-static -p 8080 -o","storybook:publish":"npm run build-storybook && gh-pages -d storybook-static","build-storybook:gh-pages":"storybook build --output-dir storybook-static"},"_npmUser":{"name":"asudbury","email":"sudburya@gmail.com"},"repository":{"url":"git+https://github.com/your-username/use-session-storage.git","type":"git"},"_npmVersion":"11.6.2","description":"A powerful React hook for SessionStorage management with TypeScript support, serialization, and comprehensive event handling","directories":{},"_nodeVersion":"22.20.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^4.5.0","husky":"^8.0.0","react":"^18.2.0","eslint":"^8.57.1","vitest":"^3.2.4","gh-pages":"^6.3.0","react-dom":"^18.2.0","storybook":"^7.5.0","typescript":"^5.8.3","@babel/core":"^7.23.0","@types/jest":"^29.5.0","@types/react":"^18.2.0","eslint-plugin-n":"^16.6.2","vite-plugin-dts":"^3.9.1","@storybook/react":"^7.5.0","@types/react-dom":"^18.2.0","@babel/preset-env":"^7.23.0","@storybook/blocks":"^7.5.0","jsdoc-to-markdown":"^9.1.1","@babel/preset-react":"^7.22.0","eslint-plugin-react":"^7.37.5","eslint-plugin-import":"^2.32.0","@storybook/react-vite":"^7.5.0","eslint-plugin-promise":"^6.6.0","@storybook/addon-links":"^7.5.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.7.0","eslint-plugin-storybook":"^0.6.0","@babel/preset-typescript":"^7.23.0","@storybook/addon-actions":"^7.5.0","@testing-library/jest-dom":"^6.1.0","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@storybook/testing-library":"^0.2.0","@storybook/addon-essentials":"^7.5.0","@testing-library/user-event":"^14.5.0","@storybook/addon-interactions":"^7.5.0","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/use-session-storage_1.0.1_1766403530753_0.0451394870688655","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@asudbury/use-session-storage","version":"1.0.2","keywords":["react","hooks","sessionStorage","typescript","storage","session","state-management","serialization"],"author":{"name":"Your Name"},"license":"MIT","_id":"@asudbury/use-session-storage@1.0.2","maintainers":[{"name":"asudbury","email":"sudburya@gmail.com"}],"homepage":"https://asudbury.github.io/use-session-storage","bugs":{"url":"https://github.com/asudbury/use-session-storage/issues"},"dist":{"shasum":"bb8194fd2a7dd24724d22aeff32c26dff2650913","tarball":"https://registry.npmjs.org/@asudbury/use-session-storage/-/use-session-storage-1.0.2.tgz","fileCount":9,"integrity":"sha512-qNirOe/6R2s0FtwBOhPMeC5dTb7GTSxOuGyk3Ra3Sg0/xFAYRfxlCi55/W10dMS+Y4e8064UgUAC8nXyFF0dDg==","signatures":[{"sig":"MEUCIQC5x1cZ30kYIM2y5fno123Qb2/KD4ZpRe8YvyyO6raTDQIgXo2B3/HJfVYoV4D10qoACpRyTj9Z1Kqz4R7kPCMN3p4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49244},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=14.0.0"},"gitHead":"a7d1a22fc17aa04c6c40494b9df52e03fb22b482","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsc","format":"prettier --write src/**/*.{ts,tsx}","analyze":"node scripts/analyze-bundle.js","prepare":"npm run build","release":"npm run test && npm run lint && npm run build && npm run analyze","lint:fix":"eslint src --ext .ts,.tsx --fix","storybook":"storybook dev -p 6006","docs:build":"npm run docs:generate","test:watch":"vitest","format:check":"prettier --check src/**/*.{ts,tsx}","docs:generate":"node scripts/generate-docs.js","docs:markdown":"jsdoc2md --files src/useSessionStorage.ts > docs/api.md","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","build-storybook":"storybook build","deploy:storybook":"npm run build-storybook:gh-pages && gh-pages -d storybook-static","preview-storybook":"npx http-server storybook-static -p 8080 -o","storybook:publish":"npm run build-storybook && gh-pages -d storybook-static","build-storybook:gh-pages":"storybook build --output-dir storybook-static"},"_npmUser":{"name":"asudbury","email":"sudburya@gmail.com"},"repository":{"url":"git+https://github.com/asudbury/use-session-storage.git","type":"git"},"_npmVersion":"11.6.2","description":"A powerful React hook for SessionStorage management with TypeScript support, serialization, and comprehensive event handling","directories":{},"_nodeVersion":"22.20.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","vite":"^4.5.0","husky":"^8.0.0","react":"^18.2.0","eslint":"^8.57.1","vitest":"^3.2.4","gh-pages":"^6.3.0","react-dom":"^18.2.0","storybook":"^7.5.0","typescript":"^5.8.3","@babel/core":"^7.23.0","@types/jest":"^29.5.0","@types/react":"^18.2.0","eslint-plugin-n":"^16.6.2","vite-plugin-dts":"^3.9.1","@storybook/react":"^7.5.0","@types/react-dom":"^18.2.0","@babel/preset-env":"^7.23.0","@storybook/blocks":"^7.5.0","jsdoc-to-markdown":"^9.1.1","@babel/preset-react":"^7.22.0","eslint-plugin-react":"^7.37.5","eslint-plugin-import":"^2.32.0","@storybook/react-vite":"^7.5.0","eslint-plugin-promise":"^6.6.0","@storybook/addon-links":"^7.5.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.7.0","eslint-plugin-storybook":"^0.6.0","@babel/preset-typescript":"^7.23.0","@storybook/addon-actions":"^7.5.0","@testing-library/jest-dom":"^6.1.0","@typescript-eslint/parser":"^6.0.0","eslint-plugin-react-hooks":"^4.6.0","@storybook/testing-library":"^0.2.0","@storybook/addon-essentials":"^7.5.0","@testing-library/user-event":"^14.5.0","@storybook/addon-interactions":"^7.5.0","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/use-session-storage_1.0.2_1766403622931_0.9810842932659167","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"@asudbury/use-session-storage","version":"1.0.32","description":"A powerful React hook for SessionStorage management with TypeScript support, serialization, and comprehensive event handling","main":"dist/index.cjs.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build","prepublishOnly":"npm run build","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","storybook":"storybook dev -p 6006","build-storybook":"storybook build","build-storybook:gh-pages":"storybook build --output-dir storybook-static","preview-storybook":"npx http-server storybook-static -p 8080 -o","storybook:publish":"npm run build-storybook && gh-pages -d storybook-static","lint":"eslint src --ext .ts,.tsx","lint:fix":"eslint src --ext .ts,.tsx --fix","format":"prettier --write src/**/*.{ts,tsx}","format:check":"prettier --check src/**/*.{ts,tsx}","docs:generate":"node scripts/generate-docs.js","docs:markdown":"jsdoc2md --files src/useSessionStorage.ts > docs/api.md","docs:build":"npm run docs:generate","analyze":"node scripts/analyze-bundle.js","release":"npm run test && npm run lint && npm run build && npm run analyze","deploy:storybook":"npm run build-storybook:gh-pages && gh-pages -d storybook-static"},"keywords":["react","hooks","sessionStorage","typescript","storage","session","state-management","serialization"],"author":{"name":"Adrian Sudbury"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/asudbury/use-session-storage.git"},"bugs":{"url":"https://github.com/asudbury/use-session-storage/issues"},"homepage":"https://asudbury.github.io/use-session-storage","peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@babel/core":"^7.23.0","@babel/preset-env":"^7.23.0","@babel/preset-react":"^7.22.0","@babel/preset-typescript":"^7.23.0","@storybook/addon-actions":"^7.5.0","@storybook/addon-essentials":"^7.5.0","@storybook/addon-interactions":"^7.5.0","@storybook/addon-links":"^7.5.0","@storybook/blocks":"^7.5.0","@storybook/react":"^7.5.0","@storybook/react-vite":"^7.5.0","@storybook/testing-library":"^0.2.0","@testing-library/jest-dom":"^6.1.0","@testing-library/react":"^13.4.0","@testing-library/user-event":"^14.5.0","@types/jest":"^29.5.0","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.57.1","eslint-config-standard-with-typescript":"^43.0.1","eslint-plugin-import":"^2.32.0","eslint-plugin-n":"^16.6.2","eslint-plugin-promise":"^6.6.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-storybook":"^0.6.0","gh-pages":"^6.3.0","husky":"^8.0.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","jsdoc-to-markdown":"^9.1.1","react":"^18.2.0","react-dom":"^18.2.0","storybook":"^7.5.0","typescript":"^5.8.3","vite":"^4.5.0","vite-plugin-dts":"^3.9.1","vitest":"^3.2.4"},"engines":{"node":">=14.0.0"},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"ede3ced9b810950b5657586d74f47da9c3bb0061","_id":"@asudbury/use-session-storage@1.0.32","_nodeVersion":"24.16.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-QD5qaEywsXr+vcbFxy5nAqOz77yDXILA1XpNZIbbCRecGP8aBy3O6e/+n0qclgHo19BZ4GuwYVJB6iWzwJQrIQ==","shasum":"66eea9dcc69f7ba03ef6bc59a7ba9fea36013249","tarball":"https://registry.npmjs.org/@asudbury/use-session-storage/-/use-session-storage-1.0.32.tgz","fileCount":9,"unpackedSize":48994,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDDdNch/6M3jV2vTxumHS/KOwgqiZDx4fc6IAXPhTXHjAiBw996WD+0EBNRoaZrwMa3YEZnxpvFmkHDB+Uc2CUihbw=="}]},"_npmUser":{"name":"asudbury","email":"sudburya@gmail.com"},"directories":{},"maintainers":[{"name":"asudbury","email":"sudburya@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/use-session-storage_1.0.32_1782496504032_0.8948769953782703"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-21T21:06:45.033Z","modified":"2026-06-26T17:55:04.338Z","1.0.0":"2025-12-21T21:06:45.323Z","1.0.1":"2025-12-22T11:38:50.910Z","1.0.2":"2025-12-22T11:40:23.081Z","1.0.32":"2026-06-26T17:55:04.178Z"},"bugs":{"url":"https://github.com/asudbury/use-session-storage/issues"},"author":{"name":"Adrian Sudbury"},"license":"MIT","homepage":"https://asudbury.github.io/use-session-storage","keywords":["react","hooks","sessionStorage","typescript","storage","session","state-management","serialization"],"repository":{"type":"git","url":"git+https://github.com/asudbury/use-session-storage.git"},"description":"A powerful React hook for SessionStorage management with TypeScript support, serialization, and comprehensive event handling","maintainers":[{"name":"asudbury","email":"sudburya@gmail.com"}],"readme":"<img src=\"./public/hero-image.png\">\n\n# useSessionStorage\n\nA powerful, production-ready React hook for SessionStorage management with comprehensive serialization support, type safety, and event handling.\n\n## 📚 DeepWiki Project Knowledge Base\n\n> **Explore the full documentation, architecture, and deep technical notes for this project on DeepWiki:**\n>\n> [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/asudbury/use-session-storage)\n\n## 🎯 Key Features\n\n- **🔄 Automatic Serialization**: JSON serialization/deserialization with error handling\n- **🛡️ Type Safe**: Full TypeScript support with generic types\n- **⚡ Performance Optimized**: Efficient state management and memory leak prevention\n- **🎛️ Event Handling**: Listen to storage changes across tabs/windows\n- **📦 Default Values**: Support for default values and fallbacks\n- **🔍 Validation**: Optional value validation with custom validators\n- **🚫 SSR Safe**: Server-side rendering compatible\n- **🔄 Synchronization**: Automatic sync across multiple hook instances\n- **⏱️ Debounced Updates**: Optional debounced writes for performance\n- **📊 State Management**: Comprehensive loading and error states\n\n## 📦 Installation\n\n```bash\nnpm i @asudbury/use-session-storage\n```\n\n## 🚀 Quick Start\n\n```tsx\nimport useSessionStorage from '@asudbury/use-session-storage';\n\nfunction MyComponent() {\n  const [value, setValue, { loading, error, remove }] = useSessionStorage(\n    'my-key',\n    'default-value'\n  );\n\n  return (\n    <div>\n      <input value={value} onChange={(e) => setValue(e.target.value)} disabled={loading} />\n      <button onClick={remove}>Clear</button>\n      {error && <p>Error: {error.message}</p>}\n    </div>\n  );\n}\n```\n\n## 🔧 Advanced Usage\n\n### With TypeScript\n\n```tsx\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n}\n\nfunction UserProfile() {\n  const [user, setUser] = useSessionStorage<User>('user', {\n    id: 0,\n    name: '',\n    email: '',\n  });\n\n  return (\n    <div>\n      <h1>{user.name}</h1>\n      <p>{user.email}</p>\n    </div>\n  );\n}\n```\n\n### With Validation\n\n```tsx\nconst [count, setCount] = useSessionStorage('count', 0, {\n  validator: (value) => {\n    if (typeof value !== 'number') throw new Error('Must be a number');\n    if (value < 0) throw new Error('Must be positive');\n    return value;\n  },\n});\n```\n\n### With Debouncing\n\n```tsx\nconst [text, setText] = useSessionStorage('text', '', {\n  debounceMs: 500, // Wait 500ms before writing to storage\n});\n```\n\n## ⚙️ Configuration Options\n\n```tsx\ninterface UseSessionStorageOptions<T> {\n  serializer?: {\n    parse: (value: string) => T;\n    stringify: (value: T) => string;\n  };\n  validator?: (value: any) => T;\n  debounceMs?: number;\n  syncAcrossInstances?: boolean;\n  onError?: (error: Error) => void;\n}\n```\n\n## 🔄 Event Handling\n\nListen to storage changes across tabs and windows:\n\n```tsx\nconst [theme, setTheme] = useSessionStorage('theme', 'light');\n\n// Automatically syncs when changed in other tabs\nuseEffect(() => {\n  console.log('Theme changed to:', theme);\n}, [theme]);\n```\n\n## 🛡️ Error Handling\n\nThe hook provides comprehensive error handling for:\n\n- JSON parsing errors\n- Storage quota exceeded\n- Invalid values\n- Validation failures\n\n## 📖 API Reference\n\n### Return Value\n\n```tsx\nconst [value, setValue, actions] = useSessionStorage(key, defaultValue, options);\n```\n\n- `value`: Current value from sessionStorage\n- `setValue`: Function to update the value\n- `actions`: Object with additional actions and states\n  - `loading`: Boolean indicating if operation is in progress\n  - `error`: Error object if operation failed\n  - `remove`: Function to remove the item from storage\n  - `reset`: Function to reset to default value\n\n## 🔧 TypeScript Support\n\nFull TypeScript support with proper type inference and IntelliSense for complete type safety.\n\n## 📄 License\n\nMIT © Adrian Sudbury\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a [Pull Request](https://github.com/asudbury/use-session-storage/pulls).\n\n- [Open a Pull Request](https://github.com/asudbury/use-session-storage/pulls)\n- [View All Issues](https://github.com/asudbury/use-session-storage/issues)\n- [Create a New Issue](https://github.com/asudbury/use-session-storage/issues/new)\n\n## 📞 Support\n\nIf you have any questions or need help, please [Open an issue](https://github.com/asudbury/use-session-storage/issues) or use the links above.\n\nMade with ❤️ for the React community\n","readmeFilename":"README.md"}