pmndrs / jotai

👻 Primitive and flexible state management for React
https://jotai.org
MIT License
18.34k stars 589 forks source link

experimental(core): expose unstable_derive #2652

Closed dai-shi closed 1 month ago

dai-shi commented 2 months ago

Another take related with #2609.

This is an experimental unstable feature. Please do not use it in production. Can change/remove it at anytime without notice.

vercel[bot] commented 2 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
jotai ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 13, 2024 0:34am
codesandbox-ci[bot] commented 2 months ago

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

github-actions[bot] commented 2 months ago

Size Change: +831 B (+0.94%)

Total Size: 89 kB

Filename Size Change
./dist/esm/vanilla.mjs 3.98 kB +144 B (+3.76%)
./dist/system/vanilla.development.js 4.07 kB +150 B (+3.82%)
./dist/system/vanilla.production.js 2.12 kB +52 B (+2.51%)
./dist/umd/vanilla.development.js 5.12 kB +193 B (+3.92%)
./dist/umd/vanilla.production.js 2.8 kB +103 B (+3.82%)
./dist/vanilla.js 5.02 kB +189 B (+3.91%)
ℹ️ View Unchanged | Filename | Size | | :--- | :---: | | `./dist/babel/plugin-debug-label.js` | 932 B | | `./dist/babel/plugin-react-refresh.js` | 1.14 kB | | `./dist/babel/preset.js` | 1.41 kB | | `./dist/esm/babel/plugin-debug-label.mjs` | 1 kB | | `./dist/esm/babel/plugin-react-refresh.mjs` | 1.19 kB | | `./dist/esm/babel/preset.mjs` | 1.49 kB | | `./dist/esm/index.mjs` | 62 B | | `./dist/esm/react.mjs` | 1.02 kB | | `./dist/esm/react/utils.mjs` | 746 B | | `./dist/esm/utils.mjs` | 67 B | | `./dist/esm/vanilla/utils.mjs` | 5.12 kB | | `./dist/index.js` | 242 B | | `./dist/react.js` | 1.06 kB | | `./dist/react/utils.js` | 1.39 kB | | `./dist/system/babel/plugin-debug-label.development.js` | 1.1 kB | | `./dist/system/babel/plugin-debug-label.production.js` | 775 B | | `./dist/system/babel/plugin-react-refresh.development.js` | 1.29 kB | | `./dist/system/babel/plugin-react-refresh.production.js` | 928 B | | `./dist/system/babel/preset.development.js` | 1.59 kB | | `./dist/system/babel/preset.production.js` | 1.14 kB | | `./dist/system/index.development.js` | 252 B | | `./dist/system/index.production.js` | 183 B | | `./dist/system/react.development.js` | 1.17 kB | | `./dist/system/react.production.js` | 715 B | | `./dist/system/react/utils.development.js` | 860 B | | `./dist/system/react/utils.production.js` | 462 B | | `./dist/system/utils.development.js` | 257 B | | `./dist/system/utils.production.js` | 187 B | | `./dist/system/vanilla/utils.development.js` | 5.33 kB | | `./dist/system/vanilla/utils.production.js` | 3.21 kB | | `./dist/umd/babel/plugin-debug-label.development.js` | 1.08 kB | | `./dist/umd/babel/plugin-debug-label.production.js` | 852 B | | `./dist/umd/babel/plugin-react-refresh.development.js` | 1.27 kB | | `./dist/umd/babel/plugin-react-refresh.production.js` | 1 kB | | `./dist/umd/babel/preset.development.js` | 1.54 kB | | `./dist/umd/babel/preset.production.js` | 1.22 kB | | `./dist/umd/index.development.js` | 383 B | | `./dist/umd/index.production.js` | 328 B | | `./dist/umd/react.development.js` | 1.18 kB | | `./dist/umd/react.production.js` | 786 B | | `./dist/umd/react/utils.development.js` | 1.53 kB | | `./dist/umd/react/utils.production.js` | 1.01 kB | | `./dist/umd/utils.development.js` | 399 B | | `./dist/umd/utils.production.js` | 342 B | | `./dist/umd/vanilla/utils.development.js` | 6.33 kB | | `./dist/umd/vanilla/utils.production.js` | 3.85 kB | | `./dist/utils.js` | 247 B | | `./dist/vanilla/utils.js` | 6.19 kB |

compressed-size-action

github-actions[bot] commented 2 months ago

LiveCodes Preview in LiveCodes

Latest commit: 91d24702ea3ec71d722f21a61230fc03292adf5e
Last updated: Aug 13, 2024 12:34am (UTC)

Playground Link
React demo https://livecodes.io?x=id/ALH2YQ6NN

See documentations for usage instructions.

dai-shi commented 2 months ago
image

Ah, I don't like the code increase and the complexity... Hope there's a better idea.

dai-shi commented 2 months ago

I'm not even sure if it's correctly implemented. test cases may help, but it feels like a bad design.

dai-shi commented 2 months ago
image

It's a bit better now. The code isn't very explicit compared to context, but it's less complicated I suppose.

dmaskasky commented 2 months ago

Any concern with store.unstable_derive being confused with jotai-derive? https://github.com/pmndrs/jotai/pull/2656

dai-shi commented 2 months ago

I think it's fine.

dai-shi commented 1 month ago

@dmaskasky I will merge this. It doesn't mean we finalize it yet. We hope it though.

dmaskasky commented 1 month ago

Ok, makes sense. In a few weeks I will try again to make this work. I might need some more help though.