fix(devtools): improve type inference for Devtools initializer#3511
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
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. |
|
Size Change: 0 B Total Size: 13.1 kB ℹ️ View Unchanged
|
There was a problem hiding this comment.
Pull request overview
This PR updates the TypeScript typings for the devtools middleware to improve state type inference for the middleware initializer, addressing the inference problems reported in #3510.
Changes:
- Refines the
Devtoolstype signature to better infer the initializer’s state type (via a fallback inferred generic). - Adjusts the
Devtoolsinitializer/returnStateCreatorgenerics to reduce inference pitfalls in contextual typing scenarios.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@copilot let's fix the lint issue on tests/middlewareTypes.test.tsx |
Addressed in commit |
dai-shi
left a comment
There was a problem hiding this comment.
Thanks for the fix! The contribution is from @remziatay.
I'll merge it shortly.
|
@dai-shi actually, the PR was created 2 hours before @remziatay answer's but he came with the same solution haha |
|
Oh, I didn't realize that. Sorry about it. Thanks for your work! |
Bumps [zustand](https://github.com/pmndrs/zustand) from 5.0.12 to 5.0.14. Release notes *Sourced from [zustand's releases](https://github.com/pmndrs/zustand/releases).* > v5.0.14 > ------- > > This release fixes a type issue in devtools. > > What's Changed > -------------- > > * fix(devtools): improve type inference for Devtools initializer by [`@dbritto-dev`](https://github.com/dbritto-dev) in [pmndrs/zustand#3511](https://redirect.github.com/pmndrs/zustand/pull/3511) > > New Contributors > ---------------- > > * [`@TheSeydiCharyyev`](https://github.com/TheSeydiCharyyev) made their first contribution in [pmndrs/zustand#3487](https://redirect.github.com/pmndrs/zustand/pull/3487) > * [`@brofrong`](https://github.com/brofrong) made their first contribution in [pmndrs/zustand#3496](https://redirect.github.com/pmndrs/zustand/pull/3496) > * [`@hyun907`](https://github.com/hyun907) made their first contribution in [pmndrs/zustand#3506](https://redirect.github.com/pmndrs/zustand/pull/3506) > > **Full Changelog**: <pmndrs/zustand@v5.0.13...v5.0.14> > > v5.0.13 > ------- > > This release includes an improvement in the devtools middleware. > > What's Changed > -------------- > > * refactor(devtools): remove duplicate module augmentation by [`@mahmoodhamdi`](https://github.com/mahmoodhamdi) in [pmndrs/zustand#3443](https://redirect.github.com/pmndrs/zustand/pull/3443) > * fix(devtools): support Firefox/Safari stack format in findCallerName by [`@SBolsec`](https://github.com/SBolsec) in [pmndrs/zustand#3469](https://redirect.github.com/pmndrs/zustand/pull/3469) > > New Contributors > ---------------- > > * [`@mahmoodhamdi`](https://github.com/mahmoodhamdi) made their first contribution in [pmndrs/zustand#3443](https://redirect.github.com/pmndrs/zustand/pull/3443) > * [`@FelixEckl-vireq`](https://github.com/FelixEckl-vireq) made their first contribution in [pmndrs/zustand#3466](https://redirect.github.com/pmndrs/zustand/pull/3466) > * [`@KimHyeongRae0`](https://github.com/KimHyeongRae0) made their first contribution in [pmndrs/zustand#3471](https://redirect.github.com/pmndrs/zustand/pull/3471) > * [`@lstak`](https://github.com/lstak) made their first contribution in [pmndrs/zustand#3483](https://redirect.github.com/pmndrs/zustand/pull/3483) > * [`@AlexRixten`](https://github.com/AlexRixten) made their first contribution in [pmndrs/zustand#3474](https://redirect.github.com/pmndrs/zustand/pull/3474) > * [`@SBolsec`](https://github.com/SBolsec) made their first contribution in [pmndrs/zustand#3469](https://redirect.github.com/pmndrs/zustand/pull/3469) > > **Full Changelog**: <pmndrs/zustand@v5.0.12...v5.0.13> Commits * [`bfb2a9e`](pmndrs/zustand@bfb2a9e) 5.0.14 * [`62b2aff`](pmndrs/zustand@62b2aff) chore(deps): update dev dependencies ([#3513](https://redirect.github.com/pmndrs/zustand/issues/3513)) * [`ad77bd3`](pmndrs/zustand@ad77bd3) fix(devtools): improve type inference for Devtools initializer ([#3511](https://redirect.github.com/pmndrs/zustand/issues/3511)) * [`8476d2c`](pmndrs/zustand@8476d2c) update pnpm etc ([#3512](https://redirect.github.com/pmndrs/zustand/issues/3512)) * [`d690ec2`](pmndrs/zustand@d690ec2) docs(combine): add object constraints to T and U in signature ([#3506](https://redirect.github.com/pmndrs/zustand/issues/3506)) * [`fd8c601`](pmndrs/zustand@fd8c601) docs(react): add Action constraint to redux middleware signature ([#3492](https://redirect.github.com/pmndrs/zustand/issues/3492)) * [`2ce8226`](pmndrs/zustand@2ce8226) docs(immer): fix setPerson updater type in usage examples ([#3502](https://redirect.github.com/pmndrs/zustand/issues/3502)) * [`038b938`](pmndrs/zustand@038b938) docs(updating-state): use curried create form with explicit state type ([#3503](https://redirect.github.com/pmndrs/zustand/issues/3503)) * [`60a91b4`](pmndrs/zustand@60a91b4) docs(devtools): add missing devtools import to troubleshooting example ([#3501](https://redirect.github.com/pmndrs/zustand/issues/3501)) * [`efad169`](pmndrs/zustand@efad169) Update FUNDING.json * Additional commits viewable in [compare view](pmndrs/zustand@v5.0.12...v5.0.14) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Related Bug Reports or Discussions
Related Discussion: #3510
Regression PR: #2875
Summary
devtoolsinitializer in theDevtoolsmiddleware type.#3510scenario intests/middlewareTypes.test.tsxto ensurecreate<MyState>()(devtools((set, get) => ...))keepsset/getcorrectly inferred.Check List
pnpm run fixfor formatting and linting code and docs