{"id":"src_csdU1gGHI5VmnU18ufydx","slug":"slack-bolt-js","name":"Bolt JS","type":"github","url":"https://github.com/slackapi/bolt-js","orgId":"org_uCGjZRWNOB7xih-u2_HNS","org":{"slug":"slack","name":"Slack"},"isPrimary":false,"metadata":"{}","releaseCount":86,"releasesLast30Days":1,"avgReleasesPerWeek":0.1,"latestVersion":"@slack/bolt@4.7.0","latestDate":"2026-04-06T22:28:48.000Z","changelogUrl":null,"hasChangelogFile":false,"lastFetchedAt":"2026-04-19T03:01:08.530Z","trackingSince":"2019-04-24T00:06:51.000Z","releases":[{"id":"rel_ViXkbugiaNhw32gl0rrL9","version":"@slack/bolt@4.7.0","title":"@slack/bolt@4.7.0","summary":"## What's Changed\r\n\r\nBring magic to a conversation with `sayStream` for [streaming messages](https://docs.slack.dev/ai/developing-agents#streaming) an...","content":"## What's Changed\r\n\r\nBring magic to a conversation with `sayStream` for [streaming messages](https://docs.slack.dev/ai/developing-agents#streaming) and show loading status with `setStatus`. Now available for `app.event` and `app.message` listeners:\r\n\r\n```ts\r\napp.event('app_mention', async ({ sayStream, setStatus }) => {\r\n  setStatus({\r\n    status: 'Thinking...',\r\n    loading_messages: ['Waking up...', 'Loading a witty response...'],\r\n  });\r\n  const stream = sayStream({ buffer_size: 100 });\r\n  await stream.append({ markdown_text: 'Thinking... :thinking_face:\\n\\n' });\r\n  await stream.append({ markdown_text: 'Here is my response!' });\r\n  await stream.stop();\r\n});\r\n```\r\n\r\nThe `respond` function now accepts `thread_ts` to publish responses in a thread:\r\n\r\n```ts\r\napp.action('my_action', async ({ ack, respond }) => {\r\n  await ack();\r\n  await respond({ text: 'Replying in thread!', thread_ts: '1234567890.123456' });\r\n});\r\n```\r\n\r\nConfigure ping timeouts, reconnect behavior, and other Socket Mode settings directly through `App` options:\r\n\r\n```ts\r\nconst app = new App({\r\n  socketMode: true,\r\n  appToken: process.env.SLACK_APP_TOKEN,\r\n  token: process.env.SLACK_BOT_TOKEN,\r\n  clientPingTimeout: 15000,\r\n  serverPingTimeout: 60000,\r\n  pingPongLoggingEnabled: true,\r\n});\r\n```\r\n\r\n\r\n### 👾 Enhancements\r\n\r\n- feat: add support for sayStream listener argument in #2841 - Thanks @WilliamBergamin!\r\n- feat: surface the setStatus argument to listeners if required event details are available in #2843 - Thanks @WilliamBergamin!\r\n- Add thread_ts to RespondFn type in #2732 - Thanks @misscoded!\r\n- feat(SocketModeReceiver): expose Socket Mode timeout and reconnect options in #2786 - Thanks @shivasymbl!\r\n- Enable esModuleInterop in tsconfig in #2719 - Thanks @misscoded!\r\n\r\n### 🐛 Fixes\r\n\r\n- fix: Improve ESM compatibility for named exports in #2724 - Thanks @grantjoy!\r\n- Fixed edge case when there was error during authorize in #2753 - Thanks @shlomisas!\r\n\r\n### 📚 Documentation\r\n\r\n- docs: add \"random fact generator\" custom step workshop to tutorials in #2694 - Thanks @haleychaas!\r\n- docs: rework ai tutorial to use openai provider and starter template in #2731 - Thanks @haleychaas!\r\n- docs: Deploy with Vercel in #2767 - Thanks @haleychaas!\r\n- docs: Add Vercel note about AI Gateway token needed only locally in #2781 - Thanks @haleychaas!\r\n- Docs: Add headings so copy as markdown button shows up in #2796 - Thanks @haleychaas!\r\n- docs: update links to tools reference pages to avoid redirects in #2722 - Thanks @zimeg!\r\n- docs: updates outmoded links in #2737 - Thanks @lukegalbraithrussell!\r\n- docs: updates outmoded steps from apps links in #2738 - Thanks @lukegalbraithrussell!\r\n\r\n### 🧰 Maintenance\r\n\r\n- refactor: consolidate event channel and thread extraction in #2830 - Thanks @WilliamBergamin!\r\n- chore: consolidate context utility creators in #2828 - Thanks @WilliamBergamin!\r\n- build: use pinned minimum supported node18 version for type checks in #2801 - Thanks @zimeg!\r\n- build: include the package lockfile for custom receiver example in #2744 - Thanks @zimeg!\r\n- ci: support node 24 in #2831 - Thanks @zimeg!\r\n- ci: perform sample and example app tests on regression schedules in #2743 - Thanks @zimeg!\r\n- ci(deps): auto-approve / auto-merge dependencies from dependabot in #2780 - Thanks @mwbrooks!\r\n- chore: Add .github/CODEOWNERS file in #2718 - Thanks @mwbrooks!\r\n- chore: add AGENTS.md in #2826 - Thanks @WilliamBergamin!\r\n- chore(release): version @slack/bolt@4.7.0 in #2848 - Thanks @zimeg!\r\n\r\n### 🎁 Dependencies\r\n\r\n#### Core\r\n\r\n- chore(deps): update @slack/types requirement from ^2.18.0 to ^2.19.0 in #2727 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/types requirement from ^2.19.0 to ^2.20.0 in #2790 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/types requirement from ^2.20.0 to ^2.20.1 in #2820 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/web-api requirement from ^7.12.0 to ^7.13.0 in #2730 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/web-api requirement from ^7.13.0 to ^7.14.1 in #2791 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/web-api requirement from ^7.14.1 to ^7.15.0 in #2817 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/socket-mode requirement from ^2.0.5 to ^2.0.6 in #2816 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/logger requirement from ^4.0.0 to ^4.0.1 in #2818 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/oauth requirement from ^3.0.4 to ^3.0.5 in #2819 - Thanks @dependabot[bot]!\r\n\r\n<details>\r\n<summary>CI</summary>\r\n\r\n- chore(deps): bump actions/stale from 10.0.0 to 10.1.0 in #2706 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/stale from 10.1.0 to 10.1.1 in #2756 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/stale from 10.1.1 to 10.2.0 in #2804 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/setup-node from 5.0.0 to 6.0.0 in #2707 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/setup-node from 6.0.0 to 6.1.0 in #2757 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/setup-node from 6.1.0 to 6.2.0 in #2775 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 in #2833 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/checkout from 5.0.0 to 6.0.0 in #2729 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/checkout from 6.0.0 to 6.0.1 in #2758 - Thanks @dependabot[bot]!\r\n- chore(deps): bump actions/checkout from 6.0.1 to 6.0.2 in #2774 - Thanks @dependabot[bot]!\r\n- chore(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2 in #2755 - Thanks @dependabot[bot]!\r\n- chore(deps): bump codecov/codecov-action from 5.5.2 to 6.0.0 in #2834 - Thanks @dependabot[bot]!\r\n- chore(deps): bump dependabot/fetch-metadata from 2.5.0 to 3.0.0 in #2835 - Thanks @dependabot[bot]!\r\n- chore(deps): bump slackapi/slack-github-action from 2.1.1 to 3.0.1 in #2832 - Thanks @dependabot[bot]!\r\n\r\n</details>\r\n\r\n\r\n<details>\r\n<summary>Dev</summary>\r\n\r\n- chore(deps-dev): bump @types/node from 24.9.1 to 24.10.0 in #2708 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 24.10.0 to 24.10.1 in #2720 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 24.10.1 to 25.0.3 in #2746 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.0.6 to 25.0.9 in #2762 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.0.9 to 25.0.10 in #2769 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.0.10 to 25.2.0 in #2776 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.2.0 to 25.2.2 in #2782 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.2.2 to 25.2.3 in #2792 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.2.3 to 25.3.0 in #2798 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.3.0 to 25.3.3 in #2805 - Thanks @dependabot[bot]!\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>Examples</summary>\r\n\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/socket-mode-oauth in #2716 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/deploy-aws-lambda in #2709 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/deploy-heroku in #2710 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/getting-started-typescript in #2711 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/message-metadata in #2712 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/oauth in #2713 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/oauth-express-receiver in #2714 - Thanks @dependabot[bot]!\r\n- chore(deps): update @slack/bolt requirement from ^4.5.0 to ^4.6.0 in /examples/socket-mode in #2715 - Thanks @dependabot[bot]!\r\n- chore(deps): bump @koa/router from 14.0.0 to 15.0.0 in /examples/custom-receiver in #2733 - Thanks @dependabot[bot]!\r\n- chore(deps): bump @koa/router from 15.0.0 to 15.3.1 in /examples/custom-receiver in #2812 - Thanks @dependabot[bot]!\r\n- chore(deps): bump @koa/router from 15.3.1 to 15.4.0 in /examples/custom-receiver in #2824 - Thanks @dependabot[bot]!\r\n- chore(deps): bump @slack/oauth from 3.0.4 to 3.0.5 in /examples/custom-receiver in #2823 - Thanks @dependabot[bot]!\r\n- chore(deps): bump ajv from 8.17.1 to 8.18.0 in /examples/custom-receiver in #2797 - Thanks @dependabot[bot]!\r\n- chore(deps): bump axios from 1.13.2 to 1.13.5 in /examples/custom-receiver in #2785 - Thanks @dependabot[bot]!\r\n- chore(deps): bump dotenv from 17.2.3 to 17.2.4 in /examples/custom-receiver in #2784 - Thanks @dependabot[bot]!\r\n- chore(deps): bump dotenv from 17.2.4 to 17.3.1 in /examples/custom-receiver in #2793 - Thanks @dependabot[bot]!\r\n- chore(deps): bump dotenv from 17.3.1 to 17.4.0 in /examples/custom-receiver in #2845 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.6.2 to 5.7.1 in /examples/custom-receiver in #2764 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.7.1 to 5.7.2 in /examples/custom-receiver in #2770 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.7.2 to 5.7.4 in /examples/custom-receiver in #2777 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.7.4 to 5.8.1 in /examples/custom-receiver in #2810 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.8.1 to 5.8.2 in /examples/custom-receiver in #2821 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.8.2 to 5.8.3 in /examples/custom-receiver in #2829 - Thanks @dependabot[bot]!\r\n- chore(deps): bump fastify from 5.8.3 to 5.8.4 in /examples/custom-receiver in #2837 - Thanks @dependabot[bot]!\r\n- chore(deps): bump koa from 3.1.1 to 3.1.2 in /examples/custom-receiver in #2803 - Thanks @dependabot[bot]!\r\n- chore(deps): bump koa from 3.1.1 to 3.1.2 in /examples/custom-receiver in #2809 - Thanks @dependabot[bot]!\r\n- chore(deps): bump koa from 3.1.2 to 3.2.0 in /examples/custom-receiver in #2846 - Thanks @dependabot[bot]!\r\n- chore(deps): bump path-to-regexp from 8.3.0 to 8.4.0 in /examples/custom-receiver in #2842 - Thanks @dependabot[bot]!\r\n- chore(deps): bump qs from 6.14.0 to 6.14.1 in /examples/custom-receiver in #2759 - Thanks @dependabot[bot]!\r\n- chore(deps): bump qs from 6.14.1 to 6.14.2 in /examples/custom-receiver in #2787 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 24.10.4 to 25.0.3 in /examples/custom-receiver in #2748 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.0.6 to 25.0.9 in /examples/custom-receiver in #2763 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.0.9 to 25.0.10 in /examples/custom-receiver in #2771 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.0.10 to 25.2.0 in /examples/custom-receiver in #2778 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.2.0 to 25.2.2 in /examples/custom-receiver in #2783 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.2.2 to 25.2.3 in /examples/custom-receiver in #2794 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.2.3 to 25.3.0 in /examples/custom-receiver in #2799 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in /examples/custom-receiver in #2806 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 22.19.11 to 22.19.13 in /examples/custom-receiver in #2808 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 22.19.13 to 22.19.15 in /examples/custom-receiver in #2811 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 22.19.15 to 24.12.0 in /examples/custom-receiver in #2836 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 24.12.0 to 24.12.2 in /examples/custom-receiver in #2844 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/koa from 3.0.1 to 3.0.2 in /examples/custom-receiver in #2825 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump @types/node from 24.10.4 to 25.0.3 in /examples/getting-started-typescript in #2750 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 in /examples/getting-started-typescript in #2839 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 in /examples/custom-receiver in #2838 - Thanks @dependabot[bot]!\r\n- 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]!\r\n- 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]!\r\n- chore(deps-dev): update serverless requirement from ^4.22.0 to ^4.23.0 in /examples/deploy-aws-lambda in #2717 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.23.0 to ^4.25.0 in /examples/deploy-aws-lambda in #2725 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.25.0 to ^4.27.0 in /examples/deploy-aws-lambda in #2734 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.27.0 to ^4.28.0 in /examples/deploy-aws-lambda in #2741 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.28.0 to ^4.29.0 in /examples/deploy-aws-lambda in #2749 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.30.0 to ^4.31.0 in /examples/deploy-aws-lambda in #2765 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.31.0 to ^4.31.2 in /examples/deploy-aws-lambda in #2779 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.31.2 to ^4.32.0 in /examples/deploy-aws-lambda in #2795 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.32.0 to ^4.33.0 in /examples/deploy-aws-lambda in #2800 - Thanks @dependabot[bot]!\r\n- chore(deps-dev): update serverless requirement from ^4.33.0 to ^4.33.3 in /examples/deploy-aws-lambda in #2847 - Thanks @dependabot[bot]!\r\n- 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]!\r\n\r\n</details>\r\n\r\n## 👋 New Contributors 🎉 \r\n\r\n- @grantjoy made their first contribution in https://github.com/slackapi/bolt-js/pull/2724\r\n- @shlomisas made their first contribution in https://github.com/slackapi/bolt-js/pull/2753\r\n- @shivasymbl made their first contribution in https://github.com/slackapi/bolt-js/pull/2786\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.6.0...@slack/bolt@4.7.0\r\n**Milestone**: https://github.com/slackapi/bolt-js/milestone/61\r\n**Package**: https://www.npmjs.com/package/@slack/bolt/v/4.7.0","publishedAt":"2026-04-06T22:28:48.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.7.0","media":[]},{"id":"rel_s_ifP37xKA8jD2vMhsCiX","version":"@slack/bolt@4.6.0","title":"@slack/bolt@4.6.0","summary":"### 📚 Changelog\r\n\r\n* https://docs.slack.dev/changelog/2025/10/22/work-objects\r\n\r\n## What's Changed\r\n\r\n### 👾 Enhancements\r\n\r\n* feat: add support for ...","content":"### 📚 Changelog\r\n\r\n* https://docs.slack.dev/changelog/2025/10/22/work-objects\r\n\r\n## What's Changed\r\n\r\n### 👾 Enhancements\r\n\r\n* feat: add support for work objects in https://github.com/slackapi/bolt-js/pull/2652 - Thanks @vegeris! \r\n* feat: extend ack timeout for function executed events in https://github.com/slackapi/bolt-js/pull/2645 - Thanks @WilliamBergamin! \r\n* feat: add hasBeenCalled on complete & fail utility in https://github.com/slackapi/bolt-js/pull/2677 - Thanks @WilliamBergamin!\r\n\r\n### 🐛 Bug fixes\r\n\r\n* fix: anticipate optional chained parameters as undefined when parsing events details in https://github.com/slackapi/bolt-js/pull/2700 - Thanks @hello-ashleyintech!\r\n\r\n### 📚 Documentation\r\n\r\n* docs: add AI to quickstart in https://github.com/slackapi/bolt-js/pull/2676 - Thanks @haleychaas!\r\n\r\n### 🤖 Dependencies\r\n\r\n* 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\r\n* chore(deps-dev): bump @types/node from 24.8.1 to 24.9.1 in https://github.com/slackapi/bolt-js/pull/2703\r\n* chore(deps-dev): bump @types/node from 24.7.2 to 24.8.1 in https://github.com/slackapi/bolt-js/pull/2692\r\n* 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\r\n* chore(deps-dev): bump @types/node from 24.7.0 to 24.7.2 in https://github.com/slackapi/bolt-js/pull/2679\r\n* chore(deps): update @slack/types requirement from ^2.17.0 to ^2.18.0 in https://github.com/slackapi/bolt-js/pull/2702\r\n* chore(deps): update @slack/web-api requirement from ^7.11.0 to ^7.12.0 in https://github.com/slackapi/bolt-js/pull/2701\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n\r\n### 🧰 Maintenance\r\n\r\n* chore(release): version @slack/bolt@4.6.0 in https://github.com/slackapi/bolt-js/pull/2705 - Thanks @vegeris!\r\n\r\n**Milestone**: https://github.com/slackapi/bolt-js/milestone/60?closed=1\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.5.0...@slack/bolt@4.6.0\r\n**Package**: https://www.npmjs.com/package/@slack/bolt/v/4.6.0","publishedAt":"2025-10-28T18:43:09.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.6.0","media":[]},{"id":"rel_Kgjs0V1X2Hbq-xSfw8Pry","version":"@slack/bolt@4.5.0","title":"@slack/bolt@4.5.0","summary":"## AI-Enabled Features: Loading States, Text Streaming, and Feedback Buttons\r\n\r\n### 🍿 Preview\r\n\r\nhttps://github.com/user-attachments/assets/bc16597b-...","content":"## AI-Enabled Features: Loading States, Text Streaming, and Feedback Buttons\r\n\r\n### 🍿 Preview\r\n\r\nhttps://github.com/user-attachments/assets/bc16597b-1632-46bb-b7aa-fe22330daf84\r\n\r\n### 📚 Changelog\r\n\r\n* https://docs.slack.dev/changelog/2025/10/7/chat-streaming\r\n\r\n### ⚡ Getting Started\r\n\r\nTry the AI Agent Sample app to explore the AI-enabled features and existing Assistant helper:\r\n\r\n```bash\r\n# Create a new AI Agent app\r\n$ slack create slack-ai-agent-app --template slack-samples/bolt-js-assistant-template\r\n$ cd slack-ai-agent-app/\r\n\r\n# Add your OPENAI_API_KEY\r\n$ export OPENAI_API_KEY=sk-proj-ahM...\r\n\r\n# Run the local dev server\r\n$ slack run\r\n```\r\n\r\nAfter the app starts, send a message to the \"slack-ai-agent-app\" bot for a unique response.\r\n\r\n### ⌛ Loading States\r\n\r\nLoading 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:\r\n\r\n#### Web Client SDK:\r\n\r\n```javascript\r\napp.event('message', async ({ client, context, event, logger }) => {\r\n    // ...\r\n    await client.assistant.threads.setStatus({\r\n        channel_id: channelId,\r\n        thread_ts: threadTs,\r\n        status: 'thinking...',\r\n        loading_messages: [\r\n            'Teaching the hamsters to type faster…',\r\n            'Untangling the internet cables…',\r\n            'Consulting the office goldfish…',\r\n            'Polishing up the response just for you…',\r\n            'Convincing the AI to stop overthinking…',\r\n        ],\r\n    });\r\n\r\n    // Start a new message stream\r\n});\r\n```\r\n\r\n- https://docs.slack.dev/reference/methods/assistant.threads.setStatus\r\n\r\n#### Assistant Class:\r\n\r\n```javascript\r\nconst assistant = new Assistant({\r\n    threadStarted: assistantThreadStarted,\r\n    threadContextChanged: assistantThreadContextChanged,\r\n    userMessage: async ({ client, context, logger, message, getThreadContext, say, setTitle, setStatus }) => {\r\n        await setStatus({\r\n            status: 'thinking...',\r\n            loading_messages: [\r\n                'Teaching the hamsters to type faster…',\r\n                'Untangling the internet cables…',\r\n                'Consulting the office goldfish…',\r\n                'Polishing up the response just for you…',\r\n                'Convincing the AI to stop overthinking…',\r\n            ],\r\n        });\r\n    },\r\n});\r\n```\r\n\r\n### 🔮 Text Streaming Helper\r\n\r\nThe `client.chatStream()` helper utility can be used to streamline calling the 3 text streaming methods:\r\n\r\n```javascript\r\napp.event('message', async ({ client, context, event, logger }) => {\r\n    // ...\r\n\r\n    // Start a new message stream\r\n    const streamer = client.chatStream({\r\n        channel: channelId,\r\n        recipient_team_id: teamId,\r\n        recipient_user_id: userId,\r\n        thread_ts: threadTs,\r\n    });\r\n\r\n    // Loop over OpenAI response stream\r\n    // https://platform.openai.com/docs/api-reference/responses/create\r\n    for await (const chunk of llmResponse) {\r\n        if (chunk.type === 'response.output_text.delta') {\r\n            await streamer.append({\r\n                markdown_text: chunk.delta,\r\n            });\r\n        }\r\n    }\r\n\r\n    // Stop the stream and attach feedback buttons\r\n    await streamer.stop({ blocks: [feedbackBlock] });\r\n});\r\n```\r\n\r\n- https://docs.slack.dev/tools/node-slack-sdk/reference/web-api/classes/WebClient#chatstream\r\n\r\n### 🔠 Text Streaming Methods\r\n\r\nAlternative to the Text Streaming Helper is to call the individual methods.\r\n\r\n#### 1) `client.chat.startStream`\r\n\r\nFirst, start a chat text stream to stream a response to any message:\r\n\r\n```javascript\r\napp.event('message', async ({ client, context, event, logger }) => {\r\n    // ...\r\n    const streamResponse = await client.chat.startStream({\r\n        channel: channelId,\r\n        recipient_team_id: teamId,\r\n        recipient_user_id: userId,\r\n        thread_ts: threadTs,\r\n    });\r\n\r\n    const streamTs = streamResponse.ts\r\n```\r\n\r\n- https://docs.slack.dev/reference/methods/chat.startStream\r\n\r\n#### 2) `client.chat.appendStream`\r\n\r\nAfter 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:\r\n\r\n```javascript\r\nfor await (const chunk of llmResponse) {\r\n    if (chunk.type === 'response.output_text.delta') {\r\n        await client.chat.appendSteam({\r\n            channel: channelId,\r\n            markdown_text: chunk.delta,\r\n            ts: streamTs,\r\n        });\r\n    }\r\n}\r\n```\r\n\r\n- https://docs.slack.dev/reference/methods/chat.appendStream\r\n\r\n#### 3) `client.chat.stopStream`\r\n\r\nLastly, you can stop the chat text stream to finalize your message:\r\n\r\n```javascript\r\nawait client.chat.stopStream({\r\n    blocks: [feedbackBlock],\r\n    channel: channelId,\r\n    ts: streamTs,\r\n});\r\n```\r\n\r\n- https://docs.slack.dev/reference/methods/chat.stopStream\r\n\r\n### 👍🏻 Feedback Buttons\r\n\r\nAdd feedback buttons to the bottom of a message, after stopping a text stream, to gather user feedback:\r\n\r\n```javascript\r\nconst feedbackBlock = {\r\n    type: 'context_actions',\r\n    elements: [{\r\n        type: 'feedback_buttons',\r\n        action_id: 'feedback',\r\n        positive_button: {\r\n            text: { type: 'plain_text', text: 'Good Response' },\r\n            accessibility_label: 'Submit positive feedback on this response',\r\n            value: 'good-feedback',\r\n        },\r\n        negative_button: {\r\n            text: { type: 'plain_text', text: 'Bad Response' },\r\n            accessibility_label: 'Submit negative feedback on this response',\r\n            value: 'bad-feedback',\r\n        },\r\n    }],\r\n};\r\n\r\n// Using the Text Streaming Helper\r\nawait streamer.stop({ blocks: [feedbackBlock] });\r\n```\r\n\r\n```javascript\r\n// Or, using the Text Streaming Method\r\nawait client.chat.stopStream({\r\n    blocks: [feedbackBlock],\r\n    channel: channelId,\r\n    ts: streamTs,\r\n});\r\n```\r\n\r\n- https://docs.slack.dev/reference/block-kit/blocks/context-actions-block/\r\n- https://docs.slack.dev/reference/block-kit/block-elements/feedback-buttons-element/\r\n- https://docs.slack.dev/reference/block-kit/block-elements/icon-button-element/\r\n\r\n## What's Changed\r\n\r\n### 👾 Enhancements\r\n\r\n* feat: add ai-enabled features text streaming methods, feedback blocks, and loading state in https://github.com/slackapi/bolt-js/pull/2674 - Thanks @zimeg!\r\n\r\n### 🐛 Bug fixes\r\n\r\n* Fix: allows Assistant say function to properly pass metadata in https://github.com/slackapi/bolt-js/pull/2569 - Thanks @jamessimone!\r\n* refactor: check payload type before extracting assistant thread info in https://github.com/slackapi/bolt-js/pull/2603 - Thanks @zimeg!\r\n* fix: better ES module support for App class in https://github.com/slackapi/bolt-js/pull/2632 - Thanks @malewis5!\r\n* fix(typescript): accept empty list of suggested prompts for the assistant class in https://github.com/slackapi/bolt-js/pull/2650 - Thanks @zimeg!\r\n\r\n### 📚 Documentation\r\n\r\n* docs(fix): redirect links for project package migration guides to the tools site in https://github.com/slackapi/bolt-js/pull/2539 - Thanks @zimeg!\r\n* Docs: moved over custom steps dynamic options page.  in https://github.com/slackapi/bolt-js/pull/2552 - Thanks @technically-tracy!\r\n* docs: updated nav in https://github.com/slackapi/bolt-js/pull/2564 - Thanks @technically-tracy!\r\n* docs: rotate tokens on a separate schedule with the oauth package in https://github.com/slackapi/bolt-js/pull/2558 - Thanks @zimeg!\r\n* docs: guide quick start app creation using the slack cli in https://github.com/slackapi/bolt-js/pull/2535 - Thanks @zimeg!\r\n* Update event-listening.md in https://github.com/slackapi/bolt-js/pull/2584 - Thanks @jfbn!\r\n* docs: Update language around AI apps in https://github.com/slackapi/bolt-js/pull/2606 - Thanks @haleychaas!\r\n* docs: fix listener middleware function and use global middleware examples in https://github.com/slackapi/bolt-js/pull/2610 - Thanks @zimeg!\r\n* docs: update ai hugging face tutorial examples in https://github.com/slackapi/bolt-js/pull/2613 - Thanks @zimeg!\r\n* docs: guide building an app tutorial using the slack cli in https://github.com/slackapi/bolt-js/pull/2597 - Thanks @zimeg!\r\n* docs: use the app logger in examples in https://github.com/slackapi/bolt-js/pull/2651 - Thanks @zimeg!\r\n* docs: updates for combined quickstart in https://github.com/slackapi/bolt-js/pull/2661 - Thanks @haleychaas!\r\n\r\n### 🤖 Dependencies\r\n\r\n* Update axios dependency to version ^1.12.0 in https://github.com/slackapi/bolt-js/pull/2657 - Thanks @malewis5!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* chore(deps): bump the docusaurus group in /docs with 5 updates in https://github.com/slackapi/bolt-js/pull/2553 - Thanks @dependabot[bot]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* chore(deps): bump on-headers and compression in /docs in https://github.com/slackapi/bolt-js/pull/2607 - Thanks @dependabot[bot]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n* 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]!\r\n\r\n### 🧰 Maintaince\r\n\r\n* ci: pin actions workflow step hashes and use minimum permissions in https://github.com/slackapi/bolt-js/pull/2537 - Thanks @zimeg!\r\n* chore: update dependabot to open one PR for all @slack dependencies in /examples in https://github.com/slackapi/bolt-js/pull/2550 - Thanks @WilliamBergamin!\r\n* Revert \"chore: update dependabot to open one PR for all @slack depend… in https://github.com/slackapi/bolt-js/pull/2551 - Thanks @WilliamBergamin!\r\n* 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!\r\n* 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!\r\n* ci: send a notification of scheduled failing tests in https://github.com/slackapi/bolt-js/pull/2601 - Thanks @zimeg!\r\n* ci: output verbose details when installing packages for tests in https://github.com/slackapi/bolt-js/pull/2602 - Thanks @zimeg!\r\n* Build: remove docusaurus configuration files in https://github.com/slackapi/bolt-js/pull/2614 - Thanks @lukegalbraithrussell!\r\n* test: swap rewiremock with proxyquire in https://github.com/slackapi/bolt-js/pull/2629 - Thanks @WilliamBergamin!\r\n* ci: post regression notifications if scheduled tests do not succeed in https://github.com/slackapi/bolt-js/pull/2667 - Thanks @zimeg!\r\n* chore(release): version @slack/bolt@4.5.0 in https://github.com/slackapi/bolt-js/pull/2675 - Thanks @zimeg!\r\n\r\n\r\n## New Contributors 🎉 \r\n\r\n* @jamessimone made their first contribution in https://github.com/slackapi/bolt-js/pull/2569\r\n* @jfbn made their first contribution in https://github.com/slackapi/bolt-js/pull/2584\r\n* @malewis5 made their first contribution in https://github.com/slackapi/bolt-js/pull/2632\r\n\r\n**Milestone**: https://github.com/slackapi/bolt-js/milestone/59?closed=1\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.4.0...@slack/bolt@4.5.0\r\n**Package**: https://www.npmjs.com/package/@slack/bolt/v/4.5.0","publishedAt":"2025-10-07T04:11:52.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.5.0","media":[]},{"id":"rel_Zm3A9ZvPvYCJj_w7kXttV","version":"@slack/bolt@4.4.0","title":"@slack/bolt@4.4.0","summary":"## What's Changed\r\n### 🚀 Features\r\n* feat: support for synchronous custom step handling by @WilliamBergamin in https://github.com/slackapi/bolt-js/pu...","content":"## What's Changed\r\n### 🚀 Features\r\n* feat: support for synchronous custom step handling by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2408\r\n\r\n### 🐛 Fixes\r\n* fix: socket mode should warn when ack is invoked multiple times by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2519\r\n\r\n### 🧰 Maintenance\r\n* fix: bump sinon version by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2522\r\n* test: confirm socket mode receiver acknowledges processed events by @zimeg in https://github.com/slackapi/bolt-js/pull/2520\r\n* chore: release @slack/bolt@4.4.0 by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2538\r\n\r\n### 🤖 Dependencies\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.3.0...@slack/bolt@4.4.0\r\n**Milstone**: https://github.com/slackapi/bolt-js/milestone/58?closed=1","publishedAt":"2025-05-20T19:04:02.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.4.0","media":[]},{"id":"rel_5JN2jPm0syOCIt_4MXGB0","version":"@slack/bolt@4.3.0","title":"@slack/bolt@4.3.0","summary":"## What's Changed\r\n\r\n## 🐛 Fixes\r\n* fix: configure dependbot to group react deps by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2440\r...","content":"## What's Changed\r\n\r\n## 🐛 Fixes\r\n* fix: configure dependbot to group react deps by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2440\r\n* fix: refactor function handler for follow up auto ack behavior by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2424\r\n* fix: always attach the function bot access token to the context if available by @zimeg in https://github.com/slackapi/bolt-js/pull/2513\r\n* fix: allow all web api client option types in app initialization by @zimeg in https://github.com/slackapi/bolt-js/pull/2501\r\n* fix: always attach the function inputs to the context if available by @zimeg in https://github.com/slackapi/bolt-js/pull/2517\r\n\r\n## 📚 Documentation\r\n* Docs - matches site css to slack.dev and  docs.slack.dev by @slackapi in https://github.com/slackapi/bolt-js/pull/2434\r\n* fixes broken apps navbar link by @slackapi in https://github.com/slackapi/bolt-js/pull/2443\r\n* API Docs: AI app with Hugging Face tutorial by @haleychaas in https://github.com/slackapi/bolt-js/pull/2464\r\n* API Docs: Fix directory paste error by @haleychaas in https://github.com/slackapi/bolt-js/pull/2466\r\n* API Docs: Update links to go to new site by @haleychaas in https://github.com/slackapi/bolt-js/pull/2494\r\n* API Docs: Update AI tutorial to include markdown block by @haleychaas in https://github.com/slackapi/bolt-js/pull/2486\r\n* API Docs: Replace OpenAI references with Hugging Face by @haleychaas in https://github.com/slackapi/bolt-js/pull/2507\r\n\r\n## 🧰 Maintenance\r\n* ci: label updates to example app dependencies with an 'area:examples' label by @zimeg in https://github.com/slackapi/bolt-js/pull/2485\r\n* ci: increase updated versions to depend on the latest releases by @zimeg in https://github.com/slackapi/bolt-js/pull/2468\r\n\r\n## 🤖 Dependencies\r\n* 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\r\n* 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\r\n* 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\r\n* chore(deps): bump the react group in /docs with 2 updates by @dependabot in https://github.com/slackapi/bolt-js/pull/2442\r\n* 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\r\n* 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\r\n* Docs: Update reference to \"Concepts guides\". by @technically-tracy in https://github.com/slackapi/bolt-js/pull/2446\r\n* 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\r\n* 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\r\n* chore(deps): bump axios to 1.8.3 to address CVE-2025-27152 by @zimeg in https://github.com/slackapi/bolt-js/pull/2453\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* chore(deps): bump the react group in /docs with 2 updates by @dependabot in https://github.com/slackapi/bolt-js/pull/2488\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* chore: release @slack/bolt@4.3.0 by @hello-ashleyintech in https://github.com/slackapi/bolt-js/pull/2518\r\n\r\nThank you to all our lovely contributors ✨ \r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.2.1...@slack/bolt@4.3.0","publishedAt":"2025-05-07T13:36:50.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.3.0","media":[]},{"id":"rel_ZlxvXNBhNIAJ_k5uaq01d","version":"@slack/bolt@4.2.1","title":"@slack/bolt@4.2.1","summary":"## What's Changed\r\n## 🐛 Fixes\r\n* bug: make `@types/express` an optional peer dependency by @WilliamBergamin in https://github.com/slackapi/bolt-js/pu...","content":"## What's Changed\r\n## 🐛 Fixes\r\n* bug: make `@types/express` an optional peer dependency by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2421\r\n\r\n## 📚 Documentation\r\n* docs: Syncing config files with Deno Slack SDK and Slack CLI docs by @slackapi in https://github.com/slackapi/bolt-js/pull/2373\r\n* docs: nested sidebar format by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2374\r\n* docs(example): update aws lambda deployment to latest dependencies by @zimeg in https://github.com/slackapi/bolt-js/pull/2383\r\n* docs(examples): fix the \"deploy to heroku\" button using latest dependencies by @zimeg in https://github.com/slackapi/bolt-js/pull/2385\r\n* docs: fixed typo in getting-started.mdx by @tomdevisser29 in https://github.com/slackapi/bolt-js/pull/2406\r\n* docs: update getting-started.mdx by @msoyka in https://github.com/slackapi/bolt-js/pull/2402\r\n* docs: update Heroku version in deployment guide. by @technically-tracy in https://github.com/slackapi/bolt-js/pull/2419\r\n* docs - typo for link going to original site by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2431\r\n* docs: Migrate custom steps tutorials. by @technically-tracy in https://github.com/slackapi/bolt-js/pull/2429\r\n* docs: remove mention of assistants and replace with AI apps by @haleychaas in https://github.com/slackapi/bolt-js/pull/2432\r\n\r\n## 🧰 Maintenance\r\n* ci: complete all sample tests even if one fails fast by @zimeg in https://github.com/slackapi/bolt-js/pull/2386\r\n* ci: add example app dependencies to weekly dependabot configurations by @zimeg in https://github.com/slackapi/bolt-js/pull/2387\r\n* ci: test samples and examples with a packaged bolt build by @zimeg in https://github.com/slackapi/bolt-js/pull/2372\r\n* fix: improve the maintainers_guide local development instruction by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2422\r\n* chore: release @slack/bolt@4.2.1 by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2433\r\n\r\n## 🤖 Dependencies\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* chore(deps): bump actions/stale from 9.0.0 to 9.1.0 by @dependabot in https://github.com/slackapi/bolt-js/pull/2415\r\n* 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\r\n* 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\r\n\r\n### docs\r\n* 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\r\n* chore(deps): bump the docusaurus group in /docs with 5 updates by @dependabot in https://github.com/slackapi/bolt-js/pull/2392\r\n* 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\r\n* 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\r\n\r\n### examples\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n* 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\r\n\r\n\r\n## New Contributors\r\n* @tomdevisser29 made their first contribution in https://github.com/slackapi/bolt-js/pull/2406\r\n* @msoyka made their first contribution in https://github.com/slackapi/bolt-js/pull/2402\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.2.0...@slack/bolt@4.2.1","publishedAt":"2025-02-28T18:39:13.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.2.1","media":[]},{"id":"rel_Qj8QnUYFkiwsC505ozDl6","version":"@slack/bolt@4.2.0","title":"@slack/bolt@4.2.0","summary":"## What's Changed\r\n\r\nHello! 👋  This release updates dependencies to keep packages secure and makes the `logger` of your `app` public for use outside ...","content":"## What's Changed\r\n\r\nHello! 👋  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! 🔐 🌲 \r\n\r\n```javascript\r\nconst app = new App({ ... });\r\n\r\n(async () => {\r\n  await app.start(process.env.PORT || 3000);\r\n  app.logger.info('⚡️ Bolt app is running!'); // The app logger can now be used here!\r\n})();\r\n```\r\n\r\n### 🎁 Enhancements\r\n\r\n* feat: make the app logger attached to the app instance public in https://github.com/slackapi/bolt-js/pull/2365 - thanks @zimeg! \r\n\r\n### 🔐  Security\r\n\r\n* chore(deps): bump slack and axios dependencies to latest secure versions in https://github.com/slackapi/bolt-js/pull/2360 - thanks @hello-ashleyintech!\r\n\r\n### 📚 Documentation\r\n\r\n* docs: show descriptions of function listener arguments in https://github.com/slackapi/bolt-js/pull/2364 - thanks @zimeg! \r\n* docs: replace redirected or missing links to bolt documentation in https://github.com/slackapi/bolt-js/pull/2367 - thanks @zimeg! \r\n\r\n### 🧰 Maintenance\r\n\r\n* build: install @types/express@^v5 as a dev dependency for express@^5 in https://github.com/slackapi/bolt-js/pull/2355 - thanks @zimeg!\r\n* ci: check for linting errors without writing required changes in https://github.com/slackapi/bolt-js/pull/2357 - thanks @zimeg! \r\n* build: find the biome config schema from the installed path in https://github.com/slackapi/bolt-js/pull/2363 - thanks @zimeg! \r\n* build: ignore autogenerated docusaurus files when running the formatter in https://github.com/slackapi/bolt-js/pull/2362 - thanks @zimeg!\r\n* build: update the redirected repo homepage url to postfix js in https://github.com/slackapi/bolt-js/pull/2370 - thanks @zimeg! \r\n\r\n### 🤖 Dependencies\r\n\r\n* chore(deps): bump codecov/codecov-action from 4 to 5 in https://github.com/slackapi/bolt-js/pull/2349 - thanks @dependabot! \r\n* chore(deps): bump the docusaurus group in /docs with 5 updates in https://github.com/slackapi/bolt-js/pull/2350 - thanks @dependabot! \r\n* 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! \r\n* 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! \r\n* chore(deps): bump path-to-regexp and express in /docs in https://github.com/slackapi/bolt-js/pull/2358 - thanks @dependabot! \r\n* chore(deps-dev): @types/node from 22.9.3 to 22.10.1 in https://github.com/slackapi/bolt-js/pull/2359 - thanks @dependabot!\r\n* 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! \r\n* chore(deps-dev): @types/node from 22.10.1 to 22.10.2 in https://github.com/slackapi/bolt-js/pull/2369 - thanks @dependabot!\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.1.1...@slack/bolt@4.2.0","publishedAt":"2024-12-17T02:08:16.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.2.0","media":[]},{"id":"rel_alj8VdwhrymwtT__jbSpg","version":"@slack/bolt@4.1.2-rc.1","title":"@slack/bolt@4.1.2-rc.1","summary":"# What's Changed\r\n\r\nThis pre-release contains the proposed `socket-mode` library fix addressing runaway connection spawning spiral behaviour observed ...","content":"# What's Changed\r\n\r\nThis pre-release contains the proposed `socket-mode` library fix addressing runaway connection spawning spiral behaviour observed in https://github.com/slackapi/node-slack-sdk/issues/2094 and fixed in https://github.com/slackapi/node-slack-sdk/issues/2099.\r\n\r\nDevelopers wishing to evaluate the fix for their app may try out this pre-release.\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.1.1...@slack/bolt@4.1.2-rc.1","publishedAt":"2024-11-26T16:28:32.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.1.2-rc.1","media":[]},{"id":"rel_Vbxp_z17VOx1NNEM9DBfw","version":"@slack/bolt@4.1.1","title":"@slack/bolt@4.1.1","summary":"## What's Changed\r\n\r\n- 🏭 A fix related to the TypeScript types for the Assistant handler utilities. Fixes #2319 in #2325, thanks @misscoded!\r\n- 📚 Ou...","content":"## What's Changed\r\n\r\n- 🏭 A fix related to the TypeScript types for the Assistant handler utilities. Fixes #2319 in #2325, thanks @misscoded!\r\n- 📚 Our bolt-js online documentation at https://tools.slack.dev/bolt-js/ received many updates. Thanks to @lukegalbraithrussell, @haleychaas and @kuredev!\r\n\r\n## Changelog\r\n* Docs: agents and assistants by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2295\r\n* fix: Assistant utility types by @misscoded in https://github.com/slackapi/bolt-js/pull/2325\r\n* Docs: Tutorial for assistant app by @haleychaas in https://github.com/slackapi/bolt-js/pull/2331\r\n* docs: Changed \"App Token\" to \"App-Level Tokens\" by @kuredev in https://github.com/slackapi/bolt-js/pull/2336\r\n* docs: add xapp section by @kuredev in https://github.com/slackapi/bolt-js/pull/2339\r\n\r\n## New Contributors\r\n* @haleychaas made their first contribution in https://github.com/slackapi/bolt-js/pull/2331\r\n* @kuredev made their first contribution in https://github.com/slackapi/bolt-js/pull/2336\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.1.0...@slack/bolt@4.1.1","publishedAt":"2024-11-26T16:11:38.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.1.1","media":[]},{"id":"rel_KbugnvHBruLyrNUwWhy6h","version":"@slack/bolt@4.1.0","title":"@slack/bolt@4.1.0","summary":"## What's Changed\r\n* fix: Include metadata with Assistant `say` util by @misscoded in https://github.com/slackapi/bolt-js/pull/2300\r\n* docs: concept f...","content":"## What's Changed\r\n* fix: Include metadata with Assistant `say` util by @misscoded in https://github.com/slackapi/bolt-js/pull/2300\r\n* docs: concept focused nav by @lukegalbraithrussell in https://github.com/slackapi/bolt-js/pull/2302\r\n* feat: Add `title` to setSuggestedPrompts utility by @misscoded in https://github.com/slackapi/bolt-js/pull/2308\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.0.1...@slack/bolt@4.1.0","publishedAt":"2024-11-01T18:59:37.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.1.0","media":[]},{"id":"rel_f1CBjpMPRNTVxKpbXJ323","version":"@slack/bolt@4.0.1","title":"@slack/bolt@4.0.1","summary":"## What's Changed\r\n\r\n* Fix a bug where parsing assistant thread message event fails for beta feature enabled apps by @seratch in https://github.com/sl...","content":"## What's Changed\r\n\r\n* 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\r\n\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@4.0.0...@slack/bolt@4.0.1","publishedAt":"2024-10-22T18:22:32.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.0.1","media":[]},{"id":"rel_UeqrZZ1RNPbxHhqu9nigh","version":"@slack/bolt@4.0.0","title":"@slack/bolt@4.0.0","summary":"# Bolt v4\r\n\r\n## What's Changed\r\n\r\n### New Features\r\n\r\nSupport for [Agents & Assistants](https://api.slack.com/docs/apps/ai) is now available! \r\n\r\nBolt...","content":"# Bolt v4\r\n\r\n## What's Changed\r\n\r\n### New Features\r\n\r\nSupport for [Agents & Assistants](https://api.slack.com/docs/apps/ai) is now available! \r\n\r\nBolt 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](https://github.com/slack-samples/bolt-js-assistant-template).\r\n\r\n### Breaking Changes\r\n\r\nWe have prepared [a migration guide](https://docs.slack.dev/tools/bolt-js/migration/migration-v4) to help BoltJS consumers migrate their Bolt v3 apps to v4.\r\n\r\nWhile 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](https://tools.slack.dev/bolt-js/tutorial/migration-v4).\r\n\r\n#### Middleware Type Changes\r\n\r\nIn bolt we have [a set of `Slack*MiddlewareArgs` types](https://github.com/slackapi/bolt-js/blob/main/src/types/middleware.ts#L12-L18): 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.\r\n\r\nMany of these types, for example [the `SlackEventMiddlewareArgs` type](https://github.com/slackapi/bolt-js/blob/main/src/types/events/index.ts#L11-L19), previously used a conditional to _sometimes_ define particular additional helper utilities on the middleware arguments. For example, [the `say`](https://github.com/slackapi/bolt-js/blob/main/src/types/actions/index.ts#L47) utility, or [tacking on a convenience `message` property](https://github.com/slackapi/bolt-js/blob/main/src/types/events/index.ts#L14) 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`.\r\n\r\nInstead, these `MiddlewareArgs` types [now conditionally create a type _intersection_ when appropriate in order to provide this conditional-utility-extension mechanism](https://github.com/slackapi/bolt-js/pull/2254/files#diff-b5e4a4e82f104fd913ed68e1fd01c16a046705b0a35fd64204ddbafc9dccca74R14). In practice that looks something like:\r\n\r\n```typescript\r\ntype SomeMiddlewareArgs<EventType extends string = string> = {\r\n  // some type in here\r\n} & (EventType extends 'message'\r\n  // If this is a message event, add a `message` property\r\n  ? { message: EventFromType<EventType> }\r\n  : unknown\r\n)\r\n```\r\n\r\nWith 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!\r\n\r\n### Other Breaking Changes\r\n\r\n- drops node v14 and v16 (are now EOL'ed)\r\n- `express` to v4->v5; `ExpressReceiver` users will be exposed to [express v4 -> v5 breaking changes](https://github.com/expressjs/express/blob/5.0/History.md#500--2024-09-10) - fixes #2242\r\n- upgrades to `@slack/socket-mode` v2; `SocketModeReceiver` users who have attached custom event listeners to the public `socketModeClient` directly should read the [v1 -> v2 migration guide](https://github.com/slackapi/node-slack-sdk/wiki/Migration-Guide-for-socket%E2%80%90mode-2.0) in case the major upgrade could affect them - fixes #2225\r\n- upgrades `@slack/web-api` v7; all users should read [the web-api v6->v7 migration guide](https://github.com/slackapi/node-slack-sdk/wiki/Migration-Guide-for-web%E2%80%90api-v7) to see what the scope of breaking changes the `client` within listeners is affected by\r\n- removed exported type: `KnownKeys`\r\n- `@slack/types` now exist under a named export `types`.\r\n- removed the `SocketModeFunctions` class that had a single static method on it and instead directly exposed the `defaultProcessEventErrorHandler` method from it.\r\n- the built-in middleware functions `ignoreSelf` and `directMention` now 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.\r\n- AWSReceiver's `AwsEvent` interface now models event payloads a bit differently; we now properly model AWS API Gateway v1 and v2 payloads separately - fixes #2272 \r\n- remove deprecated methods/modules/properties:\r\n  - `OptionsRequest` interface\r\n  - `authed_users` and `authed_teams` from event payload envelope\r\n  - `render-html-for-install-path` module\r\n  - `verify` and `VerifyOptions` from the `verify-request` module\r\n  - `src/receivers/http-utils.ts` module\r\n\r\n## Non-breaking Changes\r\n\r\n- expose the bundled `@slack/web-api` dependency under the `webApi` named export\r\n- fixed an issue in `AwsLambdaReceiver` where 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 \r\n- dependency updates:\r\n  - upgrades `raw-body` to v3\r\n  - upgrades `@slack/oauth` to v3\r\n  - removes `promise.allsettled` since that is natively supported in node since v14\r\n  - moves `@types/tsscmp` to dev dependencies since that is not exposed to developers\r\n\r\n## Changelog\r\n\r\n* 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\r\n* 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\r\n* chore(deps): bump cookie and express in /docs by @dependabot in https://github.com/slackapi/bolt-js/pull/2291\r\n* Add support for Agents/Assistants by @misscoded in https://github.com/slackapi/bolt-js/pull/2286\r\n* bolt v4 by @filmaj in https://github.com/slackapi/bolt-js/pull/2254\r\n* Publish `@slack/bolt@v4.0.0` by @filmaj in https://github.com/slackapi/bolt-js/pull/2294\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.22.0...@slack/bolt@4.0.0","publishedAt":"2024-10-17T19:53:25.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.0.0","media":[]},{"id":"rel_gFSEw1yYeHk3qqeuxb86b","version":"@slack/bolt@4.0.0-rc.4","title":"@slack/bolt@4.0.0-rc.4","summary":"# Bolt v4 Release Candidate 4\r\n\r\nA lot! We have prepared [a migration guide](https://github.com/slackapi/bolt-js/wiki/Bolt-v3-%E2%80%90--v4-Migration-...","content":"# Bolt v4 Release Candidate 4\r\n\r\nA lot! We have prepared [a migration guide](https://github.com/slackapi/bolt-js/wiki/Bolt-v3-%E2%80%90--v4-Migration-Guide) to help bolt-js consumers migrate their bolt v3 apps to v4.\r\n\r\n## What's Changed\r\n\r\n### Breaking Changes\r\n\r\n#### Middleware Type Changes\r\n\r\nIn bolt we have [a set of `Slack*MiddlewareArgs` types](https://github.com/slackapi/bolt-js/blob/main/src/types/middleware.ts#L12-L18): 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.\r\n\r\nMany of these types, for example [the `SlackEventMiddlewareArgs` type](https://github.com/slackapi/bolt-js/blob/main/src/types/events/index.ts#L11-L19), previously used a conditional to _sometimes_ define particular additional helper utilities on the middleware arguments. For example, [the `say`](https://github.com/slackapi/bolt-js/blob/main/src/types/actions/index.ts#L47) utility, or [tacking on a convenience `message` property](https://github.com/slackapi/bolt-js/blob/main/src/types/events/index.ts#L14) 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`.\r\n\r\nInstead, these `MiddlewareArgs` types [now conditionally create a type _intersection_ when appropriate in order to provide this conditional-utility-extension mechanism](https://github.com/slackapi/bolt-js/pull/2254/files#diff-b5e4a4e82f104fd913ed68e1fd01c16a046705b0a35fd64204ddbafc9dccca74R14). In practice that looks something like:\r\n\r\n```typescript\r\ntype SomeMiddlewareArgs<EventType extends string = string> = {\r\n  // some type in here\r\n} & (EventType extends 'message'\r\n  // If this is a message event, add a `message` property\r\n  ? { message: EventFromType<EventType> }\r\n  : unknown\r\n)\r\n```\r\n\r\nWith 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!\r\n\r\n### Other Breaking Changes\r\n\r\n- drops node v14 and v16 (are now EOL'ed)\r\n- `express` to v4->v5; `ExpressReceiver` users will be exposed to [express v4 -> v5 breaking changes](https://github.com/expressjs/express/blob/5.0/History.md#500--2024-09-10)\r\n  - fixes #2242\r\n- upgrades to `@slack/socket-mode` v2; `SocketModeReceiver` users who have attached custom event listeners to the public `socketModeClient` directly should read the [v1 -> v2 migration guide](https://github.com/slackapi/node-slack-sdk/wiki/Migration-Guide-for-socket%E2%80%90mode-2.0) in case the major upgrade could affect them\r\n  - fixes #2225\r\n- upgrades `@slack/web-api` v7; all users should read [the web-api v6->v7 migration guide](https://github.com/slackapi/node-slack-sdk/wiki/Migration-Guide-for-web%E2%80%90api-v7) to see what the scope of breaking changes the `client` within listeners is affected by\r\n- removed exported type: `KnownKeys`\r\n- `@slack/types` now exist under a named export `types`.\r\n- removed the `SocketModeFunctions` class that had a single static method on it and instead directly exposed the `defaultProcessEventErrorHandler` method from it.\r\n- the built-in middleware functions `ignoreSelf` and `directMention` now 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.\r\n- AWSReceiver's `AwsEvent` interface now models event payloads a bit differently; we now properly model AWS API Gateway v1 and v2 payloads separately.\r\n  - This resolves #2272 \r\n- remove deprecated methods/modules/properties:\r\n  - `OptionsRequest` interface\r\n  - `authed_users` and `authed_teams` from event payload envelope\r\n  - `render-html-for-install-path` module\r\n  - `verify` and `VerifyOptions` from the `verify-request` module\r\n  - `src/receivers/http-utils.ts` module\r\n\r\n## Non-breaking Changes\r\n\r\n- expose the bundled `@slack/web-api` dependency under the `webApi` named export\r\n- fixed an issue in `AwsLambdaReceiver` where apps with no registered handlers that processed an incoming event would still log out an error related to not acknowledging the request in time. Resolves #2284 \r\n- dependency updates:\r\n  - upgrades `raw-body` to v3\r\n  - upgrades `@slack/oauth` to v3\r\n  - removes `promise.allsettled` since that is natively supported in node since v14\r\n  - moves `@types/tsscmp` to dev dependencies since that is not exposed to developers","publishedAt":"2024-10-09T16:47:57.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.0.0-rc.4","media":[]},{"id":"rel_e-c4Zxr-HOCJzfb6GYOuO","version":"@slack/bolt@4.0.0-rc.3","title":"@slack/bolt@4.0.0-rc.3","summary":"# Bolt v4 Release Candidate 3\r\n\r\nA lot! We have prepared [a migration guide](https://github.com/slackapi/bolt-js/wiki/Bolt-v3-%E2%80%90--v4-Migration-...","content":"# Bolt v4 Release Candidate 3\r\n\r\nA lot! We have prepared [a migration guide](https://github.com/slackapi/bolt-js/wiki/Bolt-v3-%E2%80%90--v4-Migration-Guide) to help bolt-js consumers migrate their bolt v3 apps to v4.\r\n\r\n## What's Changed\r\n\r\n### Breaking Changes\r\n\r\n#### Middleware Type Changes\r\n\r\nIn bolt we have [a set of `Slack*MiddlewareArgs` types](https://github.com/slackapi/bolt-js/blob/main/src/types/middleware.ts#L12-L18): 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.\r\n\r\nMany of these types, for example [the `SlackEventMiddlewareArgs` type](https://github.com/slackapi/bolt-js/blob/main/src/types/events/index.ts#L11-L19), previously used a conditional to _sometimes_ define particular additional helper utilities on the middleware arguments. For example, [the `say`](https://github.com/slackapi/bolt-js/blob/main/src/types/actions/index.ts#L47) utility, or [tacking on a convenience `message` property](https://github.com/slackapi/bolt-js/blob/main/src/types/events/index.ts#L14) 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`.\r\n\r\nInstead, these `MiddlewareArgs` types [now conditionally create a type _intersection_ when appropriate in order to provide this conditional-utility-extension mechanism](https://github.com/slackapi/bolt-js/pull/2254/files#diff-b5e4a4e82f104fd913ed68e1fd01c16a046705b0a35fd64204ddbafc9dccca74R14). In practice that looks something like:\r\n\r\n```typescript\r\ntype SomeMiddlewareArgs<EventType extends string = string> = {\r\n  // some type in here\r\n} & (EventType extends 'message'\r\n  // If this is a message event, add a `message` property\r\n  ? { message: EventFromType<EventType> }\r\n  : unknown\r\n)\r\n```\r\n\r\nWith 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!\r\n\r\n### Other Breaking Changes\r\n\r\n- drops node v14 and v16 (are now EOL'ed)\r\n- `express` to v4->v5; `ExpressReceiver` users will be exposed to [express v4 -> v5 breaking changes](https://github.com/expressjs/express/blob/5.0/History.md#500--2024-09-10)\r\n  - fixes #2242\r\n- upgrades to `@slack/socket-mode` v2; `SocketModeReceiver` users who have attached custom event listeners to the public `socketModeClient` directly should read the [v1 -> v2 migration guide](https://github.com/slackapi/node-slack-sdk/wiki/Migration-Guide-for-socket%E2%80%90mode-2.0) in case the major upgrade could affect them\r\n  - fixes #2225\r\n- upgrades `@slack/web-api` v7; all users should read [the web-api v6->v7 migration guide](https://github.com/slackapi/node-slack-sdk/wiki/Migration-Guide-for-web%E2%80%90api-v7) to see what the scope of breaking changes the `client` within listeners is affected by\r\n- removed exported type: `KnownKeys`\r\n- `@slack/types` now exist under a named export `types`.\r\n- removed the `SocketModeFunctions` class that had a single static method on it and instead directly exposed the `defaultProcessEventErrorHandler` method from it.\r\n- the built-in middleware functions `ignoreSelf` and `directMention` now 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.\r\n- AWSReceiver's `AwsEvent` interface now models event payloads a bit differently; we now properly model AWS API Gateway v1 and v2 payloads separately.\r\n  - This resolves #2272 \r\n- remove deprecated methods/modules/properties:\r\n  - `OptionsRequest` interface\r\n  - `authed_users` and `authed_teams` from event payload envelope\r\n  - `render-html-for-install-path` module\r\n  - `verify` and `VerifyOptions` from the `verify-request` module\r\n  - `src/receivers/http-utils.ts` module\r\n\r\n## Non-breaking Changes\r\n\r\n- expose the bundled `@slack/web-api` dependency under the `webApi` named export\r\n- dependency updates:\r\n  - upgrades `raw-body` to v3\r\n  - upgrades `@slack/oauth` to v3\r\n  - removes `promise.allsettled` since that is natively supported in node since v14\r\n  - moves `@types/tsscmp` to dev dependencies since that is not exposed to developers","publishedAt":"2024-10-08T16:13:51.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%404.0.0-rc.3","media":[]},{"id":"rel_5KvzPK3QhVYYRTcx0cvEz","version":"@slack/bolt@3.22.0","title":"@slack/bolt@3.22.0","summary":"## What's new\r\n\r\nThis release adds support for the `assistant.threads.*` API methods introduced in [`@slack/web-api@6.13.0`](https://github.com/slacka...","content":"## What's new\r\n\r\nThis release adds support for the `assistant.threads.*` API methods introduced in [`@slack/web-api@6.13.0`](https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack%2Fweb-api%406.13.0) 🤖  as well as improvements to documentation at the new https://tools.slack.dev/bolt-js site and patches to dependencies 🔒 \r\n\r\n### Example usage\r\n\r\nMore details about these endpoints can be [discovered in the documentation](https://api.slack.com/docs/apps/ai), and listeners can be added to code to respond to incoming events like so:\r\n\r\n```js\r\n\r\napp.event('assistant_thread_started', async ({ client, event, logger }) => {\r\n  logger.info('A new thread started');\r\n  logger.debug(event);\r\n  const now = new Date();\r\n  const title = await client.assistant.threads.setTitle({\r\n    title: `Chats from ${now.toISOString()}`,\r\n    channel_id: event.assistant_thread.channel_id,\r\n    thread_ts: event.assistant_thread.thread_ts,\r\n  });\r\n  logger.debug(title);\r\n  const suggestions = await client.assistant.threads.setSuggestedPrompts({\r\n    channel_id: event.assistant_thread.channel_id,\r\n    thread_ts: event.assistant_thread.thread_ts,\r\n    title: 'Ask the computer for answers',\r\n    prompts: [\r\n      {\r\n        title: 'Find the time',\r\n        message: `What happens at ${Math.floor(now.getTime() / 1000)}`,\r\n      },\r\n    ],\r\n  });\r\n  logger.debug(suggestions);\r\n});\r\n\r\napp.event('assistant_thread_context_changed', async ({ client, event, logger }) => {\r\n  logger.info('The channel of focus changed');\r\n  logger.debug(event);\r\n  const response = client.chat.postMessage({\r\n    thread_ts: event.assistant_thread.thread_ts,\r\n    channel: event.assistant_thread.channel_id,\r\n    text: `Now visiting <#${event.assistant_thread.context.channel_id}>`,\r\n  });\r\n  logger.debug(response);\r\n});\r\n\r\napp.message(async ({ client, message, logger }) => {\r\n  logger.info('A new message was received');\r\n  logger.debug(message);\r\n  if (message.subtype === 'message_changed' || message.subtype === 'message_deleted') {\r\n    return;\r\n  }\r\n  const status = await client.assistant.threads.setStatus({\r\n    channel_id: message.channel,\r\n    thread_ts: message.thread_ts,\r\n    status: 'is thinking...',\r\n  });\r\n  logger.debug(status);\r\n  /**\r\n    * Actual response generation could happen here!\r\n    */\r\n  setTimeout(async () => {\r\n    const response = await client.chat.postMessage({\r\n      channel: message.channel,\r\n      thread_ts: message.thread_ts,\r\n      text: 'How insightful!',\r\n    });\r\n    logger.debug(response);\r\n  }, 3000);\r\n});\r\n```\r\n\r\n### Changes\r\n\r\n#### 📚 Documentation\r\n\r\n* typo: update error link in App.ts - Thanks @ChinoUkaegbu! https://github.com/slackapi/bolt-js/pull/2260\r\n* docs: new URL (HOLD) - Thanks @lukegalbraithrussell! https://github.com/slackapi/bolt-js/pull/2253\r\n\r\n#### 📦 Dependencies\r\n\r\n* chore(deps-dev): bump @types/node from 22.5.4 to 22.5.5 - Thanks @dependabot! https://github.com/slackapi/bolt-js/pull/2263\r\n* Upgrade express version - Thanks @helzahalim! https://github.com/slackapi/bolt-js/pull/2270\r\n* chore(deps): bump @slack/web-api from 6.12.1 to 6.13.0 - Thanks @zimeg! https://github.com/slackapi/bolt-js/pull/2273\r\n\r\n## 🎉 New contributors\r\n\r\n* @ChinoUkaegbu made their first contribution in https://github.com/slackapi/bolt-js/pull/2260\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.4...@slack/bolt@3.22.0","publishedAt":"2024-09-27T23:20:51.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%403.22.0","media":[]},{"id":"rel_2w-yrdHhNpHW_yaE91oZR","version":"@slack/bolt@3.21.4","title":"@slack/bolt@3.21.4","summary":"## What's Changed\r\n* chore(deps): upgrade `path-to-regexp` to partially address a security vulnerability (#2242) by @filmaj in https://github.com/slac...","content":"## What's Changed\r\n* chore(deps): upgrade `path-to-regexp` to partially address a security vulnerability (#2242) by @filmaj in https://github.com/slackapi/bolt-js/pull/2251\r\n\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.3...@slack/bolt@3.21.4","publishedAt":"2024-09-11T22:28:06.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%403.21.4","media":[]},{"id":"rel_0TUAzexRS3j_KFGdHsiCa","version":"@slack/bolt@3.21.3","title":"@slack/bolt@3.21.3","summary":"## What's Changed\r\n\r\nWoops! We (*cough*filmaj*cough*) removed the `EnvelopedEvent` export in a recent change. We are adding it back in in this patch r...","content":"## What's Changed\r\n\r\nWoops! We (*cough*filmaj*cough*) 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.\r\n\r\n## Changelog\r\n\r\n* Link to JS release notes by @bpfoster in https://github.com/slackapi/bolt-js/pull/2239\r\n* 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\r\n* fix: re-export EnvelopedEvent by @filmaj in https://github.com/slackapi/bolt-js/pull/2245\r\n\r\n## New Contributors\r\n* @bpfoster made their first contribution in https://github.com/slackapi/bolt-js/pull/2239\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.2...@slack/bolt@3.21.3","publishedAt":"2024-09-11T12:57:52.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%403.21.3","media":[]},{"id":"rel_IEfxLP1FzNP5BBO0A_0vj","version":"@slack/bolt@3.21.2","title":"@slack/bolt@3.21.2","summary":"## What's Changed\r\n\r\nThe main change in this patch release is creating an npm release for the change in #2223, where exported event payload types were...","content":"## What's Changed\r\n\r\nThe 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:\r\n\r\n```\r\nModule './types' has already exported a member\r\n```\r\n\r\n.. then upgrading to this release should address the issue (see #2233 and #2234 for issue details).\r\n\r\n* fix: pass a no-op `next` function to the last listener middleware by @filmaj in https://github.com/slackapi/bolt-js/pull/2214 (fixes #1457)\r\n* fix: remove please-upgrade-node by @filmaj in https://github.com/slackapi/bolt-js/pull/2221 (fixes #1274)\r\n* Bump `@slack/types` and consume event payloads from it by @filmaj in https://github.com/slackapi/bolt-js/pull/2223\r\n* fix: tsconfig - skip checking dependency d.ts files by @filmaj in https://github.com/slackapi/bolt-js/pull/2226\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.1...@slack/bolt@3.21.2","publishedAt":"2024-09-06T12:07:50.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%403.21.2","media":[]},{"id":"rel_L7k2RJe4SG06k3VERT6ws","version":"@slack/bolt@3.21.1","title":"@slack/bolt@3.21.1","summary":"## What's Changed\r\n\r\nThis patch release brings improvements to documentation and sureness in our CI, as well as security updates to certain `@slack` p...","content":"## What's Changed\r\n\r\nThis 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`](https://github.com/axios/axios/releases/tag/v1.7.4) for more details!\r\n\r\n## Changes\r\n\r\n### 📚 Documentation\r\n\r\n* docs: document custom step usage - Thanks @WilliamBergamin! https://github.com/slackapi/bolt-js/pull/2198\r\n\r\n### 🔒 Security\r\n\r\n* 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\r\n\r\n### 🧰 Maintenance\r\n\r\n* ci: add bolt-ts-custom-function-template to list of test samples - Thanks @filmaj! https://github.com/slackapi/bolt-js/pull/2205\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.21.0...@slack/bolt@3.21.1","publishedAt":"2024-08-16T02:23:48.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%403.21.1","media":[]},{"id":"rel_Wb4sKw91PWhZwoy6HTLxa","version":"@slack/bolt@3.21.0","title":"@slack/bolt@3.21.0","summary":"## What's Changed\r\n\r\nBolt-JS now supports Custom Steps! That's right, your trusty Bolt app now let's you expose [Custom Steps in Bolt](https://api.sla...","content":"## What's Changed\r\n\r\nBolt-JS now supports Custom Steps! That's right, your trusty Bolt app now let's you expose [Custom Steps in Bolt](https://api.slack.com/automation/functions/custom-bolt), allowing you to provide steps for use in Workflow Builder.\r\n\r\nYou can now use the new `function()` method to register handlers for the `function_executed` event. Check out our [API docs on the topic](https://api.slack.com/automation/functions/custom-bolt) to get started.\r\n\r\n# Changelog\r\n\r\n* Add support for remote functions by @misscoded in https://github.com/slackapi/bolt-js/pull/2026\r\n* chore(deps): bump axios to 1.7.4 to address CVE by @helzahalim in https://github.com/slackapi/bolt-js/pull/2201\r\n* chore: purge the \"workflow step\" terminology by @WilliamBergamin in https://github.com/slackapi/bolt-js/pull/2199\r\n\r\n\r\n## New Contributors\r\n* @helzahalim made their first contribution in https://github.com/slackapi/bolt-js/pull/2201\r\n\r\n**Full Changelog**: https://github.com/slackapi/bolt-js/compare/@slack/bolt@3.20.0...@slack/bolt@3.21.0","publishedAt":"2024-08-14T18:41:56.000Z","url":"https://github.com/slackapi/bolt-js/releases/tag/%40slack/bolt%403.21.0","media":[]}],"pagination":{"page":1,"pageSize":20,"totalPages":5,"totalItems":86},"summaries":{"rolling":null,"monthly":[]}}