
Show HN: A Simple LocalStorage Hook in React - r0rshrk
https://www.npmjs.com/package/local-storage-hook
======
mdtusz
Mirroring other comments, this seems a bit trivial to be its own package and
looking at the source, it seems to not cover cases where the local storage
value can't be parsed.

[https://usehooks.com/useLocalStorage/](https://usehooks.com/useLocalStorage/)
has a safer implementation and is free to copy (Unlicense).

~~~
brudgers
It seems less trivial than PadLeft.

[https://arstechnica.com/information-
technology/2016/03/rage-...](https://arstechnica.com/information-
technology/2016/03/rage-quit-coder-unpublished-17-lines-of-javascript-and-
broke-the-internet/)

~~~
crtlaltdel
as a joke i got a shirt with left-pad's source printed on it.

#neverforget

~~~
quickthrower2
I was playing with String.prototype.padLeft earlier and boy that has weird
semantics. For the padding length, strings are parsed. NaN is 0, Infinity
throws an error, negative Infinity is 0, true is 1. Good ol’ JS!

------
darknoon
It is a difficult to recommend a small package that is GPLv3, since your
entire app would have to be licensed appropriately (since it runs in the same
process).

For projects like Blender, where development is a self-reinforcing ecosystem I
appreciate what the GPL does, here not so much.

~~~
crtlaltdel
i suspect the choice of GPLv3 was not well informed, given the nature of the
code in question.

------
jbaudanza
I have noticed that, in the wild, referencing window.localStorage at all will
raise a security exception in some browsers. If this happens inside of a React
hook, it will unmount everything up to the nearest componentDidCatch(). In
practice, everything involving localStorage needs to make liberal use of try,
catch blocks.

~~~
andrew_
Seconded. localStorage can bite in bad ways, and the unmounting concerns are
valid.

------
andrew_
GPLV3 is an _interesting_ choice for a license for such a small amount of code
(17 lines [0])

[0] [https://github.com/akash-joshi/local-storage-
hook/blob/maste...](https://github.com/akash-joshi/local-storage-
hook/blob/master/src/index.js)

------
vhakulinen
Is the react hook code so complicated that when it totals up to 17 lines of
code[1], it needs to become a npm package? The code it self looks neat and
clean - even more reason to just write your own hook.

1: [https://github.com/akash-joshi/local-storage-
hook/blob/7d593...](https://github.com/akash-joshi/local-storage-
hook/blob/7d5933b8b06c965480ec3f2d2ccd911a595191a1/src/index.js)

~~~
r0rshrk
Exactly, it can be treated as an example. It's an npm package so that I can
reuse the code :)

------
r0rshrk
It has been a fun journey implementing hooks in React. Let me know your
thoughts on the code :)

~~~
modarts
“Journey” is a bit of a stretch here, no? :)

This is a few lines of pretty trivial code

~~~
dang
Can you please review the Show HN guidelines? I appreciate that you're not
exactly flaming the OP here, but still, the idea is to respond more charitably
to people's work. If you know more than others, find a constructive way to
express that, such as by teaching them—and by extension, the rest of
us—something related to what they've done so far.

[https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

~~~
modarts
This is a great point, and on a second reading my comment did come off as a
little insensitive -- will leave it up to give others context and make this a
teachable moment for all of us to improve the level of discourse :)

------
Izkata
I feel like the "it's a bit small for a package" comments have forgotten how
js-land is going... For example, check out is-number:
[https://www.npmjs.com/package/is-number](https://www.npmjs.com/package/is-
number)

~~~
bluetidepro
> I feel like the "it's a bit small for a package" comments have forgotten how
> js-land is going... For example, check out is-number:
> [https://www.npmjs.com/package/is-number](https://www.npmjs.com/package/is-
> number)

"Two wrongs don't make a right"

