@lwc/state Typescript definitions no longer typecheck updating functions
- Dominant language
- No language data
- Stars
- 571
- Forks
- 80
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 3
Description
### Summary
Previously, I was able to use my own typescript definitions to define the shape of returned state from `defineState` function - now, the typescript definitions shipping with the CLI force my updating functions to be of type `(...args: unknown[]) => void` - whereas I was previously able to enforce type checking at the call site of an updating function.
### Steps To Reproduce
[Example repository, with my type definition file, and two example LWCs with comments.](https://github.com/simonfcodes/state-mgr-example)
1. Implement a new Typescript-enabled SFDX project
2. Define state manager using defineState function
3. Wrap a call to `setAtom` inside an updating function
4. Export the function in the return statement. Typescript will provide an error if the exported function is not typed as `(args: unknown[]) => void`
### Expected result
Functions returned as part of defineState should be correctly typed.
### Actual result
Functions returned as part of defineState need to be typed as `(...args: unknown[]) => void` to prevent errors.
### System Information
Using zsh, macOs, most recent version of CLI.
```json
{
"architecture": "darwin-arm64",
"cliVersion": "@salesforce/cli/2.142.7",
"nodeVersion": "node-v24.3.0",
"osVersion": "Darwin 25.4.0",
"rootPath": "/opt/homebrew/lib/node_modules/@salesforce/cli",
"shell": "zsh",
"pluginVersions": [
"@oclif/plugin-autocomplete 3.2.53 (core)",
"@oclif/plugin-commands 4.1.59 (core)",
"@oclif/plugin-help 6.2.53 (core)",
"@oclif/plugin-not-found 3.2.88 (core)",
"@oclif/plugin-plugins 5.4.80 (core)",
"@oclif/plugin-search 1.2.52 (core)",
"@oclif/plugin-update 4.7.54 (core)",
"@oclif/plugin-version 2.2.50 (core)",
"@oclif/plugin-warn-if-update-available 3.1.68 (core)",
"@oclif/plugin-which 3.2.58 (core)",
"@salesforce/cli 2.142.7 (core)",
"agent 1.43.0 (core)",
"apex 3.9.38 (core)",
"api 1.3.43 (core)",
"auth 4.4.5 (core)",
"code-analyzer 5.8.0 (user) published 196 days ago (Mon Dec 29 2025) (latest is 5.14.0)",
"data 4.0.110 (core)",
"deploy-retrieve 3.24.54 (core)",
"env 3.0.33 (user) published 687 days ago (Sun Aug 25 2024) (latest is 3.0.37)",
"info 3.4.144 (core)",
"lightning-dev 5.1.4 (user) published 184 days ago (Fri Jan 09 2026) (latest is 6.2.17)",
"limits 3.3.96 (core)",
"marketplace 1.3.35 (core)",
"org 5.11.12 (core)",
"packaging 2.30.1 (user) published 12 days ago (Tue Jun 30 2026)",
"schema 3.3.122 (core)",
"settings 2.4.89 (core)",
"signups 2.6.56 (user) published 219 days ago (Sat Dec 06 2025) (latest is 2.6.78)",
"sobject 1.4.117 (core)",
"telemetry 3.8.27 (core)",
"templates 56.18.12 (core)",
"trust 3.8.26 (core)",
"user 3.10.4 (core)",
"@salesforce/sfdx-plugin-lwc-test 1.2.1 (user) published 646 days ago (Fri Oct 04 2024)",
"sf-git-merge-driver 1.9.1 (user) published 13 days ago (Tue Jun 30 2026)",
"sfdmu 5.8.0 (user) published 9 days ago (Fri Jul 03 2026)",
"sfdx-git-delta 6.45.1 (user) published 17 days ago (Fri Jun 26 2026)",
"sfdx-hardis 7.20.0 (user) published 1 days ago (Sun Jul 12 2026)"
]
}
```
Contributor guide
Research direction
Start with the linked state-mgr-example repository and reproduce the TypeScript errors around defineState, setAtom, and the exported updating functions. Compare the shipped CLI definitions with the custom type definition shown there. Done means functions returned from defineState preserve their usable types without requiring (...args: unknown[]) => void.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100