Releases: slackapi/node-slack-sdk
@slack/web-api@7.11.0
AI-Enabled Features: Loading States, Text Streaming, and Feedback Buttons
🍿 Preview
2025-10-06-loading-state-text-streaming-feedback.mov
📚 Changelog
⚡ Getting Started
Try the AI Agent Sample app to explore the AI-enabled features and existing Assistant helper:
# Create a new AI Agent app
$ slack create slack-ai-agent-app --template slack-samples/bolt-js-assistant-template
$ cd slack-ai-agent-app/
# Add your OPENAI_API_KEY
$ export OPENAI_API_KEY=sk-proj-ahM...
# Run the local dev server
$ slack runAfter the app starts, send a message to the "slack-ai-agent-app" bot for a unique response.
⌛ Loading States
Loading states allows you to not only set the status (e.g. "My app is typing...") but also sprinkle some personality by cycling through a collection of loading messages:
app.event('message', async ({ client, context, event, logger }) => {
// ...
await client.assistant.threads.setStatus({
channel_id: channelId,
thread_ts: threadTs,
status: 'thinking...',
loading_messages: [
'Teaching the hamsters to type faster…',
'Untangling the internet cables…',
'Consulting the office goldfish…',
'Polishing up the response just for you…',
'Convincing the AI to stop overthinking…',
],
});
// Start a new message stream
});🔮 Text Streaming Helper
The client.chatStream() helper utility can be used to streamline calling the 3 text streaming methods:
app.event('message', async ({ client, context, event, logger }) => {
// ...
// Start a new message stream
const streamer = client.chatStream({
channel: channelId,
recipient_team_id: teamId,
recipient_user_id: userId,
thread_ts: threadTs,
});
// Loop over OpenAI response stream
// https://platform.openai.com/docs/api-reference/responses/create
for await (const chunk of llmResponse) {
if (chunk.type === 'response.output_text.delta') {
await streamer.append({
markdown_text: chunk.delta,
});
}
}
// Stop the stream and attach feedback buttons
await streamer.stop({ blocks: [feedbackBlock] });
});🔠 Text Streaming Methods
Alternative to the Text Streaming Helper is to call the individual methods.
1) client.chat.startStream
First, start a chat text stream to stream a response to any message:
app.event('message', async ({ client, context, event, logger }) => {
// ...
const streamResponse = await client.chat.startStream({
channel: channelId,
recipient_team_id: teamId,
recipient_user_id: userId,
thread_ts: threadTs,
});
const streamTs = streamResponse.ts2) client.chat.appendStream
After starting a chat text stream, you can then append text to it in chunks (often from your favourite LLM SDK) to convey a streaming effect:
for await (const chunk of llmResponse) {
if (chunk.type === 'response.output_text.delta') {
await client.chat.appendSteam({
channel: channelId,
markdown_text: chunk.delta,
ts: streamTs,
});
}
}3) client.chat.stopStream
Lastly, you can stop the chat text stream to finalize your message:
await client.chat.stopStream({
blocks: [feedbackBlock],
channel: channelId,
ts: streamTs,
});👍🏻 Feedback Buttons
Add feedback buttons to the bottom of a message, after stopping a text stream, to gather user feedback:
const feedbackBlock = {
type: 'context_actions',
elements: [{
type: 'feedback_buttons',
action_id: 'feedback',
positive_button: {
text: { type: 'plain_text', text: 'Good Response' },
accessibility_label: 'Submit positive feedback on this response',
value: 'good-feedback',
},
negative_button: {
text: { type: 'plain_text', text: 'Bad Response' },
accessibility_label: 'Submit negative feedback on this response',
value: 'bad-feedback',
},
}],
};
// Using the Text Streaming Helper
await streamer.stop({ blocks: [feedbackBlock] });// Or, using the Text Streaming Method
await client.chat.stopStream({
blocks: [feedbackBlock],
channel: channelId,
ts: streamTs,
});- https://docs.slack.dev/reference/block-kit/blocks/context-actions-block/
- https://docs.slack.dev/reference/block-kit/block-elements/feedback-buttons-element/
- https://docs.slack.dev/reference/block-kit/block-elements/icon-button-element/
What's Changed
👾 Enhancements
- feat: add ai-enabled features text streaming methods, feedback blocks, and loading state in #2399 - Thanks @zimeg!
📚 Documentation
- docs: update package homepage to docs.slack.dev tools reference in #2369 - Thanks @zimeg!
- docs: autogenerate package reference to language specific paths in #2337 - Thanks @zimeg!
🤖 Dependencies
- build(web-api): bump to minimum @slack/types@2.17.0 in #2401 - Thanks @zimeg!
- chore(deps-dev): bump typescript from 5.9.2 to 5.9.3 in /packages/web-api in #2398 - Thanks @dependabot!
🧰 Maintenance
- build: use latest biome schema version in #2363 - Thanks @zimeg!
- chore(web-api): release @slack/web-api@7.11.0 in #2402 - Thanks @zimeg!
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/147?closed=1
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.10.0...@slack/web-api@7.11.0
Package: https://www.npmjs.com/package/@slack/web-api/v/7.11.0
@slack/types@2.17.0
What's Changed
👾 Enhancements
- feat: add ai-enabled features text streaming methods, feedback blocks, and loading state in #2399 - Thanks @zimeg!
📚 Documentation
- docs: autogenerate package reference to language specific paths in #2337 - Thanks @zimeg!
- docs: update package homepage to docs.slack.dev tools reference in #2369 - Thanks @zimeg!
🧰 Maintenance
- build: use latest biome schema version in #2363 - Thanks @zimeg!
- chore(types): release @slack/types@2.17.0 in #2400 - Thanks @zimeg!
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/149?closed=1
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/types@2.16.0...@slack/types@2.17.0
Package: https://www.npmjs.com/package/@slack/types/v/2.17.0
@slack/cli-test@2.2.0+cli.2.32.2
What's Changed
This release adds the version command to Slack CLI testing utilities for testing the output of the version command.
👾 Enhancements
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
- docs: autogenerate package reference to language specific paths in #2337 - Thanks @zimeg!
🤖 Dependencies
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
- chore(deps-dev): bump @types/node from 22.15.32 to 24.0.3 in /packages/cli-test in #2262 - Thanks @dependabot!
- chore(deps-dev): bump cross-env from 7.0.3 to 10.0.0 in /packages/cli-test in #2325 - Thanks @dependabot!
- chore(deps-dev): bump shx from 0.3.4 to 0.4.0 in /packages/cli-test in #2181 - Thanks @dependabot!
- chore(deps-dev): bump sinon from 19.0.5 to 20.0.0 in /packages/cli-test in the dev-sinon group in #2199 - Thanks @dependabot!
- chore(deps-dev): bump sinon from 20.0.0 to 21.0.0 in /packages/cli-test in the dev-sinon group in #2264 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.7.3 to 5.8.2 in /packages/cli-test in #2160 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 in /packages/cli-test in #2224 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /packages/cli-test in #2324 - Thanks @dependabot!
🧰 Maintenance
- test: upload individual test results to codecov to gather stats in #2178 - Thanks @zimeg!
- chore(cli-test): release @slack/cli-test@2.2.0+cli.2.32.2 in #2354 - Thanks @zimeg!
Package: https://www.npmjs.com/package/@slack/cli-test/v/2.2.0
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/cli-test@2.1.0+cli.2.32.2...@slack/cli-test@2.2.0+cli.2.32.2
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/136?closed=1
@slack/socket-mode@2.0.5
What's Changed
This release updates internal dependencies to use more secure versions 🔏
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
- docs: autogenerate package reference to language specific paths in #2337 - Thanks @zimeg!
🤖 Dependencies
- chore(socket-mode): bump @slack/web-api to 7.10.0 in #2343 - Thanks @zimeg!
- chore(deps-dev): bump typescript from 5.7.3 to 5.8.3 in /packages/socket-mode in #2163 - Thanks @dependabot!
- chore(deps-dev): bump sinon from 20.0.0 to 21.0.0 in /packages/socket-mode in the dev-sinon group in #2263 - Thanks @dependabot!
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /packages/socket-mode in #2326 - Thanks @dependabot!
🧰 Maintenance
Package: https://www.npmjs.com/package/@slack/socket-mode/v/2.0.5
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/oauth@3.0.4...@slack/socket-mode@2.0.5
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/87?closed=1
@slack/rtm-api@7.0.4
What's Changed
This release updates internal dependencies to use more secure versions 🔏
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
- docs: autogenerate package reference to language specific paths in #2337 - Thanks @zimeg!
🤖 Dependencies
- chore(rtm-api): bump @slack/web-api to 7.10.0 in #2342 - Thanks @zimeg!
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
🧰 Maintenance
Package: https://www.npmjs.com/package/@slack/rtm-api/v/7.0.4
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/rtm-api@7.0.3...@slack/rtm-api@7.0.4
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/150?closed=1
@slack/oauth@3.0.4
What's Changed
This release removes unused dependencies and updates internal dependencies to use more secure versions 🔏
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
- docs: autogenerate package reference to language specific paths in #2337 - Thanks @zimeg!
🤖 Dependencies
- refactor(oauth): remove lodash.isstring from dependencies in #2293 - Thanks @zimeg!
- chore(oauth): bump @slack/web-api to 7.10.0 in #2341 - Thanks @zimeg!
- chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 in /packages/oauth in #2225 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /packages/oauth in #2328 - Thanks @dependabot!
- chore(deps-dev): bump sinon from 20.0.0 to 21.0.0 in /packages/oauth in the dev-sinon group in #2268 - Thanks @dependabot!
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
🧰 Maintenance
Package: https://www.npmjs.com/package/@slack/oauth/v/3.0.4
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/oauth@3.0.3...@slack/oauth@3.0.4
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/121?closed=1
@slack/webhook@7.0.6
What's Changed
This release includes a security patch to internal dependencies. 🔏 ✨
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
🤖 Dependencies
- chore(deps): bump axios from ^1.8.3 to ^1.11.0 in @slack/webhook in #2335 - Thanks @mwbrooks!
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
- chore(deps-dev): bump mocha from 10.8.2 to 11.7.1 in /packages/webhook in the dev-mocha group in #2305 - Thanks @dependabot!
- chore(deps-dev): bump nock from 13.5.6 to 14.0.6 in /packages/webhook in #2306 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 4.9.5 to 5.8.3 in /packages/webhook in #2309 - Thanks @dependabot!
- chore(deps-dev): bump ts-node from 8.10.2 to 10.9.2 in /packages/webhook in #2310 - Thanks @dependabot!
- chore(deps-dev): bump shx from 0.3.4 to 0.4.0 in /packages/webhook in #2311 - Thanks @dependabot!
- chore(deps-dev): bump c8 from 9.1.0 to 10.1.3 in /packages/webhook in #2312 - Thanks @dependabot!
🧰 Maintenance
- test: upload individual test results to codecov to gather stats in #2178 - Thanks @zimeg!
- chore(webhook): release @slack/webhook@7.0.6 in #2338 - Thanks @zimeg!
Package: https://www.npmjs.com/package/@slack/webhook/v/7.0.6
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/webhook@7.0.5...@slack/webhook@7.0.6
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/140?closed=1
@slack/web-api@7.10.0
What's Changed
Messaging with markdown_text is supported in this release, alongside a few methods to feature workflows in channel:
const response = await client.chat.postMessage({
channel: "C0123456789",
markdown_text: "**bold**"
});👾 Enhancements
- feat(web-api): add workflows.featured.{add|list|remove|set} methods in #2303 - Thanks @zimeg!
- feat(web-api): add markdown_text property to chat.{postEphemeral|postMessage|scheduleMessage|update} methods in #2330 - Thanks @hello-ashleyintech!
🐛 Bugs
- fix(web-api): remove bounds on assistant.threads.setSuggestedPrompts prompts count in types in #2297 - Thanks @zimeg!
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
🤖 Dependencies
- bump form-data to at least 4.0.4. to resolve CVE-2025-7783 in #2314 - Thanks @brianbegy!
- chore(deps): bump axios from ^1.8.3 to ^1.11.0 in @slack/web-api in #2332 - Thanks @behcet!
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
- chore(deps-dev): bump tsd from 0.32.0 to 0.33.0 in /packages/web-api in #2334 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /packages/web-api in #2327 - Thanks @dependabot!
🧰 Maintenance
🎉 New Contributors
- @brianbegy made their first contribution in #2314
- @behcet made their first contribution in #2332
Package: https://www.npmjs.com/package/@slack/web-api/v/7.10.0
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.9.3...@slack/web-api@7.10.0
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/144?closed=1
@slack/types@2.16.0
What's Changed
The markdown block is now supported! Display formatted markdown in messages with this release:
const response = await client.chat.postMessage({
channel: "C0123456789",
text: "a bold message appears",
blocks: [
{
type: "markdown",
text: "**this is bold**",
},
],
});👾 Enhancements
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
- docs(types): fix markdown block type annotation in #2298 - Thanks @zimeg!
- docs: autogenerated typedoc reference in #2308 - Thanks @lukegalbraithrussell!
🧰 Maintenance
- chore(deps-dev): bump tsd from 0.32.0 to 0.33.0 in /packages/types in #2333 - Thanks @dependabot!
- chore(types): release @slack/types@2.16.0 in #2339 - Thanks @zimeg!
Package: https://www.npmjs.com/package/@slack/types/v/2.16.0
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/types@2.15.0...@slack/types@2.16.0
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/146?closed=1
@slack/cli-hooks@1.2.1
What's changed
This release redirects the link to the changelog to the wonderful pages of docs.slack.dev/changelog ✨
📚 Documentation
- docs: update links, copy edit, apply style guide in #2294 - Thanks @haleychaas!
🤖 Dependencies
- chore(deps-dev): bump @biomejs/biome to v2 for all packages in #2281 - Thanks @mwbrooks!
- chore(deps-dev): bump sinon from 20.0.0 to 21.0.0 in /packages/cli-hooks in the dev-sinon group in #2266 - Thanks @dependabot!
- chore(deps-dev): bump @types/node from 22.15.32 to 24.0.3 in /packages/cli-hooks in #2265 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 in /packages/cli-hooks in #2226 - Thanks @dependabot!
- chore(deps-dev): bump sinon from 19.0.5 to 20.0.0 in /packages/cli-hooks in the dev-sinon group in #2202 - Thanks @dependabot!
- chore(deps-dev): bump typescript from 5.7.3 to 5.8.2 in /packages/cli-hooks in #2161 - Thanks @dependabot!
- chore(deps-dev): bump shx from 0.3.4 to 0.4.0 in /packages/cli-hooks in #2185 - Thanks @dependabot!
🧰 Maintenance
- test: upload individual test results to codecov to gather stats in #2178 - Thanks @zimeg!
- chore(cli-hooks): release @slack/cli-hooks@1.2.1 in #2299 - Thanks @zimeg!
🎉 New contributors
- @haleychaas made their first contribution in #2294!
Milestone: https://github.com/slackapi/node-slack-sdk/milestone/101
Full Changelog: https://github.com/slackapi/node-slack-sdk/compare/@slack/cli-hooks@1.2.0...@slack/cli-hooks@1.2.1