stack.pulse
#stacks/xstate/state

XState release notes, breaking changes, and upgrade notes.

Actor-based state management and orchestration StackPulse turns upstream changelogs into scannable summaries with risky changes, deprecations, migration notes, and source links.

releases
20
breaking
5
security
0
deprecated
0
migrations
3

Get source-linked upgrade notes and occasional sponsor recommendations. No GitHub login required.

what stackpulse tracks

XState releases from GitHub

StackPulse watches XState release notes and keeps the original source link close to every summary.

upgrade risk

Breaking changes and deprecations

Risky changes are separated from normal feature notes so you can scan upgrade impact before changing production dependencies.

migration notes

Source-backed next steps

Migration steps and recommended actions are only shown when the upstream release notes support them.

# latest_releases

source-backed
@xstate/store@4.2.1mediumfeatureJun 29, 2026

@xstate/store@4.2.1

Fixed type inference for selector context parameters in createStoreLogic when using input functions.

affected

Developers using createStoreLogic with input functions and selectors are affected.

action

Update to version 4.2.1 if encountering type inference issues with selector context parameters.

view source on github->
xstate@6.0.0-alpha.11mediumfeatureprereleaseJun 28, 2026

xstate@6.0.0-alpha.11

This alpha release enhances type checking for machines with schemas.output declarations, ensuring top-level final state output values match the machine output type.

affected

Developers using final state output values with schemas.output are affected.

action

Review and update final state output values to match the declared machine output type.

release_signals
+Machines with schemas.output now type-check top-level final state output values against the machine output type
view source on github->
xstate@6.0.0-alpha.10mediumfeatureprereleaseJun 27, 2026

xstate@6.0.0-alpha.10

This patch release exports helper types used by public machine types to avoid inferred machine types referring to internal declaration paths.

affected

Users who utilize typed system registries in their machines will benefit from this change.

view source on github->
xstate@6.0.0-alpha.9mediumfeatureprereleaseJun 26, 2026

xstate@6.0.0-alpha.9

This release introduces minor improvements to type inference and setup helper exports, along with patch changes enhancing event schema handling and invoke callback typing.

affected

Developers using XState for type-heavy workflows or custom setups may benefit from these changes.

release_signals
+Export setup helper types for libraries that return or decorate setup-bound objects
+Improved type inference for empty Standard Schema event objects
+Registered invoke `onDone` callbacks now receive the invoked actor's output type
view source on github->
xstate@6.0.0-alpha.8mediumfeatureprereleaseJun 25, 2026

xstate@6.0.0-alpha.8

This alpha release modifies done transitions to receive `output` directly in callback arguments.

affected

Developers using done transitions in XState are affected.

action

Update callback arguments to directly access `output` when using done transitions.

release_signals
+Done transitions now receive `output` directly in callback arguments.
view source on github->
xstate@6.0.0-alpha.7highfeatureprereleaseJun 25, 2026

xstate@6.0.0-alpha.7

This alpha release introduces a system registry for typed actor management and allows shallow context patches in static transition configs.

affected

Developers using XState actors and needing typed actor management or context patching in transition configs will be affected.

action

Consider using the new system registry feature for typed actor management if you work with complex actor systems.

release_signals
+Added 'createSystem({ registry })' for declaring typed actor registry keys and managing actors within that system
+Static transition config objects now support shallow 'context' patches
view source on github->
xstate@6.0.0-alpha.6mediumfeatureprereleaseJun 24, 2026

xstate@6.0.0-alpha.6

This alpha release introduces minor typing improvements for state transition functions and simplifies target returns when context compatibility is maintained.

affected

Developers using XState's transition functions will need to update their type definitions if upgrading.

action

Review your state machine implementations for any transition functions that use 'enq' or return targets.

release_signals
+State transition functions now type 'enq' with the machine's events and emitted events
+Transition functions may now return only a target when the target state's context is compatible with the current context
view source on github->
xstate@6.0.0-alpha.5criticalbreakingmigrationprereleaseJun 24, 2026

xstate@6.0.0-alpha.5

This alpha release introduces a breaking change for transition configurations, requiring explicit target objects instead of string shorthand.

affected

Users relying on string shorthand for transition configurations will be affected.

action

Update transition configurations to use explicit target objects as shown in the example.

release_signals
-String target shorthand is no longer accepted for transition configs - must use object form with 'target' property
migration_steps1 steps
  1. 01Replace string transition targets with object form containing 'target' property
