Skip to content

Conversation

farskid
Copy link
Collaborator

@farskid farskid commented Oct 9, 2025

Exposing subscriptions and the observer id through inspection protocol can help map out actor subscriptions. This can come handy in mapping out subscription hierarchy.

@farskid farskid self-assigned this Oct 9, 2025
Copy link

changeset-bot bot commented Oct 9, 2025

🦋 Changeset detected

Latest commit: 901335e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 5 packages
Name Type
xstate Minor
@xstate/react Major
@xstate/solid Major
@xstate/svelte Major
@xstate/vue Major

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

errorListener?: (error: any) => void,
completeListener?: () => void
completeListener?: () => void,
observerId?: string
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't quite like this addition. subscribe's signature is pseudo-standard (with Observables hopefully coming some day to the platform, see the current efforts here). I would prefer not to extend it in any custom/new way.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Sure but how do we identify subscribers then? Any ideas as to where this id can live?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Maybe we could pass an id as the subscription parameter?

actor.subscribe(observer, {id})

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Copy link
Collaborator

Choose a reason for hiding this comment

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

Maybe we could pass an id as the subscription parameter?

This is exactly the same thing ;p

It would be great if you could come up with a description of he exact problem you are trying to solve here and include that in the PR's description. The current description is somewhat vague. I don't really understand what subscription hierarchies are.

Copy link
Collaborator Author

@farskid farskid Oct 10, 2025

Choose a reason for hiding this comment

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

You're right. I thought I was passing it as a property of the observer.

The problem this will solve is to identify the subscribers to an actor. A tool can use the inspect protocol and map out subscribers of every actor. This tool for instance can be used to map react component tree to actor subscriptions to visualize subscriptions at scale. Helps identify unnecessary subscriptions and places to improve. This was just an example.

@farskid farskid requested a review from Andarist October 10, 2025 10:45
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