{"_id":"@blumintinc/use-deep-compare","_rev":"5-1b5fdb2ff80fb896109a242ae3656403","name":"@blumintinc/use-deep-compare","dist-tags":{"latest":"1.4.3"},"versions":{"1.4.0":{"name":"@blumintinc/use-deep-compare","version":"1.4.0","license":"MIT","_id":"@blumintinc/use-deep-compare@1.4.0","maintainers":[{"name":"oconnorjoseph","email":"oconnor.joseph@columbia.edu"},{"name":"brodie-m","email":"brodiedmcguire@gmail.com"}],"homepage":"https://github.com/BluMintInc/use-deep-compare#readme","bugs":{"url":"https://github.com/BluMintInc/use-deep-compare/issues"},"dist":{"shasum":"a2ee825488f6c6dcd602ab65ae33c52e6113bdb2","tarball":"https://registry.npmjs.org/@blumintinc/use-deep-compare/-/use-deep-compare-1.4.0.tgz","fileCount":13,"integrity":"sha512-8ccZ/a+zIzHaZiynTbLuOedpk7bHR4aQpGF/51sj6I2iyY032BMOLDw7rsuqLyOWJwteZR6Qz1HO1qpwvR8+pw==","signatures":[{"sig":"MEYCIQDegSeT53jJgfKcny1w401LbxfXKQVv57pHN5JYwzfbJgIhAL2VrLbid25EIaBZHNr7GleoUaY1YsiYwsthTeHr9HRW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11192},"babel":{"presets":["@babel/preset-typescript","@babel/preset-react"]},"gitHead":"3bc9dc698c41815073684245d2fdfee3a7d0c5ef","private":false,"scripts":{"tsc":"tsc --noEmit","build":"pika build"},"_npmUser":{"name":"oconnorjoseph","email":"oconnor.joseph@columbia.edu"},"@pika/pack":{"pipeline":[["@pika/plugin-standard-pkg"],["@pika/plugin-build-node"],["@pika/plugin-build-web"],["@pika/plugin-build-types"]]},"repository":{"url":"git+https://github.com/BluMintInc/use-deep-compare.git","type":"git"},"_npmVersion":"10.9.2","description":"React hooks, except using deep comparison on the inputs, not reference equality","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react-fast-compare":"3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.0.0","@pika/pack":"0.5.0","typescript":"5.5.3","@types/react":"19.0.8","@babel/preset-react":"7.24.7","@pika/plugin-build-web":"0.9.2","@pika/plugin-build-node":"0.9.2","@babel/preset-typescript":"7.24.7","@pika/plugin-build-types":"0.9.2","@pika/plugin-standard-pkg":"0.9.2"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/use-deep-compare_1.4.0_1742941471664_0.5415346374968542","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@blumintinc/use-deep-compare","version":"1.4.2","license":"MIT","_id":"@blumintinc/use-deep-compare@1.4.2","maintainers":[{"name":"oconnorjoseph","email":"oconnor.joseph@columbia.edu"},{"name":"brodie-m","email":"brodiedmcguire@gmail.com"}],"homepage":"https://github.com/BluMintInc/use-deep-compare#readme","bugs":{"url":"https://github.com/BluMintInc/use-deep-compare/issues"},"dist":{"shasum":"458fdd9514785ee234b27b7efd5e1d3e0dfb1289","tarball":"https://registry.npmjs.org/@blumintinc/use-deep-compare/-/use-deep-compare-1.4.2.tgz","fileCount":4,"integrity":"sha512-BG2VKU0Qyn0j6x7clCad2q/45VtPnpuJ6Kd0fdU4cqFI39tJJ/lXppYbkdsmpcfOyvq5mvy1Z6libYWOjLlUwg==","signatures":[{"sig":"MEYCIQCBdRD2q2LX/jRkwSlmPsf6hgF8Xcnq3sFD2Js9pp3TlQIhAJOmsPH9HLLGV0sIhO4d5CAiv43f3couPEiK9xdkpjem","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9612},"main":"dist-node/index.js","pika":true,"types":"dist-types/index.d.ts","esnext":"dist-src/index.js","module":"dist-web/index.js","gitHead":"a6d84303ba5a9f181fe22edf17308f678f80fd54","private":false,"_npmUser":{"name":"oconnorjoseph","email":"oconnor.joseph@columbia.edu"},"repository":{"url":"git+https://github.com/BluMintInc/use-deep-compare.git","type":"git"},"_npmVersion":"10.9.2","description":"React hooks, except using deep comparison on the inputs, not reference equality","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"react-fast-compare":"3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.0.0","@pika/pack":"0.5.0","typescript":"5.5.3","@types/react":"19.0.8","@babel/preset-react":"7.24.7","@pika/plugin-build-web":"0.9.2","@pika/plugin-build-node":"0.9.2","@babel/preset-typescript":"7.24.7","@pika/plugin-build-types":"0.9.2","@pika/plugin-standard-pkg":"0.9.2"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/use-deep-compare_1.4.2_1743438386117_0.8182003126687405","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@blumintinc/use-deep-compare","version":"1.4.3","license":"MIT","_id":"@blumintinc/use-deep-compare@1.4.3","maintainers":[{"name":"oconnorjoseph","email":"oconnor.joseph@columbia.edu"},{"name":"brodie-m","email":"brodiedmcguire@gmail.com"}],"homepage":"https://github.com/BluMintInc/use-deep-compare#readme","bugs":{"url":"https://github.com/BluMintInc/use-deep-compare/issues"},"dist":{"shasum":"68066ae009326053be8f4a14b863589c5a814341","tarball":"https://registry.npmjs.org/@blumintinc/use-deep-compare/-/use-deep-compare-1.4.3.tgz","fileCount":21,"integrity":"sha512-3E/j43hNiqfdG9viHfNEX99yCuiPg2Bse5cTpTmHp2X+CEJylJiFNWgMKm1XaSTzYU2h0WcIUiNU2Q0qglCtng==","signatures":[{"sig":"MEUCIQDamZZ4eExGqvyL7V5xijJoq8B1C811H4x4Y7nmzg2K7AIgUW/EV2v8Q6lNrrNBtyucDKeh8QTwTJhesvcroj9nQtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32563},"main":"dist-node/index.js","pika":true,"types":"dist-types/index.d.ts","esnext":"dist-src/index.js","module":"dist-web/index.js","gitHead":"d8adebb73bf74c4eb3c0143ec7af9a9daabc0bf0","private":false,"_npmUser":{"name":"oconnorjoseph","email":"oconnor.joseph@columbia.edu"},"repository":{"url":"git+https://github.com/BluMintInc/use-deep-compare.git","type":"git"},"_npmVersion":"10.9.2","description":"React hooks, except using deep comparison on the inputs, not reference equality","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","dependencies":{"react-fast-compare":"3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.0.0","@pika/pack":"0.5.0","typescript":"5.5.3","@types/react":"19.0.8","@babel/preset-react":"7.24.7","@pika/plugin-build-web":"0.9.2","@pika/plugin-build-node":"0.9.2","@babel/preset-typescript":"7.24.7","@pika/plugin-build-types":"0.9.2","@pika/plugin-standard-pkg":"0.9.2"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/use-deep-compare_1.4.3_1743438711011_0.7809670571737517","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-03-25T22:24:31.610Z","modified":"2026-04-29T01:17:41.204Z","1.4.0":"2025-03-25T22:24:31.839Z","1.4.2":"2025-03-31T16:26:26.410Z","1.4.3":"2025-03-31T16:31:51.189Z"},"bugs":{"url":"https://github.com/BluMintInc/use-deep-compare/issues"},"license":"MIT","homepage":"https://github.com/BluMintInc/use-deep-compare#readme","repository":{"url":"git+https://github.com/BluMintInc/use-deep-compare.git","type":"git"},"description":"React hooks, except using deep comparison on the inputs, not reference equality","maintainers":[{"email":"oconnor.joseph@columbia.edu","name":"oconnorjoseph"},{"email":"javier@blumint.io","name":"javier.blumint"}],"readme":"# Use Deep Compare\n\n<!-- prettier-ignore-start -->\n[![version][version-badge]][package]\n[![downloads][downloads-badge]][npmtrends]\n[![MIT License][license-badge]][license]\n<!-- prettier-ignore-end -->\n\n**Use Deep Compare** - React hooks, except using deep comparison on the inputs, not reference equality.\nRead about [Hooks](https://reactjs.org/docs/hooks-intro.html) feature.\n\n## Installation\n\n### With npm\n\n```sh\nnpm i use-deep-compare\n```\n\n### Or with yarn\n\n```sh\nyarn add use-deep-compare\n```\n\n### Or with pnpm\n\n```sh\npnpm add use-deep-compare\n```\n\n### Or with bun\n\n```sh\nbun add use-deep-compare\n```\n\n## Usage\n\n### useDeepCompareEffect\n\n```js\nimport React from \"react\";\nimport { useDeepCompareEffect } from \"use-deep-compare\";\n\nfunction App({ object, array }) {\n  useDeepCompareEffect(() => {\n    // do something significant here\n    return () => {\n      // return to clean up that significant thing\n    };\n  }, [object, array]);\n\n  return <div>{/* render significant thing */}</div>;\n}\n```\n\n### useDeepCompareCallback\n\n```js\nimport React from \"react\";\nimport { useDeepCompareCallback } from \"use-deep-compare\";\n\nfunction App({ object, array }) {\n  const callback = useDeepCompareCallback(() => {\n    // do something significant here\n  }, [object, array]);\n\n  return <div>{/* render significant thing */}</div>;\n}\n```\n\n### useDeepCompareLayoutEffect\n\n```js\nimport React from \"react\";\nimport { useDeepCompareLayoutEffect } from \"use-deep-compare\";\n\nfunction App({ object, array }) {\n  useDeepCompareLayoutEffect(() => {\n    // perform layout effects\n  }, [object, array]);\n\n  return <div>{/* render component */}</div>;\n}\n```\n\n### useDeepCompareMemo\n\n```js\nimport React from \"react\";\nimport { useDeepCompareMemo } from \"use-deep-compare\";\n\nfunction App({ object, array }) {\n  const memoized = useDeepCompareMemo(() => {\n    // do something significant here\n  }, [object, array]);\n\n  return <div>{/* render significant thing */}</div>;\n}\n```\n\n### useDeepCompareImperativeHandle\n\n```js\nimport React from \"react\";\nimport { useDeepCompareImperativeHandle } from \"use-deep-compare\";\n\nfunction App({ object, array }) {\n  const ref = React.useRef();\n  useDeepCompareImperativeHandle(ref, () => ({\n    // create imperative methods\n  }), [object, array]);\n\n  return <div ref={ref}>{/* render component */}</div>;\n}\n```\n\n### react-hooks/exhaustive-deps eslint warnings\n\nTo receive eslint warnings about missing array dependencies, just like for standard `useEffect`, `useCallback`, `useMemo`, ... hooks - extend you eslint config as follows:\n\n```json\n{\n  \"rules\": {\n    // ...\n    \"react-hooks/exhaustive-deps\": [\"warn\", {\n      \"additionalHooks\": \"(useDeepCompareEffect|useDeepCompareCallback|useDeepCompareMemo|useDeepCompareImperativeHandle|useDeepCompareLayoutEffect)\"\n    }]\n  }\n}\n```\n\n## Credits\n\n- Inspired by [use-deep-compare-effect](https://github.com/kentcdodds/use-deep-compare-effect).\n\n<!-- prettier-ignore-start -->\n[npm]: https://www.npmjs.com\n[version-badge]: https://img.shields.io/npm/v/use-deep-compare.svg\n[package]: https://www.npmjs.com/package/use-deep-compare\n[downloads-badge]: https://img.shields.io/npm/dt/use-deep-compare.svg\n[npmtrends]: http://www.npmtrends.com/use-deep-compare\n[license-badge]: https://img.shields.io/npm/l/use-deep-compare.svg\n[license]: https://github.com/BluMintInc/use-deep-compare/blob/master/LICENSE\n<!-- prettier-ignore-end -->\n","readmeFilename":"README.md"}