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]!
CI
- 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]!
Dev
- 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]!
Examples
- 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 #2724
- @shlomisas made their first contribution in #2753
- @shivasymbl made their first contribution in #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