space.getMessage(), and native
outbound results. Synthetic events such as read receipts and group changes may
omit them.
When a streamed text send requires native edits, its returned record exposes
the final nativeText but omits the first-send metadata snapshot because those
lifecycle and formatting values no longer describe the edited message. Use
space.getMessage() when you need the current native state afterward.
Use
imessage.is() when consuming the unified Spectrum message stream. It
narrows the message to the iMessage-specific type:
for await (const [, message] of spectrum.messages).
nativeText preserves Apple’s original text because formatting and mention
ranges use UTF-16 offsets into that string. Spectrum can split native
multipart content into grouped messages, so rebuilding these offsets from
message.content is not reliable:
sendErrorCode === 0 means Apple recorded no send error. The metadata is
intentionally curated: Spectrum does not expose the raw Advanced iMessage
database row or unstable Apple-private fields.