{"_id":"use-persisted-state","_rev":"9-647a5700f4bdb3f79139a8c432b94b29","name":"use-persisted-state","dist-tags":{"latest":"0.3.3","next":"0.3.0-alpha.0"},"versions":{"0.0.0":{"name":"use-persisted-state","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"MIT","_id":"use-persisted-state@0.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"donavon","email":"github@donavon.com"},"dist":{"integrity":"sha512-7o9kVnOa0kNsMYj8nSmhQTUjQ3sjaquYqCK7LScy+BwNHyM5s3QywQJiKUqcXKxZs5wMtxqoXlj5x8lGGzRKCA==","shasum":"196c25d363215077035df02bc6d69fc2a79deb53","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.0.0.tgz","fileCount":1,"unpackedSize":215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcO4+xCRA9TVsSAnZWagAA41gQAJGsFNEOI80jMMZ2g9KZ\nZsYQBAXrtaMbPVkb3eddTc2grXnQrbHmzpdYsI8fnAPqKfWcVOjbMlDxqhEu\n6L4q2cT7bQGdU9X3vfZndoMegNSrRLQzBdeg8+cNhL7QEPI/frpRz35Nz+a3\ng1EBzA1A7NrscBx0OEcRujieKkl32ofVLagH106ttTVegd5xJeQxO16losEZ\n5Q7Y03fJNMlh3R8Hw9G17r3DT98NEyAEggB8Hzgc43ide1htrgIWJRVH7ZqD\not13DfqEbzqm2ag2g61ZANEBiowvwmb5lNvLesAOP8474dLoHpu/b7lyG8kq\nE66YX6M8DLgmE3YM8XQuWsWPzNBFJIFCVLasmQSKhEh8R2wCPPnQwSM2uz6j\n9/OP0ag9+r0Z/YroUqWejv8MR6VLuTlxLoPZIJJCmJH7HMlS2qsgMF8zHJ8x\ny+O+cfBB3cxKwDkcqQqATZ7S3T1SeAYns4gFoG+5GRPDnLB9SKORBulQ2rge\np3c1kyYpcMrsBNKGP6ZWwJM4Hd/Zwv1D3docdzXF7aac9ipZLFUaov1G0Ol0\n5N31c5PmMlRHC6YPjGFiQn3PhsNc/feRj7EN1aJS64M6qJh0vomJqxEqz2L7\nRXzWvs2MESNBsR9Pkjc8uLOAU0Y01+ynCQGrPt6bZfCs7kUb1NyDEWO1HJ7l\neyFS\r\n=xFE5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDyK8MgMKkG6xjjPxoy2kADHcAuAaivE2ox0ijiupI6AIgIRCqrz4yv+Ig6RBEd94lBy590eAn7qbkdzknsGrdIxk="}]},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.0.0_1547407281045_0.7934000363610456"},"_hasShrinkwrap":false},"0.1.0":{"name":"use-persisted-state","version":"0.1.0","description":"A custom React Hook thst provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.9.0","react":"^16.8.0","react-dom":"^16.8.0","react-testing-library":"^5.5.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"95e8ce4a808e1b12d390975a275860e51228217e","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.1.0","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"donavon","email":"github@donavon.com"},"dist":{"integrity":"sha512-Pw/KZbIz2fYUlohXpU/xeQZdrKb7MMWVsi9UBv6NImhnnTbKEOLzvikmkeLKFTA3zNk3ntS70e+ljpRWiZihVw==","shasum":"19a5e7a2d754d268648f2a66baa3f166d88198c9","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.1.0.tgz","fileCount":6,"unpackedSize":6746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXIdMCRA9TVsSAnZWagAAFYIP/1yvmWS8ulpTWSaPZeZR\n89gG5TEWTsC+vWZKEVkKzP6T8r1DtxrbsfRLlEFtdN9KrXoNHPhBWR7tbbFU\nwaooCLoyvuTZg3Mdjd1p6hFhg8B7eOZw7zdEeZadmgGaedjXJo/EEyOSOhEs\n4JH33jXVtHFWijTXiUorBxtldTV9JqAIUeEDLxJ5HkzzKY5qio3qthqlhCW2\niHfSuWSq4Ol3HICtJ7ZKc0Pg694l5dQ2LIO+o3qq1oX+7pgBOicrP4aZ1fgw\nyl8Rn7+myLxzJ60iQYlKp/Dh8hyN34TBffSJaExS7T8xT+MRiwW3wNDGT81S\nqGuY53FfNSYZSPc7lzAh8pBJ1qJI4GYhr1f4CQGc2eVFKGCDI8Z6ZDDxyWAL\nOlvV2iA1zkiHc9L/HO5zByV19Cn/92r9ZE04lx29cYA8DWEkrJyWmpk0bFJI\nwOG2ex0pZIsKT0tWzzc5P9a4vtuVMlDwPs9xBKf0ev6c9d3gigqYstPnkVm9\nCAuqDc5SAH+1gGx4nXAnUztHxDBXgnze04jSNdsk9UDGB6ZCK8nOtwpQ4Cn0\nhGRfAaHwNVuTexIx9RCx0uUSlrUXTshvv4L86hVONcCaFwkgIXFabt5BA2SX\nxb2RWoH76nqB7im3bn5D3oL4AVXYip6Ffd4dDNOqwSU8xYD1LYseEh3ZHO/z\nUDOh\r\n=raYs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDZfcZm1knnCiYw345oMogFtOiXOZPja4+u0nha62u+wIgBtVvuYV/Oh4W6YHPZq4rLJXPw4/Ba64x8ObsHz4X1KQ="}]},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.1.0_1549567819749_0.46403640406571145"},"_hasShrinkwrap":false},"0.1.1":{"name":"use-persisted-state","version":"0.1.1","description":"A custom React Hook thst provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.9.0","react":"^16.8.0","react-dom":"^16.8.0","react-testing-library":"^5.5.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"8744c7774b924f1e1f9e5460011f3cd5e2c2a302","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.1.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"donavon","email":"github@donavon.com"},"dist":{"integrity":"sha512-edPZajyLLNo1ta/3AXOS6sW5ClksKLewwQchXdiBXqsS1LPWEnT2WK4VsNPTkloYKvK3okfYLg8gzZPzrZRbkg==","shasum":"cc679211ff91cb2d978156ce4235bc7bcfc62a5b","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.1.1.tgz","fileCount":6,"unpackedSize":6752,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcXJw0CRA9TVsSAnZWagAAhxkQAI4zNf0rC6XqFW3PEtkr\nLDa4uPoxzKPLv2se3Dh+WSFByoNpCLNN4/3kFxHLPJ3ruje7mw7ee0NzykHO\n4QbVSOpmLZ3nZj7lbJNhVfkpiGj/rZQOEffpt83MIt7QRigUHJccIgq54Bmy\n16XreEsbQPQqhG7VqoPBzw8QiC44o4aMRKLDA42LzGKEmzW7TKCONgmbOF0O\n6Wl2WB39aOSK7poUYTJeJbw129yU4xIJAC3dOC3fjizjf+ZLzgl0IF80C0jG\njDQeNApnT6wvAYJqDlY1yggbaVw66GQBxP8/25JIVsjTXK7pDAcpqhwZ+9+g\njzhreGQoeRtZAh9eQ3lTdVS9bu3qh+BMPfT56UbMcQJm5Q38xA6cgLrHwT9h\nT5XaPDrdvUexYWW8nwxP1SjEv6rFmlqGlT5nbQ4IKqxjqmmeeBvrrtkBazHf\n68VpYTJpVL1V9+caORp/LUQI1vGn3dgHMToLv5HA+pCuQjppf69J6RacYgFC\nGhQk379WGky7lcRtpmPixigLI+jQ6box2Hkx9TCGwEJ1snvY1BndidSYFQD0\nSRerE9FWCFJ9EOM3BiVAojCr6uH2PPbd2cwQkYzqOKZoriD6AcE2KJncGr9n\nwFdMkzZW9dTLIxsemmq0cu0QauiBd66j2zZ4har7WTlt1Q5qks4BRl1HPURf\nxkA7\r\n=1a6h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEMFJYd/ZG2ucdiPYuqRHcVh6Vva/dQnHBNqvHyNWsryAiEAhnCkSXo2nXRbgHPUeHzfUvz2I0ykIPpXQcu7ExHAbsY="}]},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.1.1_1549573171981_0.524382208037578"},"_hasShrinkwrap":false},"0.2.0":{"name":"use-persisted-state","version":"0.2.0","description":"A custom React Hook thst provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.9.0","react":"^16.8.0","react-dom":"^16.8.0","react-testing-library":"^5.5.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"gitHead":"b78d0ac1ef3bb3dd568da7162db4e292e5a358ea","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.2.0","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"donavon","email":"github@donavon.com"},"dist":{"integrity":"sha512-vigqypMifZNpaWp8zl5i1+RP2su3Wlwr7G/dCMVRTBgJqvEMxffFZFjTAlLw7W5417Gw82WtBAonErTeYYDkRQ==","shasum":"d232654827dcf9f74c48efe6806ae1bb76e418d8","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.2.0.tgz","fileCount":6,"unpackedSize":8931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcX7x7CRA9TVsSAnZWagAAWKYP/2vt7YuZ7u4jj//C13nB\nZbRorPYbwzuLV7aw+pnjxbJaXYsohgaMQNJUiYPohshIhP6yrCWP0bwbTXkK\n4FcnW2ly8IX7w2eKfZHlMXZejD6JV1IAeqA2nNY7E4r6NWUz5m0X35E2VDE4\nrkZepRpZPgIZquGfPJR1xMEpe8FM661hjRjxS2eaP9PH3macJ7yos78LaTq5\nZ9Wa0z3Pg7IwIAiPZXmX8pDZjn4aLX8TX9D3zi3HK9Ye8rplRx+NbIJvcJqX\nx7usJsbMocTmV3sEq7/4Mv56IJdbjPfc6IA8LXNxIlPtueM3CSeASYImi9PL\ntF+qJyF/RRU3kbN5ABRpDh12GsCwFQ18g8ewuyjQh1T3NAodILzzC1Ngautm\nWoWTrhynLLMQ5N95lvgNH41tCZ8931WkJMUAocqJJJ5iGOMzlwjlBhss4NAa\nSnR45Y5zBOjTDFngwQm7k/uNKNloIdeV8xhNtpz34sfVNN5LxyJlQarCNYLv\nHxLOC7Me9uIkML3EGvLpwsmrG13AVv5lGF2gIIDo24atQMzbsXzzxlXIbw7M\n2xGiQCf1POYKMDMhBEeQgveDLAYKsyWt7lse8nV85AgMRkTD4/fFKxF9Rd8g\neEXF+cXQjBzDx37GgGYe5ej0Vv3hMcp9TnASVjxOv8TAKSBl3DsVclXo6NTf\ngUk/\r\n=DLEA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApq4HGjh5ctQRH6Hkc84i6D2dEqcUJRXkeJM1OYvMDMAiEAkLCXjQ5IgVjYsU7zR1vMwzFo2wZewYkVUQOofpfe3J4="}]},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.2.0_1549778042360_0.02473920382462591"},"_hasShrinkwrap":false},"0.3.0-alpha.0":{"name":"use-persisted-state","publishConfig":{"tag":"next"},"version":"0.3.0-alpha.0","description":"A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.9.0","react":"^16.8.0","react-dom":"^16.8.0","react-testing-library":"^5.5.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"dependencies":{"@use-it/event-listener":"^0.1.2"},"readme":"# use-persisted-state\n\nA custom [React Hook](https://reactjs.org/docs/hooks-overview.html) that provides a multi-instance,\nmulti-tab/browser shared and persistent state.\n\n[![npm version](https://badge.fury.io/js/use-persisted-state.svg)](https://badge.fury.io/js/use-persisted-state) [![Build Status](https://travis-ci.com/donavon/use-persisted-state.svg?branch=master)](https://travis-ci.com/donavon/use-persisted-state)\n\n\n`use-persisted-state` is not a hook itself, but is a factory that accepts a storage `key`\nand an optional storage provider (default = `localStorage`) and returns a hook\nthat you can use as a direct replacement for `useState`.\n\n## Features\n\n💾 Persists the state to `localStorage`\n\n🖥 Syncs between tabs and/or browser windows\n\n📑 Shares state w/multiple hooks on a page\n\n\n## Requirement\n\nTo use `use-persisted-state`, you must use `react@16.8.0` or greater which includes Hooks.\n\n## Installation\n\n```sh\n$ npm i use-persisted-state\n```\n\n\n## Example\n\nLet's take a look at how you can use `use-persisted-state`.\nHere we have an example of a typical up/down counter.\n\n```js\nimport { useState } from 'react';\n\nconst useCounter = initialCount => {\n  const [count, setCount] = useState(initialCount);\n\n  return {\n    count,\n    increment: () => setCount(currentCount => currentCount + 1),\n    decrement: () => setCount(currentCount => currentCount - 1),\n  };\n};\n\nexport default useCounter;\n```\n\nLet's replace the import of `react` with an import from `use-persisted-state`.\nAnd we'll call `createPersistedState` (the factory function).\nThis will return a `useCounterState` hook that we can use in place of `useState`.\n\nThe complete code is as follows.\n\n```js\nimport createPersistedState from 'use-persisted-state';\nconst useCounterState = createPersistedState('count');\n\nconst useCounter = initialCount => {\n  const [count, setCount] = useCounterState(initialCount);\n\n  return {\n    count,\n    increment: () => setCount(currentCount => currentCount + 1),\n    decrement: () => setCount(currentCount => currentCount - 1),\n  };\n};\n\nexport default useCounter;\n```\n\nThe state is shared with any other hook using the same key, either\non the same page, across tabs, or even browser windows.\n\nFor example, open two copies of your app in two tabs or even two windows.\nAny changes to state in one tab will be rendered on tne other tab.\n\nYou can also close the browser and the next time you run your app,\nthe state will be rendered as it was before you closed your browser.\n\n\n## License\n\n**[MIT](LICENSE)** Licensed\n","readmeFilename":"README.md","gitHead":"b78d0ac1ef3bb3dd568da7162db4e292e5a358ea","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.3.0-alpha.0","_nodeVersion":"10.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-m+9EirjHKk5SkbUQeedZdK2oSpG/qErt4ZdrudqaOwzovgnsFE562VppM6z3jgIhTi99CKZexKn/aKFOYLRDCQ==","shasum":"1c7d3df1961ce2fbd0091e007f44e29ade094144","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.3.0-alpha.0.tgz","fileCount":6,"unpackedSize":8639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYc9tCRA9TVsSAnZWagAA+QgP/1RblfHrcTUh4ugIK7m2\n/uoEzUV2CspcB8OwuN/OIGMSrSNTe8ueUjK0cevUmAsMGJlA77AO5ayHCupg\nqcMhwlcMqXyLdFAz7pceTJmkKpFLI9UF7xSnDwFfcKpFvOUlVx5BJXqEzJYz\nc4vCcEIMWFfNOGiiSqa0tBZbfpmcOrZHL1MCyZxNjjvEOYKnwbOhdszATZzM\nDM7EjPfhfATM7WGqpQbj06WpdWNavfgHtpvnmDou7nHgBZcmx2n5TfnLFLlt\n+H9iByxt8IakYtDp3maSbSQ8TUMN35psSQYcGnErY41tQiGfwuCQuqTspCWl\nC3Gh5A5enRc/oos/IGHP4EQI4kMXuMkHKVIbKPkXUQbTxJip9NWc24bGLJZg\niWmPvMrNaVhEwg9ob2i7F5q1DPcoQzyAhvk3J6Iry3h67eS3j4KvKmzq1OnM\nbWbSD8/DsxpoYZN3cY8SN+jV3Ivy2LkJcQNaIdxvrXKxxfcwjOSSYqmX1Yfk\noYLqty6KGCZBHZjCHMvWh5yE1WLcJwdHsX+ulFR7bgdsrLqSxm8M8tQhx7J5\nXQdSMrymp3N4Of2G3uSqS0oTpzEvYYwxdsaTsYPV+szwXDF/VtY2nkIdZKd7\nP8BxF4BUPGzvCwnxWqma94cEnT/z0ZaWFdlDs/oaXdrDE3llVZ78xWuwOfFb\nZYwl\r\n=7jND\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFq01MfKm57bDb5Ug4W6eCJvS/EbpfO9SReeyvj4NWZRAiAF3+8F9CA/dMPUa9LDQNs82pO2ypoT6OVV9ajweGpchQ=="}]},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"_npmUser":{"name":"donavon","email":"github@donavon.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.3.0-alpha.0_1549913964997_0.23474996150748395"},"_hasShrinkwrap":false},"0.3.0":{"name":"use-persisted-state","publishConfig":{"tag":"latest"},"version":"0.3.0","description":"A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.9.0","react":"^16.8.0","react-dom":"^16.8.0","react-testing-library":"^5.5.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"dependencies":{"@use-it/event-listener":"^0.1.2"},"gitHead":"3e2ef63f5a357ca136c0b1c3528ed327b5fc9a7e","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.3.0","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"donavon","email":"github@donavon.com"},"dist":{"integrity":"sha512-UlWEq0JYg7NbvcRBZ1g6Bwe4SEbYfr1wr/D5mrmfCzSxXSwsPRYygGLlsxHcW58Rf7gGwRPBT23sNVvyVn4WYg==","shasum":"f8e3d2fd8eee67e0c86fd596c3ea3e8121c07402","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.3.0.tgz","fileCount":6,"unpackedSize":9656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYdyDCRA9TVsSAnZWagAAuIkP/RH3GusGjaLyqIoxZ34n\nGBoZHZWL8i/r9d8mT2cer5+NKuHcU0tv150JQlGm59MmaXrT/s7q+KOqWpXl\nKUHmGKFQp32JKunTmDGr9ivTsFwIbzNP4HUV19K2cr4R1Vg2zz/2W6gP2mdg\nihQWnkbXOc3xCTdidPtF/IqPk/Fr+RDxxmK+uOlIMBBPH33PXOd44EcYv9qY\nIc1gGXAbqNFRl+3GvQJu3kAxNqQEjW8ITaebf2T0pYyaRVMQlRbijl2n9UYC\nRRPoRKtfX4g4XA2t63oD+aqz6XYv3l859zmRDVXzS/fy6G3IwR7xJiUzR9fC\nzQWYYNikNuAbuScA6ZPfg6Fpwj8BAjCwEe5aWxS4z2F8IkQ2xsnV6sb3rT2t\n9LyW5827gwmctLdy8/7h2lwoSWg1YDKmMkOiqRSMDI0uOVA3gd1IehOE2RKs\nU5lvDXouB38G9q0dTsuzTdDnU8qwuAvvZyhehPNdW+Y8PV7auQsTKJU9B5o/\nQ9RiwbRLwBmg6qrL98CBafx/K9b65pQQf2AWsB0101NZBdG3hsc4YM2rGy3W\nDpRgt9OOf2iXeDXRsjKbSV800Y08W07ZuVF2Uqtj9HXeJ/yzCAC8FJMUQcD4\ngbA1OXXgbCKav7hoGYPJsjj9G7j5PnevMwRjVxJN07xzn/Q7eeUenkLGrRwG\niXxQ\r\n=64b+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnSyhI6zDD5ehfFDqr/Hyz2dgzcAJi5bRo6/jDPWu6HwIhAI5ZzIDw0n15zj8QJg0AtzF6DwpnnD+M/SUkkBnqSl2E"}]},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.3.0_1549917314459_0.7774250606864046"},"_hasShrinkwrap":false},"0.3.1":{"name":"use-persisted-state","publishConfig":{"tag":"latest"},"version":"0.3.1","description":"A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.12.4","react":"^16.8.0","react-dom":"^16.8.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"dependencies":{"@use-it/event-listener":"^0.1.2"},"gitHead":"2a8bc893508333becc5a40e8ca0f5288b24cb751","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.3.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-M4TlZG4qXXkQ47Zph7hhjAlRixMWXtvhAWzlqrpfUFMq0QAP6vZIX6gv/WhpMl+QViEOOX6NYHbjAOxfoq4B2w==","shasum":"73ce3156dc137b3a2c1227c3380976415ce8c7d2","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.3.1.tgz","fileCount":7,"unpackedSize":13584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfttboCRA9TVsSAnZWagAAR6wQAIyO+9zlqBM593QJa1PG\nLPCAXDYzApuReqRcm2lEi+VYK9I4friN6m9nUBow2JWRun62PjG/Y8eEJDcB\nwldFo1o9cnfhwbtWb46mwy3fS9lKeqryf+9+VIyQjFJK+zsS7U+AsdkbVjcn\nMFNQtBc23lFs6noaCpPMi7kgeUXWqivkrMmPMuVXA1dzM4EUyJffiUKrWxwE\n9ZWM4Da0QJQbaGF2lxDl2p0XU8nFNhV7Sxb9QYrWAYTWFSpm71YOWr1r0aEV\nkOafOEIuA1lmdo2H6I5Gyz5fdUdfUERfN5ZYi1gJCEpMO6OMpMIp9KqvllJe\nWKgOuRIvcUTjaLy3no0EvTtW7YUItEFD84bXOJqnYjPYK+w+BxcCxjDy2gFU\n63Pk5Vz12quiPMnHayrKIG1Vf9rIMWLueOSDkpkfnYy5Lke+Q1j1HPRnTPwt\nzJbAg2MJ2OoiIrEu57Sv+aruoveyilMgluYC6CBjKY2ddjx3bgmxdapTgLje\nsjHivBVt9mp/7WfY9ShBEDzdwefUXCzfT+SATh5vmUfBrd2a1KvWJrPHwSvP\nkkxxTC1TTXQlyQzfit37BOXqDBiY6++9kkCIiA7AlnTDws2x3FLxN9PeTzXx\n1pGSMekBUOwcMamiLogPE0V1rt11go0vvIntteR68RL6GYRia3ZUVIcL9iLe\nD/oW\r\n=I1pp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWVVzF4AV6tuEOxOX736n65diJXkZhlIiOTHZZE2opTAIgZ0I7V74YqwXMZfwTTa1h9N9SusE/zDFYhHxOXowTgdE="}]},"_npmUser":{"name":"donavon","email":"github@donavon.com"},"directories":{},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.3.1_1605818087772_0.6421050765807146"},"_hasShrinkwrap":false},"0.3.2":{"name":"use-persisted-state","publishConfig":{"tag":"latest"},"version":"0.3.2","description":"A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.12.4","react":"^16.8.0","react-dom":"^16.8.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"dependencies":{"@use-it/event-listener":"^0.1.2"},"gitHead":"da929e235960653d1e03657adbdd34634fc9ea93","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.3.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LzHxyRub45PfO7AEIboGvckLVymL0G6/Q4VPiW/vIrPIyxpopONwngISRX5k9ymOXlJq9zIqi5GZRKOdBIL+0Q==","shasum":"df14d4391f31d200998f5cf630ef721972054f35","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.3.2.tgz","fileCount":7,"unpackedSize":13584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftuUqCRA9TVsSAnZWagAAB4gP/2tQMj0isUZw7Ri5Y4lV\nGKyngs1iK2llHlwn/sXQFwFm2EagOKbW1LT1pE/CfWkA+fQl4ulIk/FeWzMS\nPZRQf/NMpoNkTTLLVg/T9jcpGzbglg+4EKtn42qb6emQMti6R7GwuZtLX7UQ\nsZfoPkRADaGA8diU1m+wGvaIL59X67WzgGsuwxH589Yv1UxHNIxwDKtV5Wst\nAX549qP0OJBLRR3B2d8ss8FCk0pmmox0uVZd1gvv+HMoOqiCBCfaU79TDA0R\n/tkD5qfz+1HQDtvZ8bRlZDijw8fz+Lbf7XTeOQqwuQB9gavh9x3d6GB8eR8n\n+rtsuFrO0i8jisHx3Mepx5YZgCOdAoWkLwnA4ZOTI8u9B66x9sMz0LfupueS\n3pdBdTzXoJm8tGM1JqhGo7Kl/TD2V2EKXUBA1XQJE2qFmwYxeRiNtuTVqTUZ\n6tR3LQ+3jFXNgqT3Li2xaQhLCILXBhaKHw5EHs9NgsOV8K+1jkKLQ3ryDgOj\n315g7pbYDhxY3IocnGu/MibS/dITyO9xqum0o14qmtWsD3id+UH6X0nbvhuB\nbmUDJFl81eM4asZwtCvpRDeLyzA8S+rJ0xIctnZyIhM4LdrYG/pRoMNKLvru\n6nS6tQHhWcuLqCGJfV/Vx6VRfA49n4e7+jg4qLCVgFZPRGkVZbdhcbc0UQWz\nojYH\r\n=Aud3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAwE+xILXyCVc9pqjYc0sPNk29htj1vjVa5Ypxg5aRUtAiEA8GAW5jIhNx/OBDupsLFvIq5HzNC4133+NQBWgitIhJo="}]},"_npmUser":{"name":"donavon","email":"github@donavon.com"},"directories":{},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.3.2_1605821738094_0.6759537331680692"},"_hasShrinkwrap":false},"0.3.3":{"name":"use-persisted-state","publishConfig":{"tag":"latest"},"version":"0.3.3","description":"A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.","main":"dist/use-persisted-state.js","umd:main":"dist/use-persisted-state.umd.js","module":"dist/use-persisted-state.m.js","source":"src/index.js","license":"MIT","repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"scripts":{"prepublishOnly":"npm run build","lint":"eslint src","test":"jest --verbose --coverage --silent","test:watch":"jest --watch --runInBand --silent","prebuild":"npm run lint && npm t && rimraf dist","build":"microbundle -o dist/ --sourcemap false --target web","dev":"microbundle watch -o dist/ --sourcemap false --compress false"},"keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"author":{"name":"donavon"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","@babel/preset-react":"^7.0.0","babel-core":"^7.0.0-bridge.0","babel-jest":"^23.6.0","eslint":"^5.10.0","eslint-config-amex":"^9.0.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^23.6.0","jest-dom":"^3.0.0","microbundle":"^0.12.4","react":"^16.8.0","react-dom":"^16.8.0","rimraf":"^2.6.2"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0"},"jest":{"coverageThreshold":{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}},"dependencies":{"@use-it/event-listener":"^0.1.2"},"gitHead":"2a33963050b209f8cc27060a32109978414a4dc7","bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"},"homepage":"https://github.com/donavon/use-persisted-state#readme","_id":"use-persisted-state@0.3.3","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pCNlvYC8+XjRxwnIut4teGC9f2p9aD88R8OGseQGZa2dvqG/h1vEGk1vRE1IZG0Vf161UDpn+NlW4+UGubQflQ==","shasum":"5e0f2236967cec7c34de33abc07ae6818e7c7451","tarball":"https://registry.npmjs.org/use-persisted-state/-/use-persisted-state-0.3.3.tgz","fileCount":7,"unpackedSize":13907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftuj3CRA9TVsSAnZWagAAb9wP+gIVhfd9F7D+TJCuY1Y3\naHu8RC+q4tAtN1XADSTOK5tkNIIB0hyCtdha+usR1xOCD6VXg4cDJY26T/Kt\n1oxKbMGmSzXUKySoWa/Bmi/BEVElOU5eZfw0psZLoPnhYBggajTD7+u9CGZ0\noQ83/R45O07rgTgeV1WS4eLwLqyOJs0hii+JSRkV+zu+DRpFi8/5eeRgfib8\nOcV5MySiOpbBrmcVwWS0RBtWO0yJuhNHnIg3tRen2BjNW/+092LrRyKFZ1eF\n42pWnO3g6ybvTB3JEL6c0KrwKJHadF9q+6UmFA6ArmesVNfyxjEC+MTgywzZ\nBbzu+hNIJaKFgRU3iJyLYalnOjQI/ulco2EMqNBcBj8eh5iVJGPjz6Caqb8Q\n4ri+mhVcwQdRnyl15hiNSUaf6Bee06Cz2/LRTNiDDcy1BTGFn7AmcUWLuE9d\n1Bo9VlNlE3qPpSGaQ/OrQsum1kwWQdfty0FPp8c8VJuivkagRm2UOmDeRzdi\nAu/P5+xtflTODODgeGMjn5nx4c6qWKGLj6Q2OyfBeqQ1P8uKkESUXibQvOM0\nZr2cIdYGx4BgI6fOuwWmnsQ/Mh+B/GaqkJl2K2M0+SNeiKyjUWtQjmFll7wC\nkcp/bL2WwwctfHgcV43BHeRdYe8xB2XbtGW0+OHGYgD5bWthq8SP89FeDmKD\nakh3\r\n=JE9M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChzVHRt0ATgfVTbiI2ZXf9ownIAniHo0w+KsYXrAnPcAIhALbr+TvdlpdeBoPmg6YTAMQZS0/fYlbNFyWX+VSY+1vP"}]},"_npmUser":{"name":"donavon","email":"github@donavon.com"},"directories":{},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-persisted-state_0.3.3_1605822711016_0.12995117513048604"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-13T19:21:21.044Z","0.0.0":"2019-01-13T19:21:21.150Z","modified":"2022-05-22T22:27:17.488Z","0.1.0":"2019-02-07T19:30:19.874Z","0.1.1":"2019-02-07T20:59:32.112Z","0.2.0":"2019-02-10T05:54:02.475Z","0.3.0-alpha.0":"2019-02-11T19:39:25.091Z","0.3.0":"2019-02-11T20:35:14.595Z","0.3.1":"2020-11-19T20:34:47.903Z","0.3.2":"2020-11-19T21:35:38.228Z","0.3.3":"2020-11-19T21:51:51.155Z"},"maintainers":[{"name":"donavon","email":"github@donavon.com"}],"license":"MIT","readme":"# use-persisted-state\n\nA custom [React Hook](https://reactjs.org/docs/hooks-overview.html) that provides a multi-instance,\nmulti-tab/browser shared and persistent state.\n\n[![npm version](https://badge.fury.io/js/use-persisted-state.svg)](https://badge.fury.io/js/use-persisted-state) [![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors)\n\n\n`use-persisted-state` is not a hook itself, but is a factory that accepts a storage `key`\nand an optional storage provider (default = `localStorage`) and returns a hook\nthat you can use as a direct replacement for `useState`.\n\n## Features\n\n💾 Persists the state to `localStorage`\n\n🖥 Syncs between tabs and/or browser windows\n\n📑 Shares state w/multiple hooks on a page\n\n## Requirement\n\nTo use `use-persisted-state`, you must use `react@16.8.0` or greater which includes Hooks.\n\n## Installation\n\n```sh\n$ npm i use-persisted-state\n```\n\n## Example\n\nLet's take a look at how you can use `use-persisted-state`.\nHere we have an example of a typical up/down counter.\n\n```js\nimport { useState } from 'react';\n\nconst useCounter = initialCount => {\n  const [count, setCount] = useState(initialCount);\n\n  return {\n    count,\n    increment: () => setCount(currentCount => currentCount + 1),\n    decrement: () => setCount(currentCount => currentCount - 1),\n  };\n};\n\nexport default useCounter;\n```\n\nLet's replace the import of `react` with an import from `use-persisted-state`.\nAnd we'll call `createPersistedState` (the factory function).\nThis will return a `useCounterState` hook that we can use in place of `useState`.\n\nThe complete code is as follows.\n\n```js\nimport createPersistedState from 'use-persisted-state';\nconst useCounterState = createPersistedState('count');\n\nconst useCounter = initialCount => {\n  const [count, setCount] = useCounterState(initialCount);\n\n  return {\n    count,\n    increment: () => setCount(currentCount => currentCount + 1),\n    decrement: () => setCount(currentCount => currentCount - 1),\n  };\n};\n\nexport default useCounter;\n```\n\nThe state is shared with any other hook using the same key, either\non the same page, across tabs, or even browser windows.\n\nFor example, open two copies of your app in two tabs or even two windows.\nAny changes to state in one tab will be rendered on the other tab.\n\nYou can also close the browser and the next time you run your app,\nthe state will be rendered as it was before you closed your browser.\n\n## License\n\n**[MIT](LICENSE)** Licensed\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/all-contributors/all-contributors#emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"http://donavon.com\"><img src=\"https://avatars3.githubusercontent.com/u/887639?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Donavon West</b></sub></a><br /><a href=\"#infra-donavon\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"https://github.com/donavon/use-persisted-state/commits?author=donavon\" title=\"Tests\">⚠️</a> <a href=\"#example-donavon\" title=\"Examples\">💡</a> <a href=\"#ideas-donavon\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#maintenance-donavon\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/donavon/use-persisted-state/pulls?q=is%3Apr+reviewed-by%3Adonavon\" title=\"Reviewed Pull Requests\">👀</a> <a href=\"#tool-donavon\" title=\"Tools\">🔧</a> <a href=\"https://github.com/donavon/use-persisted-state/commits?author=donavon\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/karol-majewski\"><img src=\"https://avatars1.githubusercontent.com/u/20233319?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Karol Majewski</b></sub></a><br /><a href=\"https://github.com/donavon/use-persisted-state/commits?author=karol-majewski\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/dispix\"><img src=\"https://avatars1.githubusercontent.com/u/11643701?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Octave Raimbault</b></sub></a><br /><a href=\"https://github.com/donavon/use-persisted-state/commits?author=dispix\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://morello.dev\"><img src=\"https://avatars0.githubusercontent.com/u/19588613?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Dennis Morello</b></sub></a><br /><a href=\"https://github.com/donavon/use-persisted-state/commits?author=dennismorello\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"http://fdetry.be\"><img src=\"https://avatars0.githubusercontent.com/u/3214565?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Florent</b></sub></a><br /><a href=\"https://github.com/donavon/use-persisted-state/commits?author=Fridus\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/mungojam\"><img src=\"https://avatars1.githubusercontent.com/u/3154635?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Mark Adamson</b></sub></a><br /><a href=\"https://github.com/donavon/use-persisted-state/commits?author=mungojam\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://vitordino.com\"><img src=\"https://avatars2.githubusercontent.com/u/5063967?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Vitor Dino</b></sub></a><br /><a href=\"https://github.com/donavon/use-persisted-state/commits?author=vitordino\" title=\"Code\">💻</a></td>\n  </tr>\n</table>\n\n<!-- markdownlint-enable -->\n<!-- prettier-ignore-end -->\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","readmeFilename":"README.md","description":"A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.","homepage":"https://github.com/donavon/use-persisted-state#readme","keywords":["react-hooks","hooks","react","utils","lib","persistent","localstorage"],"repository":{"type":"git","url":"git+https://github.com/donavon/use-persisted-state.git"},"author":{"name":"donavon"},"bugs":{"url":"https://github.com/donavon/use-persisted-state/issues"}}