xstate
xstate copied to clipboard
Call `complete` listeners exclusively when the actor reaches its done status
related to https://github.com/statelyai/xstate/discussions/4608
this removes the ability to listen for "on stop" but complete was already not called in different scenarios for stopped snapshots:
So this is currently inconsistent, one way or another, and we should unify it. When it comes to the "on stop" listener - personally, I just don't see a lot of use cases for it. A different modeling approach is always possible and I'd prefer to steer people towards explicit modeling and away from adding implicit ad-hoc logic in listeners like this.
🦋 Changeset detected
Latest commit: 984bdfabb5abe44e048aa5be5d61a477c87f97be
The changes in this PR will be included in the next version bump.
This PR includes changesets to release 1 package
| Name | Type |
|---|---|
| xstate | Minor |
Not sure what this means? Click here to learn what changesets are.
Click here if you're a maintainer who wants to add another changeset to this PR
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.
Latest deployment of this branch, based on commit 984bdfabb5abe44e048aa5be5d61a477c87f97be:
| Sandbox | Source |
|---|---|
| XState Example Template | Configuration |
| XState React Template | Configuration |
For "on stop", which is still an important "event" to listen for, we can just listen for the snapshot status === 'stopped', right?
For "on stop", which is still an important "event" to listen for
Why? 😉 Whenever I think about it, I always conclude that I wouldn't ever want to listen to it. subscribe is currently mainly used to notify people about a meaningful change in the underlying data and I think that, more often than not, people wouldn't consider a stopped snapshot something that they need to account for. The stopped snapshot is important for us internally but users should rarely interact with it in their code.
I think it's important to back up the claim of its importance with some real-life use cases oriented on app development and their needs.