unstale

npm / @chat-adapter/teams

@chat-adapter/teams

What changed in @chat-adapter/teams 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

4 breaking3 security29 new APIs and options9 behavior and defaults1 tooling16 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

@chat-adapter/teams 462 changes

Breaking changes 4

  • Teams buttons with actionType set to modal render with associatedInputs set to none, so opening a dialog does not wait on or submit card inputs.

    4.42.0release notes

  • Teams uses guarded downloads for anonymous attachments: private or internal addresses, plain HTTP, oversized responses, and downloads exceeding the timeout are refused; loopback emulator downloads use bot authentication.

    4.39.0release notes

  • Teams JSON-number submit values are now stringified into event.values instead of being dropped, so previously absent keys may now be present as strings.

    4.36.0release notes

  • Adapters have updated fallback-render behavior.

    4.16.0release notes

Security 3

  • External request targets are validated before credentials, message content, or attachment requests are sent.

    4.40.0release notes

  • Webhook tenant isolation is hardened.

    4.40.0release notes

  • Authenticates connector-hosted inline attachments.

    4.36.0release notes

New APIs and options 29

  • ActionEvent gains optional values keyed by card input ID. Teams fills them from Action.Submit, and callbackUrl POSTs carry them too; validate them as user input.

    4.42.0release notes

  • PostableRaw, PostableMarkdown, PostableAst, PostableCard, StreamingPlanOptions, and StreamOptions accept optional aiGenerated; Teams shows its AI generated label when true. Edits must set the flag again to retain the label.

    4.42.0release notes

  • Adds an installation lifecycle handler emitted for installationUpdate activities, including add-upgrade, with a persistable channelId for later proactive messages.

    4.41.0release notes

  • Adds an installation lifecycle handler emitted for installationUpdate activities, including remove-upgrade, with a persistable channelId for later proactive messages.

    4.41.0release notes

  • Adds gridLines, which defaults to true; pass false to keep a borderless table.

    4.41.0release notes

  • Adds the gridStyle rendering option for Teams tables.

    4.41.0release notes

  • Adds verticalAlign to control vertical alignment of cell content when rendering tables in Teams.

    4.41.0release notes

  • Adds widths, an option for positive integer column weights when rendering tables in Teams.

    4.41.0release notes

  • The Teams adapter supports Vercel Connect with lazy app identity resolution and custom webhook verification; custom Bot Framework and Graph token factories take precedence over client-secret environment variables.

    4.41.0release notes

  • Adds an opt-in webhook option to propagate message, action, and slash command handler errors through waitUntil, preserving default behavior when not enabled.

    4.41.0release notes

  • The adapter exposes the bot user ID for application use.

    4.40.0release notes

  • Button and LinkButton support a tooltip, rendered by the Teams adapter as an Adaptive Card action tooltip.

    4.40.0release notes

  • Card supports a width hint, which the Teams adapter renders as the msteams full-width card property.

    4.40.0release notes

  • Adds DateInput as a modal child; the Teams adapter renders it as Input.Date.

    4.36.0release notes

  • Adds NumberInput as a modal child; the Teams adapter renders it as Input.Number.

    4.36.0release notes

  • Add support for adding and removing reactions from Microsoft Teams messages.

    4.35.0release notes

  • Normalized incoming Teams message authors expose Microsoft Graph email addresses; resolved profiles are cached in the state adapter to limit Graph calls.

    4.35.0release notes

  • Add native Microsoft Teams targeted message support via thread.postEphemeral() and channel.postEphemeral().

    4.35.0release notes

  • Add a TeamsAdapterConfig option for a custom token factory, enabling authentication through an external mechanism without a static client secret.

    4.35.0release notes

  • Adds low-level Teams primitive subpaths for custom runtimes.

    4.31.0release notes

  • Supported Node versions are now set in engines, giving developers a declared Node runtime compatibility range.

    4.29.0release notes

  • Adapter internals are now protected rather than private, allowing consumers to subclass an adapter and override or extend its behavior, including processUpdate.

    4.29.0release notes

  • Teams Adaptive Cards now support RadioSelect with auto-submit fan-out.

    4.25.0release notes

  • Teams Adaptive Cards now support Select with auto-submit fan-out.

    4.25.0release notes

  • Buttons can use actionType: "modal" to open a Teams dialog (task module).

    4.24.0release notes

  • Adds a webhook hook for handling when a Teams dialog opens.

    4.24.0release notes

  • Adds the ability to receive reaction events.

    4.24.0release notes

  • Adds typing indicator support.

    4.24.0release notes

  • The Teams adapter adds support for certificate and federated (workload identity) authentication.

    4.17.0release notes

