Skip to content

docs(combine): add object constraints to T and U in signature#3506

Merged
dbritto-dev merged 1 commit into
pmndrs:mainfrom
hyun907:docs/combine-object-constraints
May 22, 2026
Merged

docs(combine): add object constraints to T and U in signature#3506
dbritto-dev merged 1 commit into
pmndrs:mainfrom
hyun907:docs/combine-object-constraints

Conversation

@hyun907

@hyun907 hyun907 commented May 22, 2026

Copy link
Copy Markdown
Contributor

Related Bug Reports or Discussions

N/A — found via source/docs signature audit, matching the convention recently applied in #3491, #3492, #3493.

Summary

The combine signature in docs/reference/middlewares/combine.md is missing the extends object constraints on T and U that exist in the source.

Current docs signature:

combine<T, U>(
  initialState: T,
  additionalStateCreatorFn: StateCreator<T, [], [], U>,
): StateCreator<Omit<T, keyof U> & U, [], []>

Source signature in src/middleware/combine.ts:

export function combine<
  T extends object,
  U extends object,
  Mps extends [StoreMutatorIdentifier, unknown][] = [],
  Mcs extends [StoreMutatorIdentifier, unknown][] = [],
>(
  initialState: T,
  create: StateCreator<T, Mps, Mcs, U>,
): StateCreator<Write<T, U>, Mps, Mcs>

Without the constraints, the docs imply that combine accepts primitives for initialState.

For example, combine({ count: 0 }, ...) works, while combine(0, ...) is rejected by the source's T extends object constraint.

This matches the existing convention in docs/reference/middlewares/redux.md, which preserves the source's A extends { type: string } constraint in its signature.

Diff

- combine<T, U>(initialState: T, additionalStateCreatorFn: StateCreator<T, [], [], U>): StateCreator<Omit<T, keyof U> & U, [], []>
+ combine<T extends object, U extends object>(initialState: T, additionalStateCreatorFn: StateCreator<T, [], [], U>): StateCreator<Omit<T, keyof U> & U, [], []>

Docs-only change — no changeset needed.

Check List

  • pnpm run fix for formatting and linting code and docs

@vercel

vercel Bot commented May 22, 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 22, 2026 10:20am

Request Review

@codesandbox-ci

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 22, 2026

Copy link
Copy Markdown

commit: 1beb166

@dbritto-dev
dbritto-dev merged commit d690ec2 into pmndrs:main May 22, 2026
33 checks passed
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.

2 participants