// the find
slackapi/bolt-js
A framework to build Slack apps using JavaScript
Slack's official framework for building apps in JavaScript and TypeScript. It wraps the Events API, interactivity, slash commands, and the Web API behind one App class with middleware. It is for teams building Slack bots or workflow apps who would rather not hand-roll request verification, acknowledgement timing, and token handling on top of Express.
Listeners are typed per interaction, so an action, view, command, or options handler each receives the right payload shape and ack signature without casting. The receiver is swappable: the same listeners run under the built-in HTTP receiver, ExpressReceiver, AwsLambdaReceiver, or SocketModeReceiver, so moving from a long-running server to Lambda does not mean rewriting handlers. The docs cover the parts that usually cause trouble later, including token rotation, deferred initialization, custom routes, and a migration guide for each major version. Slack maintains it, the repo has changesets and a release workflow, and it was pushed to this week.
The ack contract changes by interaction type. Actions take no argument, view submissions take an optional response action, options requests need an options object, and legacy commands accept a string or an object. A missed or late ack usually shows up first as a timeout in the Slack client, not in your logs. Socket Mode holds one websocket open from one process, which suits development and internal tools but fits poorly with serverless or autoscaled deploys, so pick a receiver before you write listeners. The README is mostly a pointer to docs.slack.dev, and the production-relevant material (receiver choice, middleware ordering, error handling) lives in a separate docs tree, so the README alone will not get you to a deployable app. Because the framework tracks Slack's platform, every Slack deprecation or API change becomes a framework change, and the v2 through v5 migration guides show that major upgrades have needed real code edits.