Bolt JS
What's Changed
Bring magic to a conversation with sayStream for streaming messages and show loading status with setStatus. Now available for app.event and app.message listeners:
app.event('app_mention', async ({ sayStream, setStatus }) => {
setStatus({
status: 'Thinking...',
loading_messages: ['Waking up...', 'Loading a witty response...'],
});
const stream = sayStream({ buffer_size: 100 });
await stream.append({ markdown_text: 'Thinking... :thinking_face:\n\n' });
await stream.append({ markdown_text: 'Here is my response!' });
await stream.stop();
});
The respond function now accepts thread_ts to publish responses in a thread:
app.action('my_action', async ({ ack, respond }) => {
await ack();
await respond({ text: 'Replying in thread!', thread_ts: '1234567890.123456' });
});
Configure ping timeouts, reconnect behavior, and other Socket Mode settings directly through App options:
const app = new App({
socketMode: true,
appToken: process.env.SLACK_APP_TOKEN,
token: process.env.SLACK_BOT_TOKEN,
clientPingTimeout: 15000,
serverPingTimeout: 60000,
pingPongLoggingEnabled: true,
});
👾 Enhancements
- feat: add support for sayStream listener argument in #2841 - Thanks @WilliamBergamin!
- feat: surface the setStatus argument to listeners if required event details are available in #2843 - Thanks @WilliamBergamin!
- Add thread_ts to RespondFn type in #2732 - Thanks @misscoded!
- feat(SocketModeReceiver): expose Socket Mode timeout and reconnect options in #2786 - Thanks @shivasymbl!
- Enable esModuleInterop in tsconfig in #2719 - Thanks @misscoded!
🐛 Fixes
- fix: Improve ESM compatibility for named exports in #2724 - Thanks @grantjoy!
- Fixed edge case when there was error during authorize in #2753 - Thanks @shlomisas!
📚 Documentation
- docs: add "random fact generator" custom step workshop to tutorials in #2694 - Thanks @haleychaas!
- docs: rework ai tutorial to use openai provider and starter template in #2731 - Thanks @haleychaas!
- docs: Deploy with Vercel in #2767 - Thanks @haleychaas!
- docs: Add Vercel note about AI Gateway token needed only locally in #2781 - Thanks @haleychaas!
- Docs: Add headings so copy as markdown button shows up in #2796 - Thanks @haleychaas!
- docs: update links to tools reference pages to avoid redirects in #2722 - Thanks @zimeg!
- docs: updates outmoded links in #2737 - Thanks @lukegalbraithrussell!
- docs: updates outmoded steps from apps links in #2738 - Thanks @lukegalbraithrussell!
🧰 Maintenance
- refactor: consolidate event channel and thread extraction in #2830 - Thanks @WilliamBergamin!
- chore: consolidate context utility creators in #2828 - Thanks @WilliamBergamin!
- build: use pinned minimum supported node18 version for type checks in #2801 - Thanks @zimeg!
- build: include the package lockfile for custom receiver example in #2744 - Thanks @zimeg!
- ci: support node 24 in #2831 - Thanks @zimeg!
- ci: perform sample and example app tests on regression schedules in #2743 - Thanks @zimeg!
- ci(deps): auto-approve / auto-merge dependencies from dependabot in #2780 - Thanks @mwbrooks!
- chore: Add .github/CODEOWNERS file in #2718 - Thanks @mwbrooks!
- chore: add AGENTS.md in #2826 - Thanks @WilliamBergamin!
- chore(release): version @slack/bolt@4.7.0 in #2848 - Thanks @zimeg!
🎁 Dependencies
Core
- chore(deps): update @slack/types requirement from ^2.18.0 to ^2.19.0 in #2727 - Thanks @dependabot[bot]!
- chore(deps): update @slack/types requirement from ^2.19.0 to ^2.20.0 in #2790 - Thanks @dependabot[bot]!
- chore(deps): update @slack/types requirement from ^2.20.0 to ^2.20.1 in #2820 - Thanks @dependabot[bot]!
- chore(deps): update @slack/web-api requirement from ^7.12.0 to ^7.13.0 in #2730 - Thanks @dependabot[bot]!
- chore(deps): update @slack/web-api requirement from ^7.13.0 to ^7.14.1 in #2791 - Thanks @dependabot[bot]!
- chore(deps): update @slack/web-api requirement from ^7.14.1 to ^7.15.0 in #2817 - Thanks @dependabot[bot]!
- chore(deps): update @slack/socket-mode requirement from ^2.0.5 to ^2.0.6 in #2816 - Thanks @dependabot[bot]!
- chore(deps): update @slack/logger requirement from ^4.0.0 to ^4.0.1 in #2818 - Thanks @dependabot[bot]!
- chore(deps): update @slack/oauth requirement from ^3.0.4 to ^3.0.5 in #2819 - Thanks @dependabot[bot]!
- chore(deps): bump actions/stale from 10.0.0 to 10.1.0 in #2706 - Thanks @dependabot[bot]!
- chore(deps): bump actions/stale from 10.1.0 to 10.1.1 in #2756 - Thanks @dependabot[bot]!
- chore(deps): bump actions/stale from 10.1.1 to 10.2.0 in #2804 - Thanks @dependabot[bot]!
- chore(deps): bump actions/setup-node from 5.0.0 to 6.0.0 in #2707 - Thanks @dependabot[bot]!
- chore(deps): bump actions/setup-node from 6.0.0 to 6.1.0 in #2757 - Thanks @dependabot[bot]!
- chore(deps): bump actions/setup-node from 6.1.0 to 6.2.0 in #2775 - Thanks @dependabot[bot]!
- chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 in #2833 - Thanks @dependabot[bot]!
- chore(deps): bump actions/checkout from 5.0.0 to 6.0.0 in #2729 - Thanks @dependabot[bot]!
- chore(deps): bump actions/checkout from 6.0.0 to 6.0.1 in #2758 - Thanks @dependabot[bot]!
- chore(deps): bump actions/checkout from 6.0.1 to 6.0.2 in #2774 - Thanks @dependabot[bot]!
- chore(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2 in #2755 - Thanks @dependabot[bot]!
- chore(deps): bump codecov/codecov-action from 5.5.2 to 6.0.0 in #2834 - Thanks @dependabot[bot]!
- chore(deps): bump dependabot/fetch-metadata from 2.5.0 to 3.0.0 in #2835 - Thanks @dependabot[bot]!
- chore(deps): bump slackapi/slack-github-action from 2.1.1 to 3.0.1 in #2832 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.9.1 to 24.10.0 in #2708 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.10.0 to 24.10.1 in #2720 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.10.1 to 25.0.3 in #2746 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.0.6 to 25.0.9 in #2762 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.0.9 to 25.0.10 in #2769 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.0.10 to 25.2.0 in #2776 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.2.0 to 25.2.2 in #2782 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.2.2 to 25.2.3 in #2792 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.2.3 to 25.3.0 in #2798 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.3.0 to 25.3.3 in #2805 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/socket-mode-oauth in #2716 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/deploy-aws-lambda in #2709 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/deploy-heroku in #2710 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/getting-started-typescript in #2711 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/message-metadata in #2712 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/oauth in #2713 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/oauth-express-receiver in #2714 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/socket-mode in #2715 - Thanks @dependabot[bot]!
- chore(deps): bump @koa/router from 14.0.0 to 15.0.0 in /examples/custom-receiver in #2733 - Thanks @dependabot[bot]!
- chore(deps): bump @koa/router from 15.0.0 to 15.3.1 in /examples/custom-receiver in #2812 - Thanks @dependabot[bot]!
- chore(deps): bump @koa/router from 15.3.1 to 15.4.0 in /examples/custom-receiver in #2824 - Thanks @dependabot[bot]!
- chore(deps): bump @slack/oauth from 3.0.4 to 3.0.5 in /examples/custom-receiver in #2823 - Thanks @dependabot[bot]!
- chore(deps): bump ajv from 8.17.1 to 8.18.0 in /examples/custom-receiver in #2797 - Thanks @dependabot[bot]!
- chore(deps): bump axios from 1.13.2 to 1.13.5 in /examples/custom-receiver in #2785 - Thanks @dependabot[bot]!
- chore(deps): bump dotenv from 17.2.3 to 17.2.4 in /examples/custom-receiver in #2784 - Thanks @dependabot[bot]!
- chore(deps): bump dotenv from 17.2.4 to 17.3.1 in /examples/custom-receiver in #2793 - Thanks @dependabot[bot]!
- chore(deps): bump dotenv from 17.3.1 to 17.4.0 in /examples/custom-receiver in #2845 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.6.2 to 5.7.1 in /examples/custom-receiver in #2764 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.7.1 to 5.7.2 in /examples/custom-receiver in #2770 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.7.2 to 5.7.4 in /examples/custom-receiver in #2777 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.7.4 to 5.8.1 in /examples/custom-receiver in #2810 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.8.1 to 5.8.2 in /examples/custom-receiver in #2821 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.8.2 to 5.8.3 in /examples/custom-receiver in #2829 - Thanks @dependabot[bot]!
- chore(deps): bump fastify from 5.8.3 to 5.8.4 in /examples/custom-receiver in #2837 - Thanks @dependabot[bot]!
- chore(deps): bump koa from 3.1.1 to 3.1.2 in /examples/custom-receiver in #2803 - Thanks @dependabot[bot]!
- chore(deps): bump koa from 3.1.1 to 3.1.2 in /examples/custom-receiver in #2809 - Thanks @dependabot[bot]!
- chore(deps): bump koa from 3.1.2 to 3.2.0 in /examples/custom-receiver in #2846 - Thanks @dependabot[bot]!
- chore(deps): bump path-to-regexp from 8.3.0 to 8.4.0 in /examples/custom-receiver in #2842 - Thanks @dependabot[bot]!
- chore(deps): bump qs from 6.14.0 to 6.14.1 in /examples/custom-receiver in #2759 - Thanks @dependabot[bot]!
- chore(deps): bump qs from 6.14.1 to 6.14.2 in /examples/custom-receiver in #2787 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.10.4 to 25.0.3 in /examples/custom-receiver in #2748 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.0.6 to 25.0.9 in /examples/custom-receiver in #2763 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.0.9 to 25.0.10 in /examples/custom-receiver in #2771 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.0.10 to 25.2.0 in /examples/custom-receiver in #2778 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.2.0 to 25.2.2 in /examples/custom-receiver in #2783 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.2.2 to 25.2.3 in /examples/custom-receiver in #2794 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.2.3 to 25.3.0 in /examples/custom-receiver in #2799 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in /examples/custom-receiver in #2806 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.19.11 to 22.19.13 in /examples/custom-receiver in #2808 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.19.13 to 22.19.15 in /examples/custom-receiver in #2811 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.19.15 to 24.12.0 in /examples/custom-receiver in #2836 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.12.0 to 24.12.2 in /examples/custom-receiver in #2844 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/koa from 3.0.1 to 3.0.2 in /examples/custom-receiver in #2825 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.10.4 to 25.0.3 in /examples/getting-started-typescript in #2750 - Thanks @dependabot[bot]!
- chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 in /examples/getting-started-typescript in #2839 - Thanks @dependabot[bot]!
- chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 in /examples/custom-receiver in #2838 - Thanks @dependabot[bot]!
- chore(deps-dev): update @tsconfig/node18 requirement from ^18.2.4 to ^18.2.5 in /examples/getting-started-typescript in #2721 - Thanks @dependabot[bot]!
- chore(deps-dev): update @tsconfig/node18 requirement from ^18.2.5 to ^18.2.6 in /examples/getting-started-typescript in #2726 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.22.0 to ^4.23.0 in /examples/deploy-aws-lambda in #2717 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.23.0 to ^4.25.0 in /examples/deploy-aws-lambda in #2725 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.25.0 to ^4.27.0 in /examples/deploy-aws-lambda in #2734 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.27.0 to ^4.28.0 in /examples/deploy-aws-lambda in #2741 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.28.0 to ^4.29.0 in /examples/deploy-aws-lambda in #2749 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.30.0 to ^4.31.0 in /examples/deploy-aws-lambda in #2765 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.31.0 to ^4.31.2 in /examples/deploy-aws-lambda in #2779 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.31.2 to ^4.32.0 in /examples/deploy-aws-lambda in #2795 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.32.0 to ^4.33.0 in /examples/deploy-aws-lambda in #2800 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.33.0 to ^4.33.3 in /examples/deploy-aws-lambda in #2847 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless-offline requirement from ^14.4.0 to ^14.5.0 in /examples/deploy-aws-lambda in #2807 - Thanks @dependabot[bot]!
👋 New Contributors 🎉
- @grantjoy made their first contribution in https://github.com/slackapi/bolt-js/pull/2724
- @shlomisas made their first contribution in https://github.com/slackapi/bolt-js/pull/2753
- @shivasymbl made their first contribution in https://github.com/slackapi/bolt-js/pull/2786
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.6.0...@slack/bolt@4.7.0 Milestone: https://github.com/slackapi/bolt-js/milestone/61 Package: https://www.npmjs.com/package/@slack/bolt/v/4.7.0
📚 Changelog
What's Changed
👾 Enhancements
- feat: add support for work objects in https://github.com/slackapi/bolt-js/pull/2652 - Thanks @vegeris!
- feat: extend ack timeout for function executed events in https://github.com/slackapi/bolt-js/pull/2645 - Thanks @WilliamBergamin!
- feat: add hasBeenCalled on complete & fail utility in https://github.com/slackapi/bolt-js/pull/2677 - Thanks @WilliamBergamin!
🐛 Bug fixes
- fix: anticipate optional chained parameters as undefined when parsing events details in https://github.com/slackapi/bolt-js/pull/2700 - Thanks @hello-ashleyintech!
📚 Documentation
- docs: add AI to quickstart in https://github.com/slackapi/bolt-js/pull/2676 - Thanks @haleychaas!
🤖 Dependencies
- chore(deps-dev): update serverless requirement from ^4.21.1 to ^4.22.0 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2704
- chore(deps-dev): bump @types/node from 24.8.1 to 24.9.1 in https://github.com/slackapi/bolt-js/pull/2703
- chore(deps-dev): bump @types/node from 24.7.2 to 24.8.1 in https://github.com/slackapi/bolt-js/pull/2692
- chore(deps-dev): update serverless requirement from ^4.20.2 to ^4.21.1 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2691
- chore(deps-dev): bump @types/node from 24.7.0 to 24.7.2 in https://github.com/slackapi/bolt-js/pull/2679
- chore(deps): update @slack/types requirement from ^2.17.0 to ^2.18.0 in https://github.com/slackapi/bolt-js/pull/2702
- chore(deps): update @slack/web-api requirement from ^7.11.0 to ^7.12.0 in https://github.com/slackapi/bolt-js/pull/2701
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/message-metadata in https://github.com/slackapi/bolt-js/pull/2687
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/socket-mode in https://github.com/slackapi/bolt-js/pull/2686
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/socket-mode-oauth in https://github.com/slackapi/bolt-js/pull/2685
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/oauth in https://github.com/slackapi/bolt-js/pull/2684
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/oauth-express-receiver in https://github.com/slackapi/bolt-js/pull/2683
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/getting-started-typescript in https://github.com/slackapi/bolt-js/pull/2682
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/deploy-heroku in https://github.com/slackapi/bolt-js/pull/2681
- chore(deps): update @slack/bolt requirement from ^4.4.0 to ^4.5.0 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2680
🧰 Maintenance
- chore(release): version @slack/bolt@4.6.0 in https://github.com/slackapi/bolt-js/pull/2705 - Thanks @vegeris!
Milestone: https://github.com/slackapi/bolt-js/milestone/60?closed=1 Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.5.0...@slack/bolt@4.6.0 Package: https://www.npmjs.com/package/@slack/bolt/v/4.6.0
AI-Enabled Features: Loading States, Text Streaming, and Feedback Buttons
🍿 Preview
https://github.com/user-attachments/assets/bc16597b-1632-46bb-b7aa-fe22330daf84
📚 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 run
After 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:
Web Client SDK:
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
});
Assistant Class:
const assistant = new Assistant({
threadStarted: assistantThreadStarted,
threadContextChanged: assistantThreadContextChanged,
userMessage: async ({ client, context, logger, message, getThreadContext, say, setTitle, setStatus }) => {
await setStatus({
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…',
],
});
},
});
🔮 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.ts
2) 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 https://github.com/slackapi/bolt-js/pull/2674 - Thanks @zimeg!
🐛 Bug fixes
- Fix: allows Assistant say function to properly pass metadata in https://github.com/slackapi/bolt-js/pull/2569 - Thanks @jamessimone!
- refactor: check payload type before extracting assistant thread info in https://github.com/slackapi/bolt-js/pull/2603 - Thanks @zimeg!
- fix: better ES module support for App class in https://github.com/slackapi/bolt-js/pull/2632 - Thanks @malewis5!
- fix(typescript): accept empty list of suggested prompts for the assistant class in https://github.com/slackapi/bolt-js/pull/2650 - Thanks @zimeg!
📚 Documentation
- docs(fix): redirect links for project package migration guides to the tools site in https://github.com/slackapi/bolt-js/pull/2539 - Thanks @zimeg!
- Docs: moved over custom steps dynamic options page. in https://github.com/slackapi/bolt-js/pull/2552 - Thanks @technically-tracy!
- docs: updated nav in https://github.com/slackapi/bolt-js/pull/2564 - Thanks @technically-tracy!
- docs: rotate tokens on a separate schedule with the oauth package in https://github.com/slackapi/bolt-js/pull/2558 - Thanks @zimeg!
- docs: guide quick start app creation using the slack cli in https://github.com/slackapi/bolt-js/pull/2535 - Thanks @zimeg!
- Update event-listening.md in https://github.com/slackapi/bolt-js/pull/2584 - Thanks @jfbn!
- docs: Update language around AI apps in https://github.com/slackapi/bolt-js/pull/2606 - Thanks @haleychaas!
- docs: fix listener middleware function and use global middleware examples in https://github.com/slackapi/bolt-js/pull/2610 - Thanks @zimeg!
- docs: update ai hugging face tutorial examples in https://github.com/slackapi/bolt-js/pull/2613 - Thanks @zimeg!
- docs: guide building an app tutorial using the slack cli in https://github.com/slackapi/bolt-js/pull/2597 - Thanks @zimeg!
- docs: use the app logger in examples in https://github.com/slackapi/bolt-js/pull/2651 - Thanks @zimeg!
- docs: updates for combined quickstart in https://github.com/slackapi/bolt-js/pull/2661 - Thanks @haleychaas!
🤖 Dependencies
- Update axios dependency to version ^1.12.0 in https://github.com/slackapi/bolt-js/pull/2657 - Thanks @malewis5!
- chore(deps): update @slack/web-api requirement from ^7.9.1 to ^7.9.2 in https://github.com/slackapi/bolt-js/pull/2541 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/deploy-heroku in https://github.com/slackapi/bolt-js/pull/2542 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/getting-started-typescript in https://github.com/slackapi/bolt-js/pull/2543 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/oauth in https://github.com/slackapi/bolt-js/pull/2544 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/oauth-express-receiver in https://github.com/slackapi/bolt-js/pull/2545 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/socket-mode-oauth in https://github.com/slackapi/bolt-js/pull/2546 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2547 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/socket-mode in https://github.com/slackapi/bolt-js/pull/2548 - Thanks @dependabot[bot]!
- chore(deps): update @slack/bolt requirement from ^4.3.0 to ^4.4.0 in /examples/message-metadata in https://github.com/slackapi/bolt-js/pull/2549 - Thanks @dependabot[bot]!
- chore(deps): bump the docusaurus group in /docs with 5 updates in https://github.com/slackapi/bolt-js/pull/2553 - Thanks @dependabot[bot]!
- chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs in https://github.com/slackapi/bolt-js/pull/2574 - Thanks @dependabot[bot]!
- chore(deps): update @slack/web-api requirement from ^7.9.2 to ^7.9.3 in https://github.com/slackapi/bolt-js/pull/2578 - Thanks @dependabot[bot]!
- chore(deps): bump dotenv from 16.6.1 to 17.0.0 in /examples/getting-started-typescript in https://github.com/slackapi/bolt-js/pull/2589 - Thanks @dependabot[bot]!
- chore(deps): bump dotenv from 16.6.1 to 17.0.0 in /examples/custom-receiver in https://github.com/slackapi/bolt-js/pull/2590 - Thanks @dependabot[bot]!
- chore(deps): update @slack/types requirement from ^2.14.0 to ^2.15.0 in https://github.com/slackapi/bolt-js/pull/2600 - Thanks @dependabot[bot]!
- chore(deps): bump on-headers and compression in /docs in https://github.com/slackapi/bolt-js/pull/2607 - Thanks @dependabot[bot]!
- chore(deps): bump slackapi/slack-github-action from 2.1.0 to 2.1.1 in https://github.com/slackapi/bolt-js/pull/2615 - Thanks @dependabot[bot]!
- chore(deps): bump @koa/router from 13.1.1 to 14.0.0 in /examples/custom-receiver in https://github.com/slackapi/bolt-js/pull/2622 - Thanks @dependabot[bot]!
- chore(deps): update @slack/types requirement from ^2.15.0 to ^2.16.0 in https://github.com/slackapi/bolt-js/pull/2633 - Thanks @dependabot[bot]!
- chore(deps): update @slack/web-api requirement from ^7.9.3 to ^7.10.0 in https://github.com/slackapi/bolt-js/pull/2634 - Thanks @dependabot[bot]!
- chore(deps): bump codecov/codecov-action from 5.4.3 to 5.5.0 in https://github.com/slackapi/bolt-js/pull/2643 - Thanks @dependabot[bot]!
- chore(deps): bump actions/checkout from 4.2.2 to 5.0.0 in https://github.com/slackapi/bolt-js/pull/2642 - Thanks @dependabot[bot]!
- chore(deps): update @slack/socket-mode requirement from ^2.0.4 to ^2.0.5 in https://github.com/slackapi/bolt-js/pull/2646 - Thanks @dependabot[bot]!
- chore(deps): update @slack/oauth requirement from ^3.0.3 to ^3.0.4 in https://github.com/slackapi/bolt-js/pull/2647 - Thanks @dependabot[bot]!
- chore(deps): bump codecov/codecov-action from 5.5.0 to 5.5.1 in https://github.com/slackapi/bolt-js/pull/2662 - Thanks @dependabot[bot]!
- chore(deps): bump actions/stale from 9.1.0 to 10.0.0 in https://github.com/slackapi/bolt-js/pull/2663 - Thanks @dependabot[bot]!
- chore(deps): bump actions/setup-node from 4.4.0 to 5.0.0 in https://github.com/slackapi/bolt-js/pull/2664 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.15.19 to 22.15.21 in https://github.com/slackapi/bolt-js/pull/2540 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.14.3 to ^4.14.4 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2554 - Thanks @dependabot[bot]!
- chore(deps-dev): bump stylelint from 16.19.1 to 16.20.0 in /docs in https://github.com/slackapi/bolt-js/pull/2561 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.14.4 to ^4.15.1 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2562 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.15.21 to 22.15.29 in https://github.com/slackapi/bolt-js/pull/2563 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.15.29 to 22.15.30 in https://github.com/slackapi/bolt-js/pull/2566 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.15.1 to ^4.17.0 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2567 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.15.30 to 24.0.3 in https://github.com/slackapi/bolt-js/pull/2570 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.15.32 to 24.0.3 in /examples/getting-started-typescript in https://github.com/slackapi/bolt-js/pull/2571 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 22.15.32 to 24.0.3 in /examples/custom-receiver in https://github.com/slackapi/bolt-js/pull/2572 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.17.0 to ^4.17.1 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2577 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.0.3 to 24.0.7 in https://github.com/slackapi/bolt-js/pull/2591 - Thanks @dependabot[bot]!
- chore(deps-dev): bump stylelint from 16.20.0 to 16.21.0 in /docs in https://github.com/slackapi/bolt-js/pull/2593 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.0.7 to 24.0.10 in https://github.com/slackapi/bolt-js/pull/2594 - Thanks @dependabot[bot]!
- chore(deps-dev): bump stylelint from 16.21.0 to 16.21.1 in /docs in https://github.com/slackapi/bolt-js/pull/2596 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.0.10 to 24.0.14 in https://github.com/slackapi/bolt-js/pull/2604 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.0.14 to 24.0.15 in https://github.com/slackapi/bolt-js/pull/2609 - Thanks @dependabot[bot]!
- chore(deps-dev): bump stylelint-config-standard from 38.0.0 to 39.0.0 in /docs in https://github.com/slackapi/bolt-js/pull/2617 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.0.15 to 24.2.0 in https://github.com/slackapi/bolt-js/pull/2619 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.17.1 to ^4.17.2 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2621 - Thanks @dependabot[bot]!
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /examples/custom-receiver in https://github.com/slackapi/bolt-js/pull/2620 - Thanks @dependabot[bot]!
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /examples/getting-started-typescript in https://github.com/slackapi/bolt-js/pull/2623 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.17.2 to ^4.18.0 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2624 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.2.0 to 24.2.1 in https://github.com/slackapi/bolt-js/pull/2626 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.2.1 to 24.3.0 in https://github.com/slackapi/bolt-js/pull/2635 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.18.0 to ^4.18.1 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2636 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.3.0 to 24.3.1 in https://github.com/slackapi/bolt-js/pull/2648 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.3.1 to 24.4.0 in https://github.com/slackapi/bolt-js/pull/2655 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.4.0 to 24.5.2 in https://github.com/slackapi/bolt-js/pull/2658 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.18.1 to ^4.19.1 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2659 - Thanks @dependabot[bot]!
- chore(deps-dev): bump @types/node from 24.5.2 to 24.7.0 in https://github.com/slackapi/bolt-js/pull/2669 - Thanks @dependabot[bot]!
- chore(deps-dev): update serverless requirement from ^4.19.1 to ^4.20.2 in /examples/deploy-aws-lambda in https://github.com/slackapi/bolt-js/pull/2670 - Thanks @dependabot[bot]!
- chore(deps-dev): bump typescript from 5.9.2 to 5.9.3 in /examples/custom-receiver in https://github.com/slackapi/bolt-js/pull/2671 - Thanks @dependabot[bot]!
- chore(deps-dev): bump typescript from 5.9.2 to 5.9.3 in /examples/getting-started-typescript in https://github.com/slackapi/bolt-js/pull/2672 - Thanks @dependabot[bot]!
🧰 Maintaince
- ci: pin actions workflow step hashes and use minimum permissions in https://github.com/slackapi/bolt-js/pull/2537 - Thanks @zimeg!
- chore: update dependabot to open one PR for all @slack dependencies in /examples in https://github.com/slackapi/bolt-js/pull/2550 - Thanks @WilliamBergamin!
- Revert "chore: update dependabot to open one PR for all @slack depend… in https://github.com/slackapi/bolt-js/pull/2551 - Thanks @WilliamBergamin!
- build: clone repository "docs" and configuration when syncing project docs + removing separate docusaurus build in https://github.com/slackapi/bolt-js/pull/2586 - Thanks @lukegalbraithrussell!
- Revert "build: clone repository "docs" and configuration when syncing project docs + removing separate docusaurus build" in https://github.com/slackapi/bolt-js/pull/2595 - Thanks @lukegalbraithrussell!
- ci: send a notification of scheduled failing tests in https://github.com/slackapi/bolt-js/pull/2601 - Thanks @zimeg!
- ci: output verbose details when installing packages for tests in https://github.com/slackapi/bolt-js/pull/2602 - Thanks @zimeg!
- Build: remove docusaurus configuration files in https://github.com/slackapi/bolt-js/pull/2614 - Thanks @lukegalbraithrussell!
- test: swap rewiremock with proxyquire in https://github.com/slackapi/bolt-js/pull/2629 - Thanks @WilliamBergamin!
- ci: post regression notifications if scheduled tests do not succeed in https://github.com/slackapi/bolt-js/pull/2667 - Thanks @zimeg!
- chore(release): version @slack/bolt@4.5.0 in https://github.com/slackapi/bolt-js/pull/2675 - Thanks @zimeg!
New Contributors 🎉
- @jamessimone made their first contribution in https://github.com/slackapi/bolt-js/pull/2569
- @jfbn made their first contribution in https://github.com/slackapi/bolt-js/pull/2584
- @malewis5 made their first contribution in https://github.com/slackapi/bolt-js/pull/2632
Milestone: https://github.com/slackapi/bolt-js/milestone/59?closed=1 Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.4.0...@slack/bolt@4.5.0 Package: https://www.npmjs.com/package/@slack/bolt/v/4.5.0
What's Changed
🚀 Features
- feat: support for synchronous custom step handling by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2408
🐛 Fixes
- fix: socket mode should warn when ack is invoked multiple times by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2519
🧰 Maintenance
- fix: bump sinon version by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2522
- test: confirm socket mode receiver acknowledges processed events by @zimeg in https://github.com/slackapi/bolt-js/pull/2520
- chore: release @slack/bolt@4.4.0 by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2538
🤖 Dependencies
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/oauth-express-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2532
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/socket-mode-oauth by @dependabot in https://github.com/slackapi/bolt-js/pull/2527
- chore(deps-dev): bump @types/node from 22.15.3 to 22.15.17 by @dependabot in https://github.com/slackapi/bolt-js/pull/2523
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/oauth by @dependabot in https://github.com/slackapi/bolt-js/pull/2531
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2524
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/socket-mode by @dependabot in https://github.com/slackapi/bolt-js/pull/2530
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/message-metadata by @dependabot in https://github.com/slackapi/bolt-js/pull/2529
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/deploy-heroku by @dependabot in https://github.com/slackapi/bolt-js/pull/2525
- chore(deps-dev): update serverless requirement from ^4.14.2 to ^4.14.3 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2526
- chore(deps): update @slack/bolt requirement from ^4.2.1 to ^4.3.0 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2528
- chore(deps-dev): bump @types/node from 22.15.17 to 22.15.19 by @dependabot in https://github.com/slackapi/bolt-js/pull/2536
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.3.0...@slack/bolt@4.4.0 Milstone: https://github.com/slackapi/bolt-js/milestone/58?closed=1
What's Changed
🐛 Fixes
- fix: configure dependbot to group react deps by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2440
- fix: refactor function handler for follow up auto ack behavior by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2424
- fix: always attach the function bot access token to the context if available by @zimeg in https://github.com/slackapi/bolt-js/pull/2513
- fix: allow all web api client option types in app initialization by @zimeg in https://github.com/slackapi/bolt-js/pull/2501
- fix: always attach the function inputs to the context if available by @zimeg in https://github.com/slackapi/bolt-js/pull/2517
📚 Documentation
- Docs - matches site css to slack.dev and docs.slack.dev by @slackapi in https://github.com/slackapi/bolt-js/pull/2434
- fixes broken apps navbar link by @slackapi in https://github.com/slackapi/bolt-js/pull/2443
- API Docs: AI app with Hugging Face tutorial by @haleychaas in https://github.com/slackapi/bolt-js/pull/2464
- API Docs: Fix directory paste error by @haleychaas in https://github.com/slackapi/bolt-js/pull/2466
- API Docs: Update links to go to new site by @haleychaas in https://github.com/slackapi/bolt-js/pull/2494
- API Docs: Update AI tutorial to include markdown block by @haleychaas in https://github.com/slackapi/bolt-js/pull/2486
- API Docs: Replace OpenAI references with Hugging Face by @haleychaas in https://github.com/slackapi/bolt-js/pull/2507
🧰 Maintenance
- ci: label updates to example app dependencies with an 'area:examples' label by @zimeg in https://github.com/slackapi/bolt-js/pull/2485
- ci: increase updated versions to depend on the latest releases by @zimeg in https://github.com/slackapi/bolt-js/pull/2468
🤖 Dependencies
- chore(deps-dev): bump stylelint from 16.14.1 to 16.15.0 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2435
- chore(deps-dev): bump @types/node from 22.13.5 to 22.13.8 by @dependabot in https://github.com/slackapi/bolt-js/pull/2436
- chore(deps-dev): bump @types/node from 22.13.8 to 22.13.9 by @dependabot in https://github.com/slackapi/bolt-js/pull/2441
- chore(deps): bump the react group in /docs with 2 updates by @dependabot in https://github.com/slackapi/bolt-js/pull/2442
- chore(deps-dev): bump typescript from 5.7.3 to 5.8.2 in /examples/custom-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2438
- chore(deps-dev): bump typescript from 5.7.3 to 5.8.2 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2439
- Docs: Update reference to "Concepts guides". by @technically-tracy in https://github.com/slackapi/bolt-js/pull/2446
- chore(deps-dev): bump @types/node from 22.13.9 to 22.13.10 by @dependabot in https://github.com/slackapi/bolt-js/pull/2450
- chore(deps): bump prismjs from 1.29.0 to 1.30.0 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2452
- chore(deps): bump axios to 1.8.3 to address CVE-2025-27152 by @zimeg in https://github.com/slackapi/bolt-js/pull/2453
- chore(deps): bump @babel/helpers from 7.26.0 to 7.26.10 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2456
- chore(deps): bump @babel/runtime from 7.26.0 to 7.26.10 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2457
- chore(deps): bump @babel/runtime-corejs3 from 7.26.9 to 7.26.10 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2458
- chore(deps-dev): bump @types/node from 22.13.10 to 22.13.13 by @dependabot in https://github.com/slackapi/bolt-js/pull/2463
- chore(deps-dev): bump @types/node from 22.13.13 to 22.13.14 by @dependabot in https://github.com/slackapi/bolt-js/pull/2467
- chore(deps-dev): bump stylelint from 16.15.0 to 16.17.0 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2469
- chore(deps): update @slack/socket-mode requirement from ^2.0.3 to ^2.0.4 by @dependabot in https://github.com/slackapi/bolt-js/pull/2470
- chore(deps): bump css-minimizer-webpack-plugin from 7.0.0 to 7.0.2 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2471
- chore(deps): update @slack/types requirement from ^2.13.0 to ^2.14.0 by @dependabot in https://github.com/slackapi/bolt-js/pull/2472
- chore(deps): update @slack/web-api requirement from ^7.8.0 to ^7.9.1 by @dependabot in https://github.com/slackapi/bolt-js/pull/2473
- chore(deps): update @slack/oauth requirement from ^3.0.2 to ^3.0.3 by @dependabot in https://github.com/slackapi/bolt-js/pull/2474
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2475
- chore(deps-dev): update serverless requirement from ^4.4.18 to ^4.9.1 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2476
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/deploy-heroku by @dependabot in https://github.com/slackapi/bolt-js/pull/2477
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2478
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/message-metadata by @dependabot in https://github.com/slackapi/bolt-js/pull/2479
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/oauth by @dependabot in https://github.com/slackapi/bolt-js/pull/2480
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/oauth-express-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2481
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/socket-mode by @dependabot in https://github.com/slackapi/bolt-js/pull/2482
- chore(deps): update @slack/bolt requirement from ^4.2.0 to ^4.2.1 in /examples/socket-mode-oauth by @dependabot in https://github.com/slackapi/bolt-js/pull/2483
- chore(deps): bump the react group in /docs with 2 updates by @dependabot in https://github.com/slackapi/bolt-js/pull/2488
- chore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2489
- chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 in /examples/custom-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2490
- chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2491
- chore(deps-dev): bump @types/node from 22.13.14 to 22.14.0 by @dependabot in https://github.com/slackapi/bolt-js/pull/2493
- chore(deps-dev): update serverless requirement from ^4.9.1 to ^4.11.1 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2492
- chore(deps): bump estree-util-value-to-estree from 3.3.2 to 3.3.3 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2495
- chore(deps-dev): bump @types/node from 22.14.0 to 22.14.1 by @dependabot in https://github.com/slackapi/bolt-js/pull/2498
- chore(deps-dev): update serverless requirement from ^4.11.1 to ^4.12.0 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2499
- chore(deps-dev): update serverless requirement from ^4.12.0 to ^4.14.1 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2503
- chore(deps-dev): bump stylelint-config-standard from 37.0.0 to 38.0.0 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2514
- chore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2504
- chore(deps-dev): bump @types/node from 22.14.1 to 22.15.3 by @dependabot in https://github.com/slackapi/bolt-js/pull/2511
- chore(deps-dev): update serverless requirement from ^4.14.1 to ^4.14.2 in /examples/deploy-aws-lambda by @dependabot in https://github.com/slackapi/bolt-js/pull/2516
- chore(deps): bump koa from 2.16.1 to 3.0.0 in /examples/custom-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2512
- chore: release @slack/bolt@4.3.0 by @hello-ashleyintech in https://github.com/slackapi/bolt-js/pull/2518
Thank you to all our lovely contributors ✨
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.2.1...@slack/bolt@4.3.0
What's Changed
🐛 Fixes
- bug: make
@types/expressan optional peer dependency by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2421
📚 Documentation
- docs: Syncing config files with Deno Slack SDK and Slack CLI docs by @slackapi in https://github.com/slackapi/bolt-js/pull/2373
- docs: nested sidebar format by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2374
- docs(example): update aws lambda deployment to latest dependencies by @zimeg in https://github.com/slackapi/bolt-js/pull/2383
- docs(examples): fix the "deploy to heroku" button using latest dependencies by @zimeg in https://github.com/slackapi/bolt-js/pull/2385
- docs: fixed typo in getting-started.mdx by @tomdevisser29 in https://github.com/slackapi/bolt-js/pull/2406
- docs: update getting-started.mdx by @msoyka in https://github.com/slackapi/bolt-js/pull/2402
- docs: update Heroku version in deployment guide. by @technically-tracy in https://github.com/slackapi/bolt-js/pull/2419
- docs - typo for link going to original site by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2431
- docs: Migrate custom steps tutorials. by @technically-tracy in https://github.com/slackapi/bolt-js/pull/2429
- docs: remove mention of assistants and replace with AI apps by @haleychaas in https://github.com/slackapi/bolt-js/pull/2432
🧰 Maintenance
- ci: complete all sample tests even if one fails fast by @zimeg in https://github.com/slackapi/bolt-js/pull/2386
- ci: add example app dependencies to weekly dependabot configurations by @zimeg in https://github.com/slackapi/bolt-js/pull/2387
- ci: test samples and examples with a packaged bolt build by @zimeg in https://github.com/slackapi/bolt-js/pull/2372
- fix: improve the maintainers_guide local development instruction by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2422
- chore: release @slack/bolt@4.2.1 by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2433
🤖 Dependencies
- chore(deps-dev): bump @types/node from 22.13.4 to 22.13.5 by @dependabot in https://github.com/slackapi/bolt-js/pull/2428
- chore(deps-dev): bump @types/node from 22.13.0 to 22.13.1 by @dependabot in https://github.com/slackapi/bolt-js/pull/2420
- chore(deps-dev): bump @types/node from 22.13.1 to 22.13.4 by @dependabot in https://github.com/slackapi/bolt-js/pull/2425
- chore(deps-dev): bump @types/node from 22.10.7 to 22.13.0 by @dependabot in https://github.com/slackapi/bolt-js/pull/2416
- chore(deps): bump actions/stale from 9.0.0 to 9.1.0 by @dependabot in https://github.com/slackapi/bolt-js/pull/2415
- chore(deps-dev): bump @types/node from 22.10.5 to 22.10.7 by @dependabot in https://github.com/slackapi/bolt-js/pull/2403
- chore(deps-dev): bump @types/node from 22.10.2 to 22.10.5 by @dependabot in https://github.com/slackapi/bolt-js/pull/2382
docs
- chore(deps-dev): bump stylelint-config-standard from 36.0.1 to 37.0.0 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2412
- chore(deps): bump the docusaurus group in /docs with 5 updates by @dependabot in https://github.com/slackapi/bolt-js/pull/2392
- chore(deps-dev): bump stylelint from 16.11.0 to 16.12.0 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2379
- chore(deps): bump prism-react-renderer from 2.4.0 to 2.4.1 in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2378
examples
- chore(deps-dev): bump @types/node from 18.19.71 to 22.10.7 in /examples/custom-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2404
- chore(deps-dev): bump typescript from 5.3.3 to 5.7.3 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2393
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2394
- chore(deps-dev): bump @types/node from 18.19.70 to 22.10.5 in /examples/getting-started-typescript by @dependabot in https://github.com/slackapi/bolt-js/pull/2395
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/message-metadata by @dependabot in https://github.com/slackapi/bolt-js/pull/2396
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/socket-mode-oauth by @dependabot in https://github.com/slackapi/bolt-js/pull/2400
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/socket-mode by @dependabot in https://github.com/slackapi/bolt-js/pull/2399
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/oauth-express-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2398
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/oauth by @dependabot in https://github.com/slackapi/bolt-js/pull/2397
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/custom-properties by @dependabot in https://github.com/slackapi/bolt-js/pull/2388
- chore(deps-dev): bump typescript from 5.3.3 to 5.7.3 in /examples/custom-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2390
- chore(deps): bump @slack/bolt from 3.22.0 to 4.2.0 in /examples/custom-receiver by @dependabot in https://github.com/slackapi/bolt-js/pull/2391
New Contributors
- @tomdevisser29 made their first contribution in https://github.com/slackapi/bolt-js/pull/2406
- @msoyka made their first contribution in https://github.com/slackapi/bolt-js/pull/2402
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.2.0...@slack/bolt@4.2.1
What's Changed
Hello! 👋 This release updates dependencies to keep packages secure and makes the logger of your app public for use outside of event listeners when using TypeScript! 🔐 🌲
const app = new App({ ... });
(async () => {
await app.start(process.env.PORT || 3000);
app.logger.info('⚡️ Bolt app is running!'); // The app logger can now be used here!
})();
🎁 Enhancements
- feat: make the app logger attached to the app instance public in https://github.com/slackapi/bolt-js/pull/2365 - thanks @zimeg!
🔐 Security
- chore(deps): bump slack and axios dependencies to latest secure versions in https://github.com/slackapi/bolt-js/pull/2360 - thanks @hello-ashleyintech!
📚 Documentation
- docs: show descriptions of function listener arguments in https://github.com/slackapi/bolt-js/pull/2364 - thanks @zimeg!
- docs: replace redirected or missing links to bolt documentation in https://github.com/slackapi/bolt-js/pull/2367 - thanks @zimeg!
🧰 Maintenance
- build: install @types/express@^v5 as a dev dependency for express@^5 in https://github.com/slackapi/bolt-js/pull/2355 - thanks @zimeg!
- ci: check for linting errors without writing required changes in https://github.com/slackapi/bolt-js/pull/2357 - thanks @zimeg!
- build: find the biome config schema from the installed path in https://github.com/slackapi/bolt-js/pull/2363 - thanks @zimeg!
- build: ignore autogenerated docusaurus files when running the formatter in https://github.com/slackapi/bolt-js/pull/2362 - thanks @zimeg!
- build: update the redirected repo homepage url to postfix js in https://github.com/slackapi/bolt-js/pull/2370 - thanks @zimeg!
🤖 Dependencies
- chore(deps): bump codecov/codecov-action from 4 to 5 in https://github.com/slackapi/bolt-js/pull/2349 - thanks @dependabot!
- chore(deps): bump the docusaurus group in /docs with 5 updates in https://github.com/slackapi/bolt-js/pull/2350 - thanks @dependabot!
- chore(deps): bump path-to-regexp from 1.8.0 to 1.9.0 in /docs in https://github.com/slackapi/bolt-js/pull/2352 - thanks @dependabot!
- chore(deps-dev): bump stylelint from 16.10.0 to 16.11.0 in /docs in https://github.com/slackapi/bolt-js/pull/2351 - thanks @dependabot!
- chore(deps): bump path-to-regexp and express in /docs in https://github.com/slackapi/bolt-js/pull/2358 - thanks @dependabot!
- chore(deps-dev): @types/node from 22.9.3 to 22.10.1 in https://github.com/slackapi/bolt-js/pull/2359 - thanks @dependabot!
- chore(deps): bump nanoid from 3.3.7 to 3.3.8 in /docs in https://github.com/slackapi/bolt-js/pull/2368 - thanks @dependabot!
- chore(deps-dev): @types/node from 22.10.1 to 22.10.2 in https://github.com/slackapi/bolt-js/pull/2369 - thanks @dependabot!
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.1.1...@slack/bolt@4.2.0
What's Changed
- 🏭 A fix related to the TypeScript types for the Assistant handler utilities. Fixes #2319 in #2325, thanks @misscoded!
- 📚 Our bolt-js online documentation at https://tools.slack.dev/bolt-js/ received many updates. Thanks to @lukegalbraithrussell, @haleychaas and @kuredev!
Changelog
- Docs: agents and assistants by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2295
- fix: Assistant utility types by @misscoded in https://github.com/slackapi/bolt-js/pull/2325
- Docs: Tutorial for assistant app by @haleychaas in https://github.com/slackapi/bolt-js/pull/2331
- docs: Changed "App Token" to "App-Level Tokens" by @kuredev in https://github.com/slackapi/bolt-js/pull/2336
- docs: add xapp section by @kuredev in https://github.com/slackapi/bolt-js/pull/2339
New Contributors
- @haleychaas made their first contribution in https://github.com/slackapi/bolt-js/pull/2331
- @kuredev made their first contribution in https://github.com/slackapi/bolt-js/pull/2336
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.1.0...@slack/bolt@4.1.1
What's Changed
- fix: Include metadata with Assistant
sayutil by @misscoded in https://github.com/slackapi/bolt-js/pull/2300 - docs: concept focused nav by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2302
- feat: Add
titleto setSuggestedPrompts utility by @misscoded in https://github.com/slackapi/bolt-js/pull/2308
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.0.1...@slack/bolt@4.1.0
What's Changed
- Fix a bug where parsing assistant thread message event fails for beta feature enabled apps by @seratch in https://github.com/slackapi/bolt-js/pull/2298
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.0.0...@slack/bolt@4.0.1
Bolt v4
What's Changed
New Features
Support for Agents & Assistants is now available!
Bolt now offers a simple and intuitive way to create an Agent/Assistant using the new Assistant class. Simply include the required callbacks and add the assistant to your App instance. Get up and running even quicker with a working, out-of-the-box example that utilizes OpenAI here.
Breaking Changes
We have prepared a migration guide to help BoltJS consumers migrate their Bolt v3 apps to v4.
While a few breaking changes were introduced, we don't expect a majority of bolt v3 users to require changing their apps to upgrade to v4. More complex apps may need a few tweaks. TL;DR is: if your bolt v3 app is built with TypeScript, or uses the ExpressReceiver or the AwsLambdaReceiver, or your app used previously-deprecated types or functions, best to read the migration guide.
Middleware Type Changes
In bolt we have a set of Slack*MiddlewareArgs types: for events, shortcuts, commands, and so on. They 'wrap' the underlying event payloads with additional middleware-relevant bits like a next() method, a context object for devs to augment, and so on.
Many of these types, for example the SlackEventMiddlewareArgs type, previously used a conditional to sometimes define particular additional helper utilities on the middleware arguments. For example, the say utility, or tacking on a convenience message property for message-event-related payloads. This was problematic in practice in TypeScript situations, not just internally (this change fixes https://github.com/slackapi/bolt-js/issues/2135) within the bolt codebase but for developers as well: when the payload was not of a type that required the extra utility, these properties would be required to exist on the middleware arguments but have a value of undefined. Those of us trying to build generic middleware utilities would have to deal with TS compilation errors and needing to liberally type-cast to avoid these conditional mismatches with undefined.
Instead, these MiddlewareArgs types now conditionally create a type intersection when appropriate in order to provide this conditional-utility-extension mechanism. In practice that looks something like:
type SomeMiddlewareArgs<EventType extends string = string> = {
// some type in here
} & (EventType extends 'message'
// If this is a message event, add a `message` property
? { message: EventFromType<EventType> }
: unknown
)
With the above, now when a message payload is wrapped up into middleware arguments, it will contain an appropriate message property, whereas a non-message payload will be intersected with unknown - effectively a type "noop." No more e.g. say: undefined or message: undefined to deal with!
Other Breaking Changes
- drops node v14 and v16 (are now EOL'ed)
expressto v4->v5;ExpressReceiverusers will be exposed to express v4 -> v5 breaking changes - fixes #2242- upgrades to
@slack/socket-modev2;SocketModeReceiverusers who have attached custom event listeners to the publicsocketModeClientdirectly should read the v1 -> v2 migration guide in case the major upgrade could affect them - fixes #2225 - upgrades
@slack/web-apiv7; all users should read the web-api v6->v7 migration guide to see what the scope of breaking changes theclientwithin listeners is affected by - removed exported type:
KnownKeys @slack/typesnow exist under a named exporttypes.- removed the
SocketModeFunctionsclass that had a single static method on it and instead directly exposed thedefaultProcessEventErrorHandlermethod from it. - the built-in middleware functions
ignoreSelfanddirectMentionnow no longer must be invoked as a method in order to return middleware; instead they are middleware to be used directly. this lines up the API for these built-in middlewares to match the other builtins. - AWSReceiver's
AwsEventinterface now models event payloads a bit differently; we now properly model AWS API Gateway v1 and v2 payloads separately - fixes #2272 - remove deprecated methods/modules/properties:
OptionsRequestinterfaceauthed_usersandauthed_teamsfrom event payload enveloperender-html-for-install-pathmoduleverifyandVerifyOptionsfrom theverify-requestmodulesrc/receivers/http-utils.tsmodule
Non-breaking Changes
- expose the bundled
@slack/web-apidependency under thewebApinamed export - fixed an issue in
AwsLambdaReceiverwhere apps with no registered handlers that processed an incoming event would still log out an error related to not acknowledging the request in time - fixes #2284 - dependency updates:
- upgrades
raw-bodyto v3 - upgrades
@slack/oauthto v3 - removes
promise.allsettledsince that is natively supported in node since v14 - moves
@types/tsscmpto dev dependencies since that is not exposed to developers
- upgrades
Changelog
- chore(deps-dev): bump @types/node from 22.5.5 to 22.7.4 by @dependabot in https://github.com/slackapi/bolt-js/pull/2276
- chore(deps-dev): bump @types/node from 22.7.4 to 22.7.5 by @dependabot in https://github.com/slackapi/bolt-js/pull/2289
- chore(deps): bump cookie and express in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2291
- Add support for Agents/Assistants by @misscoded in https://github.com/slackapi/bolt-js/pull/2286
- bolt v4 by @filmaj in https://github.com/slackapi/bolt-js/pull/2254
- Publish
@slack/bolt@v4.0.0by @filmaj in https://github.com/slackapi/bolt-js/pull/2294
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.22.0...@slack/bolt@4.0.0
What's new
This release adds support for the assistant.threads.* API methods introduced in @slack/web-api@6.13.0 🤖 as well as improvements to documentation at the new https://tools.slack.dev/bolt-js site and patches to dependencies 🔒
Example usage
More details about these endpoints can be discovered in the documentation, and listeners can be added to code to respond to incoming events like so:
app.event('assistant_thread_started', async ({ client, event, logger }) => {
logger.info('A new thread started');
logger.debug(event);
const now = new Date();
const title = await client.assistant.threads.setTitle({
title: `Chats from ${now.toISOString()}`,
channel_id: event.assistant_thread.channel_id,
thread_ts: event.assistant_thread.thread_ts,
});
logger.debug(title);
const suggestions = await client.assistant.threads.setSuggestedPrompts({
channel_id: event.assistant_thread.channel_id,
thread_ts: event.assistant_thread.thread_ts,
title: 'Ask the computer for answers',
prompts: [
{
title: 'Find the time',
message: `What happens at ${Math.floor(now.getTime() / 1000)}`,
},
],
});
logger.debug(suggestions);
});
app.event('assistant_thread_context_changed', async ({ client, event, logger }) => {
logger.info('The channel of focus changed');
logger.debug(event);
const response = client.chat.postMessage({
thread_ts: event.assistant_thread.thread_ts,
channel: event.assistant_thread.channel_id,
text: `Now visiting <#${event.assistant_thread.context.channel_id}>`,
});
logger.debug(response);
});
app.message(async ({ client, message, logger }) => {
logger.info('A new message was received');
logger.debug(message);
if (message.subtype === 'message_changed' || message.subtype === 'message_deleted') {
return;
}
const status = await client.assistant.threads.setStatus({
channel_id: message.channel,
thread_ts: message.thread_ts,
status: 'is thinking...',
});
logger.debug(status);
/**
* Actual response generation could happen here!
*/
setTimeout(async () => {
const response = await client.chat.postMessage({
channel: message.channel,
thread_ts: message.thread_ts,
text: 'How insightful!',
});
logger.debug(response);
}, 3000);
});
Changes
📚 Documentation
- typo: update error link in App.ts - Thanks @ChinoUkaegbu! https://github.com/slackapi/bolt-js/pull/2260
- docs: new URL (HOLD) - Thanks @lukegalbraithrussell! https://github.com/slackapi/bolt-js/pull/2253
📦 Dependencies
- chore(deps-dev): bump @types/node from 22.5.4 to 22.5.5 - Thanks @dependabot! https://github.com/slackapi/bolt-js/pull/2263
- Upgrade express version - Thanks @helzahalim! https://github.com/slackapi/bolt-js/pull/2270
- chore(deps): bump @slack/web-api from 6.12.1 to 6.13.0 - Thanks @zimeg! https://github.com/slackapi/bolt-js/pull/2273
🎉 New contributors
- @ChinoUkaegbu made their first contribution in https://github.com/slackapi/bolt-js/pull/2260
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.4...@slack/bolt@3.22.0
What's Changed
- chore(deps): upgrade
path-to-regexpto partially address a security vulnerability (#2242) by @filmaj in https://github.com/slackapi/bolt-js/pull/2251
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.3...@slack/bolt@3.21.4
What's Changed
Woops! We (coughfilmajcough) removed the EnvelopedEvent export in a recent change. We are adding it back in in this patch release. Please accept our sincere apologies for this temporary breaking change in bolt 3.21.2.
Changelog
- Link to JS release notes by @bpfoster in https://github.com/slackapi/bolt-js/pull/2239
- chore(deps-dev): bump @types/node from 22.5.2 to 22.5.4 by @dependabot in https://github.com/slackapi/bolt-js/pull/2241
- fix: re-export EnvelopedEvent by @filmaj in https://github.com/slackapi/bolt-js/pull/2245
New Contributors
- @bpfoster made their first contribution in https://github.com/slackapi/bolt-js/pull/2239
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.2...@slack/bolt@3.21.3
What's Changed
The main change in this patch release is creating an npm release for the change in #2223, where exported event payload types were moved from bolt-js to @slack/types. If you see errors compiling your TypeScript-based application that look like:
Module './types' has already exported a member
.. then upgrading to this release should address the issue (see #2233 and #2234 for issue details).
- fix: pass a no-op
nextfunction to the last listener middleware by @filmaj in https://github.com/slackapi/bolt-js/pull/2214 (fixes #1457) - fix: remove please-upgrade-node by @filmaj in https://github.com/slackapi/bolt-js/pull/2221 (fixes #1274)
- Bump
@slack/typesand consume event payloads from it by @filmaj in https://github.com/slackapi/bolt-js/pull/2223 - fix: tsconfig - skip checking dependency d.ts files by @filmaj in https://github.com/slackapi/bolt-js/pull/2226
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.1...@slack/bolt@3.21.2
What's Changed
This patch release brings improvements to documentation and sureness in our CI, as well as security updates to certain @slack packages - see CVE-2024-39338 and axios@1.7.4 for more details!
Changes
📚 Documentation
- docs: document custom step usage - Thanks @WilliamBergamin! https://github.com/slackapi/bolt-js/pull/2198
🔒 Security
- chore(deps): set a minimum @slack/web-api@^6.12.1 to address CVE-2024-39338 - Thanks @zimeg! https://github.com/slackapi/bolt-js/pull/2207
🧰 Maintenance
- ci: add bolt-ts-custom-function-template to list of test samples - Thanks @filmaj! https://github.com/slackapi/bolt-js/pull/2205
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.0...@slack/bolt@3.21.1
What's Changed
Bolt-JS now supports Custom Steps! That's right, your trusty Bolt app now let's you expose Custom Steps in Bolt, allowing you to provide steps for use in Workflow Builder.
You can now use the new function() method to register handlers for the function_executed event. Check out our API docs on the topic to get started.
Changelog
- Add support for remote functions by @misscoded in https://github.com/slackapi/bolt-js/pull/2026
- chore(deps): bump axios to 1.7.4 to address CVE by @helzahalim in https://github.com/slackapi/bolt-js/pull/2201
- chore: purge the "workflow step" terminology by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2199
New Contributors
- @helzahalim made their first contribution in https://github.com/slackapi/bolt-js/pull/2201
Full Changelog: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.20.0...@slack/bolt@3.21.0