Behavior and default changes 9

  • TextInput is now a CardChild, letting users reply directly on cards. Teams renders it as Adaptive Card Input.Text; IDs actionId, value, and msteams are rejected on cards.

    4.42.0release notes

  • Teams sends, edits, deletes, reacts, and types against the service URL encoded in the thread ID; an explicit apiUrl still pins every call to that endpoint.

    4.41.0release notes

  • Teams renders Table as the native Adaptive Cards 1.5 Table element instead of a Container of ColumnSets, enabling grid lines, relative column sizing, and accessible header rows.

    4.41.0release notes

  • Emitted Adaptive Cards now declare schema version 1.5, enabling action tooltips.

    4.40.0release notes

  • The adapter emits Teams bot-join events so applications can react when the bot joins.

    4.40.0release notes

  • Show explicitly configured progress as a native Teams DM status while preserving native streaming.

    4.35.0release notes

  • chat is now a full dependency rather than an optional dependency, so it is installed with the adapter.

    4.21.0release notes

  • Markdown rendering is now fully streaming, including for Slack, which has native streaming.

    4.16.0release notes

  • Markdown tables are now rendered.

    4.16.0release notes

Tooling 1

  • Teams is supported by Connect scaffolding, including interactive setup.

    4.41.0release notes

Fixes and other changes 16

  • Teams now classifies bot senders using account role, bot account ID, and adapter identity, reporting isBot and isMe consistently across messages, reactions, card actions, and dialog events.

    4.42.0release notes

  • Teams channel posts return the created thread ID, allowing follow-up text and Adaptive Card messages to reply to that thread.

    4.42.0release notes

  • The chat JSX runtime now forwards align on <Table>, matching fromReactElement.

    4.41.0release notes

  • Edit and delete operations for targeted Teams messages use the ?isTargetedActivity=true endpoint; targeted IDs are recorded in the Chat state adapter with a 24-hour TTL.

    4.41.0release notes

  • Outgoing @names are preserved as plain text rather than converted to mention markup without matching entities.

    4.40.0release notes

  • The adapter falls back to Teams activity group metadata when the explicit conversation type is missing.

    4.40.0release notes

  • Buttons with a callbackUrl retain their tooltip and other fields when the URL is replaced with a callback token.

    4.40.0release notes

  • Live Teams sender email is now hydrated without requiring Microsoft Graph permissions.

    4.39.0release notes

  • Strips tags repeatedly until the output is stable, preventing nested or malformed markup from leaving a partial tag behind in Teams message conversion.

    4.37.0release notes

  • Routes personal and group conversations using their explicit conversation type, so group chats use buffered fallback even when their IDs resemble direct messages.

    4.36.0release notes

  • Parses Teams file download cards.

    4.36.0release notes

  • Fall back to Microsoft Graph's user principal name when a Teams user has no mail address.

    4.35.0release notes

  • Mention conversion no longer turns email addresses, @handles inside URLs, or mentions inside code spans into <at> mention tags.

    4.33.0release notes

  • Expanded npm keywords for adapter and state packages to improve discoverability.

    4.30.0release notes

  • Nested lists are rendered with platform-appropriate indentation and newline separation instead of being flattened during Markdown-to-platform conversion.

    4.16.1release notes

  • Fixes ESM directory imports for the Microsoft Graph auth provider.

    4.16.0release notes