diff --git a/README.md b/README.md index 36b7869..ef236b6 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,20 @@ -# useStateSnapshots - -A React hook to keep track of state changes for undo/redo functionality. - -![](./screenshot.png) - -Demo: https://codesandbox.io/s/peaceful-rgb-i6fuq +
+

+ +

+

useStateSnapshots

+

A React hook to keep track of state changes for undo/redo functionality.

+

+ npm bundle size + npm +

+
+ +## Demo + +https://codesandbox.io/s/use-state-snapshots-i6fuq + +![](screenshot.png) ## Features diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..919639f9a26848c73222beb7968a79195cc7132a GIT binary patch literal 9343 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