__platform tag so the narrowing functions from platform narrowing can recover their platform-specific shapes.
Space
Every exposes the same interface regardless of platform:Space
Space
User
Every has a platform-specific ID and platform tag.User
User
user.schema.
Typing indicators
Manual
space.send(typing("start")) and space.send(typing("stop")) — see Typing indicators for the canonical form.
Automatic with responding
responding is the recommended pattern. It guarantees the typing indicator is cleared even if the inner function throws:
Creating a space
To start a new conversation, use platform narrowing to get a platform instance, then callspace.create(...) with the users:
space.get(id):
type: "dm" | "group" on iMessage — but it also satisfies the generic interface, so send(), startTyping(), and friends are always available.