view source on github->
@xstate/store@4.3.0-alpha.1highbreakingfeatureprereleaseJun 23, 2026

@xstate/store@4.3.0-alpha.1

This alpha release introduces changes to actor logic, ensuring effects are returned from both regular and initial transitions. Hand-written actor logic must now return `[snapshot, effects]` from `transition(...)` and provide `initialTransition(...)` for creating the initial `[snapshot, effects]` tuple.

affected

Developers using hand-written actor logic are affected by the changes in transition and initial transition handling.

action

Update hand-written actor logic to return `[snapshot, effects]` from `transition(...)` and provide `initialTransition(...)` for creating the initial `[snapshot, effects]` tuple.

release_signals
-Hand-written actor logic must return `[snapshot, effects]` from `transition(...)` and provide `initialTransition(...)` for creating the initial `[snapshot, effects]` tuple.
+Actor logic now returns effects from both regular and initial transitions.
+`fromStore(...)` effects now run after the actor snapshot is committed.
view source on github->
xstate@6.0.0-alpha.4highbreakingfeatureprereleaseJun 23, 2026

xstate@6.0.0-alpha.4

This release introduces significant changes to actor logic, including the ability to return effects from transitions and initial transitions, and adds explicit typing for child actor refs. Built-in executable effects are now easier to inspect declaratively.

affected

Developers using hand-written actor logic or relying on `fromStore(...)` effects will need to update their code to accommodate the new changes.

action

Update actor logic to return `[snapshot, effects]` from `transition(...)` and provide `initialTransition(...)` for creating the initial `[snapshot, effects]` tuple.

release_signals
-Hand-written actor logic must now return `[snapshot, effects]` from `transition(...)` and provide `initialTransition(...)` for creating the initial `[snapshot, effects]` tuple.
-`fromStore(...)` effects now run after the actor snapshot is committed, so effect callbacks read the updated snapshot from `enqueue.getSnapshot()`.
+Actor logic now returns effects from both regular and initial transitions.
+Added `schemas.children` for explicitly typing child actor refs by child ID.
+Built-in executable effects returned from transitions are easier to inspect declaratively.
view source on github->
xstate@5.32.2mediumfeatureJun 23, 2026

xstate@5.32.2

This release fixes a bug in the event descriptor handling logic, ensuring that wildcard event descriptors are considered as fallbacks when exact descriptor guards fail.

affected

Developers using exact and wildcard event descriptors in state machines may be affected by this bug fix.

action

Review state machines using exact and wildcard event descriptors to ensure expected behavior.

view source on github->
xstate@6.0.0-alpha.3mediumfeatureprereleaseJun 22, 2026

xstate@6.0.0-alpha.3

This alpha release exposes machine schemas publicly and improves function serialization in guards, actions, and delays.

release_signals
+Expose `machine.schemas` as a public runtime-readable schema contract
+Serialize function implementations as portable code expressions in guards, actions, and delays
view source on github->
xstate@6.0.0-alpha.2mediumfeatureprereleaseJun 21, 2026

xstate@6.0.0-alpha.2

Fixed a bug where invoked actors received outdated context values. Now, actors receive the updated context after a transition.

affected

Developers using invoked actors with context-dependent inputs are affected.

action

Update to ensure actors receive the correct context values.

view source on github->
@xstate/store@4.3.0-alpha.0mediumfeatureprereleaseJun 20, 2026

@xstate/store@4.3.0-alpha.0

This release adds a new helper function to check if a value is an atom, which is useful for implementing reactive programming patterns.

affected

Users implementing reactive programming patterns with atoms will benefit from the new helper function.

action

Update to the latest version to use the new `isAtom` helper function.

release_signals
+Added `isAtom(value)` helper function to check if a value is an atom (has `get` and `subscribe` methods).
view source on github->
@xstate/store-vue@2.0.1-alpha.0mediumbreakingmigrationprereleaseJun 20, 2026

@xstate/store-vue@2.0.1-alpha.0

This alpha release updates the type signature of the `compare` function in `useSelector` to no longer include undefined for the previous value, and updates dependencies to @xstate/store@4.3.0-alpha.0.

affected

Affects developers using the `compare` function in `useSelector` with TypeScript and relying on the previous value being possibly undefined.

action

Review and update any `compare` function implementations in `useSelector` to handle the new strict typing.

