Skip to content

fix(devtools): improve type inference for Devtools initializer#3511

Merged
dai-shi merged 7 commits into
mainfrom
hotfix-devtools-type-inference
May 28, 2026
Merged

fix(devtools): improve type inference for Devtools initializer#3511
dai-shi merged 7 commits into
mainfrom
hotfix-devtools-type-inference

Conversation

@dbritto-dev

@dbritto-dev dbritto-dev commented May 27, 2026

Copy link
Copy Markdown
Collaborator

Related Bug Reports or Discussions

Related Discussion: #3510
Regression PR: #2875

Summary

  • Improves type inference for the devtools initializer in the Devtools middleware type.
  • Adds a dedicated type-level regression test for the #3510 scenario in tests/middlewareTypes.test.tsx to ensure create<MyState>()(devtools((set, get) => ...)) keeps set/get correctly inferred.

Check List

  • pnpm run fix for formatting and linting code and docs

Copilot AI review requested due to automatic review settings May 27, 2026 16:01
@vercel

vercel Bot commented May 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
zustand-demo Ready Ready Preview, Comment May 28, 2026 6:40am

Request Review

@codesandbox-ci

codesandbox-ci Bot commented May 27, 2026

Copy link
Copy Markdown

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.

@pkg-pr-new

pkg-pr-new Bot commented May 27, 2026

Copy link
Copy Markdown

commit: 488862f

@github-actions

github-actions Bot commented May 27, 2026

Copy link
Copy Markdown

Size Change: 0 B

Total Size: 13.1 kB

ℹ️ View Unchanged
Filename Size
dist/esm/index.mjs 64 B
dist/esm/middleware.mjs 4.1 kB
dist/esm/middleware/immer.mjs 212 B
dist/esm/react.mjs 342 B
dist/esm/react/shallow.mjs 198 B
dist/esm/shallow.mjs 82 B
dist/esm/traditional.mjs 412 B
dist/esm/vanilla.mjs 405 B
dist/esm/vanilla/shallow.mjs 557 B
dist/index.js 244 B
dist/middleware.js 4.11 kB
dist/middleware/immer.js 231 B
dist/react.js 357 B
dist/react/shallow.js 213 B
dist/shallow.js 189 B
dist/traditional.js 426 B
dist/vanilla.js 418 B
dist/vanilla/shallow.js 568 B

compressed-size-action

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 Devtools type signature to better infer the initializer’s state type (via a fallback inferred generic).
  • Adjusts the Devtools initializer/return StateCreator generics to reduce inference pitfalls in contextual typing scenarios.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/middleware/devtools.ts Outdated
Comment thread src/middleware/devtools.ts Outdated
@dbritto-dev

dbritto-dev commented May 27, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot let's fix the lint issue on tests/middlewareTypes.test.tsx

Copilot AI commented May 27, 2026

Copy link
Copy Markdown
Contributor

@copilot let's fix the lint issue on tests/middlewareTypes.test.tsx

Addressed in commit d3cdcfe with a minimal lint fix in tests/middlewareTypes.test.tsx.

@dai-shi dai-shi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix! The contribution is from @remziatay.

I'll merge it shortly.

@dbritto-dev

Copy link
Copy Markdown
Collaborator Author

@dai-shi actually, the PR was created 2 hours before @remziatay answer's but he came with the same solution haha

@dai-shi

dai-shi commented May 28, 2026

Copy link
Copy Markdown
Member

Oh, I didn't realize that. Sorry about it. Thanks for your work!

@dai-shi dai-shi merged commit ad77bd3 into main May 28, 2026
32 checks passed
@dai-shi dai-shi deleted the hotfix-devtools-type-inference branch May 28, 2026 09:46
mergify Bot added a commit to robfrank/linklift that referenced this pull request Jun 10, 2026
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)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=zustand&package-manager=npm\_and\_yarn&previous-version=5.0.12&new-version=5.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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants