# What changed in @chat-adapter/slack

> 138 changes in @chat-adapter/slack 4 from its official release notes, upgrade guides and advisories: 8 breaking, 4 security, 69 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/@chat-adapter/slack/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @chat-adapter/slack 4

### Breaking changes

- Mention classification now inspects message content and Slack rendering rather than relying on the app_mention event type; inspected messages without a mention report isMention: false. (4.41.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.41.0)
- Mentions and links in raw_text table cells render literally; a bot mention token no longer resolves to a display name. (4.41.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.41.0)
- Slack attachment downloads refuse private and internal addresses, cap responses at 25 MB, and time out after 30 seconds; the bot token is sent only to trusted Slack origins. (4.39.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.39.0)
- Card tables render as paginated, sortable data table blocks by default; header-only or over-limit tables retain their specified fallbacks. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Org-wide installs are keyed on enterprise_id instead of team_id across event, slash command, and interactive payload paths; internal StateAdapter installations may need repopulating under enterprise_id. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- A configured webhookVerifier takes precedence over signingSecret and SLACK_SIGNING_SECRET. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- The previous boolean is replaced by `channelVisibility`. (4.23.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.23.0)
- Adapter and StateAdapter implementations must now provide channelIdFromThreadId. (4.19.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.19.0)

### Security

- External request targets are validated before credentials, message content, or attachment requests are sent. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Bounds the length of bracketed URLs parsed in the link-unfurl fallback to avoid quadratic scans on adversarial input; valid links are unaffected. (4.37.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.37.0)
- Scopes profile caching and display-name mention reverse indexing by installation in multi-workspace deployments, preventing profiles and mention resolutions from leaking across workspaces. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- A security bypass involving url_verification was fixed. (4.16.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.1)

### New APIs and options

- Adds an optional hook to namespace dedupe, lock, queue, and turn keys, isolating Slack message concurrency and turn cancellation by installation. In multi-workspace mode, upgrade chat and @chat-adapter/slack together and restart all workers; old queued keys are not migrated and… (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Returns every message ID in order when a long reply rotates into several messages; the last entry in messageIds is id. (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Adds Block Kit blocks to the message sharing uploaded files. Passing both blocks and initialComment throws a TypeError because Slack would silently ignore blocks. (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Button and LinkButton accept user IDs allowed to see the button; Slack renders them as visible_to_user_ids, while other adapters show the button to everyone. Action handlers must still check who clicked. (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Select and RadioSelect inputs in Slack modals can opt in to selection change events. (4.41.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.41.0)
- Adapter-scoped transport options support egress proxies across Socket Mode, response URLs, webhook forwarding, and guarded file downloads. (4.41.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.41.0)
- An opt-in webhook option propagates message, action, and slash command handler errors through waitUntil while preserving default behavior. (4.41.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.41.0)
- Sets the maximum age of a native Slack stream segment; after the default four minutes, the adapter continues the reply in a new message at the next paragraph break. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Adds lifecycle support, automatic session titles, and session stop/title-change events while preserving the legacy assistant_view compatibility path. (4.39.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.39.0)
- Provides native stop cancellation for Slack Agent Sessions. (4.39.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.39.0)
- SlackEvent.blocks is now typed with the exported SlackMessageBlock interface. (4.38.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.38.1)
- Adds lifecycle callbacks and dispatch support for Slack message_changed and message_deleted events. (4.37.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.37.0)
- Adds DateInput as a modal child; the Slack adapter renders it as a datepicker, and its submitted value arrives in event.values as a string. (4.36.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.36.0)
- Adds NumberInput as a modal child; the Slack adapter renders it as a number_input, and its submitted value arrives in event.values as a string. (4.36.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.36.0)
- Adds an optional isSystem field to distinguish platform-generated messages from humans and bots; Slack sets it for messages authored by its reserved USLACK user. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Normalized incoming Slack message authors expose email addresses through message.author.email when the users:read.email scope is available; otherwise the field is undefined. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Installation records now include enterpriseId and isEnterpriseInstall to represent org-wide installs. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Accepts an optional installationId so proactive or cron posts outside webhook handling can scope profile and mention caches. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Enables Slack Agent messaging behavior, including app_context_changed routing and folded context on DM messages. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- The Slack adapter routes Slack's app_context_changed event. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds folded active-view context to the event so handlers can identify the view associated with an app-home open. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds the opened Slack tab to the event, distinguishing a Home-tab open from the DM-open signal under agent_view. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds a helper for attaching the feedback buttons block to non-streamed messages. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds chart elements and a Chart builder with JSX support for pie, bar, area, and line charts. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds a helper that renders chart data as a text table on platforms without native chart support. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- The blocks subpath gains chart types and card children, data table rendering, and matching Slack limits. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds optional native thumbs-up/down feedback buttons to streamed replies, with clicks dispatched through bot.onAction. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds a helper for reading folded app context from DM messages. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds default rotating status strings for the assistant thinking indicator when no explicit status or messages are passed. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds a native streaming configuration option, enabled by default; disable it on Slack flavours without the chat.startStream family. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds a core event with normalized AppContextEntity[] describing the user's active view. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Accepts an optional thread reference so prompts can sit at the top of an agent conversation. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds static or per-thread prompts applied automatically when an assistant or agent thread opens; null or undefined skips a thread. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds an optional accessible table description. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds an optional field for specifying rows per page. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Adds support for stable IDs to link button action handlers. (4.31.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.31.0)
- Adds webClientOptions to SlackAdapterConfig and forwards it to default and per-token WebClient instances, exposing settings such as retryConfig, per-request timeout, and rejectRateLimitedCalls. (4.31.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.31.0)
- Exposes runtime-free helpers for converting Slack cards to Block Kit. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Adds helpers for files, thread replies, views, interactions, and input blocks. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Adds a lightweight subpath for Slack API primitives. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Adds a lightweight subpath for Slack formatting primitives. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Adds a lightweight subpath for Slack webhook primitives. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Expose typed WebClient access bound to the current request-context token or configured default token, enabling Web API calls not covered by high-level SDK methods. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- The typed native Slack client getter is renamed from client to webClient to match the underlying SDK class; client remains as a deprecated alias. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- Optionally resolve bot tokens for incoming events, slash commands, and interactive payloads through an external read-only provider instead of internal StateAdapter state. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- Slack AdapterConfig types and related sub-types move into a ./types module; public re-exports from index.ts remain unchanged. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- Allows passing redirectUri explicitly during the Slack OAuth token exchange, with the callback query parameter retained as a backward-compatible fallback. (4.25.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.25.0)
- Adds an enum to distinguish private, workspace, external, and unknown channel scopes. (4.23.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.23.0)
- Adds `getChannelVisibility()` to the Adapter interface and Slack adapter. (4.23.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.23.0)
- Introduces a LinkPreview object on Message. (4.20.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.20.1)
- Adds an API for transforming history to AI SDK messages. (4.20.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.20.1)
- EphemeralMessage is now generic over TRawMessage, allowing its raw message type to be specified. (4.19.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.19.0)
- Adds scheduling messages for a future time through Slack’s chat.scheduleMessage API, with cancellation support and the ScheduledMessage type. (4.19.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.19.0)
- Adds support for native Slack tables. (4.18.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.18.0)
- Adds onMemberJoinedChannel to the Slack adapter. (4.16.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.0)
- Adds the CardLink element. (4.15.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.15.0)
- You can now attach multiple files to the same Slack message instead of breaking by file. (4.15.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.15.0)
- Slack installations can use a custom key prefix. (4.14.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.14.0)
- The Slack adapter adds typing indicators using the Slack assistants API. (4.14.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.14.0)
- The adapter routes assistant_thread_context_changed events. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- The adapter routes assistant_thread_started events. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- Adds handler registration for assistant_thread_context_changed events. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- Adds handler registration for assistant_thread_started events. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- Adds a Slack adapter method to set assistant status. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- Adds a Slack adapter method to set the assistant title. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- Adds a Slack adapter method to set suggested prompts. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- stream() accepts stopBlocks for Block Kit on stream finalization. (4.13.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.0)
- Adds support for slash commands in the Slack adapter. (4.12.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.12.0)
- Cards can now include inline Select components and Radio buttons. (4.11.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.11.0)

### Behavior and default changes

- Post-and-edit fallback updates use Slack’s markdown_text field while streaming, so live-updating messages render markdown and have a 12,000-character ceiling instead of 4,000. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Custom status text is surfaced in the Agent messaging experience; clearing the status transitions the session to active. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Bot-authored messages use the Slack bot user ID when a bot profile is available. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Normalized Slack messages now include alert attachment content, so mention detection and onMessage pattern handlers can see alert text. (4.39.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.39.0)
- Channel-addressed calls echo context_team_id back as client_context_team_id when an event comes from a shared channel hosted on an away workspace. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Uses a 24-hour state-adapter marker to drop retried event deliveries after the original was dispatched, while still recovering retries whose first delivery never arrived. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Environment credential fallback is disabled only by explicitly supplied auth or verification fields, so unrelated config such as agentView does not suppress it. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Under agentView, Messages-tab DM messages are threaded with each user message as a root; subscribed openDM conversation threads continue receiving top-level DM messages. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Surfaces Slack's per-block validation details when block submission fails with invalid_blocks. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Card charts render as data visualization blocks and fall back to text when they violate Slack constraints. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Falls back to throttled post-and-edit if the first native streaming call is rejected, preserving consumed text; permanent platform errors disable native streaming for later streams on the adapter instance. (4.34.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.34.0)
- Makes file upload confirmation ids available in postMessage results. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Adapter internals are protected rather than private, allowing consumers to subclass adapters and override or extend their behavior. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- The factory accepts SlackAdapterConfig directly instead of Partial<SlackAdapterConfig>; all config fields were already optional, so call sites need no changes. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- Slack native streaming can send markdown tables without code fences; other consumers retain the append-only table fallback. (4.25.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.25.0)
- The adapter now depends on chat as a full dependency rather than an optional dependency. (4.21.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.21.0)
- Slack channel names are now resolved automatically. (4.20.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.20.1)
- Adapters have improved fallback-render behavior. (4.16.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.0)
- Markdown rendering is fully streaming, including for Slack, which has native streaming. (4.16.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.0)
- Markdown tables are rendered by the adapters. (4.16.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.0)
- Environment variables are now loaded automatically. (4.13.4) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.4)

### Fixes and other changes

- Cuts Slack card text that exceeds Block Kit length limits, preventing Slack from rejecting messages. Markdown cuts preserve mentions, links, HTML entities, open code fences, and closing bold markers. (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Backward thread history reads follow every API page before selecting the newest messages, fixing older replies being returned for threads spanning multiple pages. Long threads take one API call per page. (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Preserves literal text and code formatting in incoming Slack messages and correctly parses email and phone links. (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Completes open task cards when a stream segment rotates and replays in-progress cards in the next segment. Retired segments finish without Slack's error indicator; if closing cards are rejected, the adapter finalizes without them and streams the rest as text… (4.42.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.42.0)
- Inbound Slack messages convert special mentions and user group mentions to readable text. (4.41.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.41.1)
- Incoming bot mentions resolve to the bot’s display name in message text, while isMention is detected from the raw event text. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Receiving an empty status reactivates Slack Agent Sessions. (4.40.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.40.0)
- Preserves the first line of incoming Slack code blocks and treats only paired triple-backtick fences as code blocks, preventing formatting rewrites from altering fenced content. (4.39.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.39.0)
- Pasted Slack tables are preserved as structured table nodes in message.formatted and tab-separated text in message.text, with cell formatting and table order retained. (4.38.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.38.1)
- Normalizes the commonly hallucinated link order before Markdown conversion. (4.37.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.37.0)
- Preserves the Slack channel ID when converting labeled channel tokens, allowing agents to pass the ID to channel tools. (4.37.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.37.0)
- Resolves @name mentions on the native streaming path, matching the post-and-edit fallback while keeping fenced code literal and preserving existing ambiguity semantics. (4.37.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.37.0)
- Event token resolution prefers the envelope's authorizations[0] installation identity over top-level team_id or enterprise_id, which remain fallbacks. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Returns a replyable Slack thread ID by using the posted top-level message's timestamp as the thread root. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Recognizes bare @W… mentions in outgoing messages as raw Enterprise Grid user IDs so they render as real mentions instead of display names. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Handles org-wide Slack installs by keying the installation by enterprise ID instead of failing when Slack returns team: null; the result includes enterpriseId and isEnterpriseInstall. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Resolves per-installation tokens for events, slash commands, and interactive payloads in multi-workspace deployments, and preserves enterprise_id, is_enterprise_install, and is_ext_shared_channel in event payloads. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- API calls while handling org-wide install events pass the event's team_id explicitly for workspace-scoped methods that require it. (4.35.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.35.0)
- Retry envelopes are now routed like first deliveries instead of being acknowledged and dropped; message-id deduplication drops true duplicates. (4.33.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.33.0)
- Cached Slack display names inside URLs are no longer resolved as user mentions before payload formatting. (4.32.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.32.0)
- Mention linking skips inline code spans and fenced code blocks, preventing handles in package names or shell snippets from becoming Slack user mentions. (4.32.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.32.0)
- Mention linking now skips whole http(s):// spans and excludes a slash immediately before @, preserving handles inside URLs while leaving whitespace- and punctuation-led mentions, emails, and mailto links unaffected. (4.31.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.31.0)
- Passes the Slack bot token through native stream append and stop calls. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- Slack reaction events now resolve the reacting user's display name and real name through cached user lookup, falling back to the Slack user ID if lookup fails. (4.30.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.30.0)
- The factory no longer silently drops the apiUrl config field. (4.29.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.29.0)
- Fixes conversion of markdown tables to Slack table blocks. (4.26.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.26.0)
- Empty table cells now fall back to a single space to meet Slack Block Kit requirements and avoid `invalid_blocks` errors. (4.24.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.24.0)
- Duplicate mentions are resolved using the replace callback offset instead of indexOf. (4.20.2) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.20.2)
- The user cache is invalidated on Slack user_change events so display name updates are picked up immediately. (4.20.2) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.20.2)
- Reaction events on threaded replies now resolve the parent thread_ts, so onReaction receives the correct thread ID. (4.19.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.19.0)
- Compatibility fixes for AI SDK6. (4.18.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.18.0)
- Slack file_share messages are no longer silently dropped, allowing file uploads to reach processMessage. (4.17.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.17.0)
- The hasText check no longer causes a no_text error for file-only posts. (4.17.0) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.17.0)
- Nested lists are rendered with platform-appropriate indentation and ordered child content instead of being flattened. (4.16.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.1)
- The StreamChunk type now uses a discriminated union for improved type safety. (4.16.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.16.1)
- Standard Markdown bold in CardText content is converted to Slack and Google Chat formatting instead of rendering literally. (4.13.1) — [release notes](https://github.com/vercel/chat/releases/tag/%40chat-adapter/slack%404.13.1)