release_signals
-The `compare` function in `useSelector` now has a strict type signature `(a: T, b: T)` rather than `(a: T | undefined, b: T)` - code relying on the previous value being possibly undefined will need type updates.
migration_steps1 steps
  1. 01Update any code that relied on the previous value being possibly undefined in the `compare` function of `useSelector` to handle the strictly typed values.
view source on github->
@xstate/svelte@6.0.0-alpha.1mediumfeatureprereleaseJun 20, 2026

@xstate/svelte@6.0.0-alpha.1

This alpha release introduces type improvements for the send function in useMachine and useActor hooks, aligning with actorRef.send's overloads. It includes multiple dependency updates for XState.

affected

Developers using useMachine or useActor hooks in XState with Svelte or Vue may need to check their send function type usage.

action

Review type signatures of send functions in your codebase when upgrading.

release_signals
+The send function returned by useMachine and useActor now matches actorRef.send's type signature.
view source on github->
xstate@6.0.0-alpha.1highbreakingmigrationfeatureprereleaseJun 20, 2026

xstate@6.0.0-alpha.1

This alpha release introduces significant changes to XState, including a new approach to handling invoked and spawned actors, removal of deprecated APIs, and a shift to inline functions for actions, guards, and transitions. The release also introduces a new schema-based typing system for machines.

affected

Developers using XState will need to update their code to accommodate the new inline function approach for actions, guards, and transitions, as well as the new schema-based typing system.

action

Review the breaking changes and migration steps provided in the release notes to update your XState implementation.

release_signals
-Removed `interpret` function and `Interpreter` type; use `createActor(...)` and `Actor` instead.
-Removed v5 action/guard creators like `assign`, `raise`, `sendTo`, etc.
-Changed `setup(...)` function to no longer register implementations.
-Removed `stateIn` guard; use `snapshot.matches(...)` directly.
-Removed deprecated `types: {} as {...}` syntax in favor of `schemas`.
+Invoked and spawned actors now start as part of the transition that creates them, improving error handling.
+Actions, guards, and transitions are now plain inline functions, removing the need for separate creators.
+New schema-based typing system for machines, replacing the old `types` system.
+Separate concrete actors from actor refs in public types for clearer contracts.
+`setup(...)` function now focuses on machine- and state-level typing, removing implementation registration.
migration_steps5 steps
  1. 01Replace `interpret` with `createActor` and `Interpreter` with `Actor`.
  2. 02Update actions, guards, and transitions to use inline functions instead of creators.
  3. 03Migrate from `types: {} as {...}` to the new `schemas` system for typing machines.
  4. 04Use `snapshot.matches(...)` instead of the removed `stateIn` guard.
  5. 05Refactor `setup(...)` usage to focus on machine- and state-level typing.
view source on github->
@xstate/vue@6.0.0-alpha.1mediumfeatureprereleaseJun 20, 2026

@xstate/vue@6.0.0-alpha.1

This release primarily focuses on improving type safety for the `send` function in `@xstate/vue` and `@xstate/svelte`, aligning it with the actor's own `send` signature.

affected

Developers using `@xstate/vue` or `@xstate/svelte` with TypeScript will benefit from improved type safety.

release_signals
+The `send` function returned by `useMachine` and `useActor` is now typed to match the actor's own `send` signature.
view source on github->
@xstate/store@4.2.0mediumfeatureJun 14, 2026

@xstate/store@4.2.0

This release enhances the `enq.effect(...)` API by providing an enqueue object with `trigger`, `send`, and `getSnapshot` methods, enabling easier event dispatching and state access without requiring a direct reference to the store.

affected

Developers using `enq.effect(...)` in XState stores will benefit from enhanced event dispatching and state access capabilities.

action

Update to version 4.2.0 to take advantage of the new `trigger`, `send`, and `getSnapshot` methods in `enq.effect(...)`.

release_signals
+Added `trigger`, `send`, and `getSnapshot` methods to the enqueue object in `enq.effect(...)` for better event dispatching and state access.
view source on github->
xstate@5.32.1lowfeatureJun 12, 2026

xstate@5.32.1

This patch release fixes an issue related to children snapshot union pollution for typed invoke in the core module.

affected

Developers using typed invoke in XState may be affected by the children snapshot union pollution issue.

action

Update to version 5.32.1 to resolve the issue.

view source on github->
XState release notes, breaking changes, and upgrade notes · StackPulse