Major Changes
-
d284e69: Drop Node.js 18 support. The minimum required runtime is now Node.js 20 (npm >=9.6.4).
-
d284e69: Remove deprecated
WorkflowStepclass and all associated types, middleware, and utilities. UseCustomFunctionandapp.function()instead. -
d284e69: Replace axios with native fetch for response_url calls. Remove
agentandclientTlsoptions fromAppOptions— useclientOptions.fetchto provide a custom fetch implementation for proxy/TLS needs. Add adispatcheroption toSocketModeReceiverfor proxy/TLS configuration in socket mode.respond()now throws aRespondErrorwhen theresponse_urlrequest returns a non-2xx status (restoring the throw-on-failure behavior that axios provided) and resolves to aResponseon success rather than an axios response object.
Minor Changes
- d284e69: Improve error handling by leveraging
@slack/web-apiv8 error classes. Authorization errors are now properly wrapped in anAuthorizationError, preserving the original thrown value (non-Errorrejections are retained via thecauseof the wrapped original). Default error handlers log richer details for web-api errors (API error codes, rate limit durations, HTTP status codes) alongside the full error object, so stack traces and causes remain available. The@slack/web-apierror classes (SlackError,WebAPIPlatformError,WebAPIRequestError,WebAPIHTTPError,WebAPIRateLimitedError) can be imported from@slack/web-apiforinstanceofchecks.
Patch Changes
-
9839a50: Pass the App's named
bolt-appConsoleLoggerto the default receivers when nologgeroption is provided. Previously the App constructor built a named logger onthis.loggerbut threaded the raw (potentially undefined) constructor argument intoinitReceiver, soHTTPReceiver/SocketModeReceivereach built their own anonymous logger and receiver-side log lines (e.g. unhandled HTTP requests on custom routes) appeared without thebolt-appprefix.Behaviour change for the no-
loggercase: the default receiver now shares the sameLoggerinstance asapp.logger, so a downstreamapp.logger.setLevel(...)after construction will affect receiver-side logging too. This is consistent with the existing behaviour that already mutatesthis.logger's level via thelogLevelconstructor option. Apps that supplied their ownloggerare unaffected; apps that relied on the receiver's logger being independent ofapp.loggerwill need to pass a separateloggerinto the receiver explicitly. -
e1c21d7: Fix
AwsLambdaReceiver.toHandler()so Bolt apps on the AWS Lambda Node.js 24+ runtime no longer fail at startup withRuntime.CallbackHandlerDeprecated. The returned handler is now a 2-arg promise-based function; the unused trailingcallbackparameter has been removed from theAwsHandlertype. The legacyAwsCallbackexport is retained and marked@deprecated. -
f2de079: Add
context_team_idandcontext_enterprise_idas optional fields on theEnvelopedEventtype. Slack's Events API delivers these on the envelope for Slack Connect channels and Enterprise Grid org-wide apps, whereteam_idmay refer to a workspace different from the one the bot is installed in. Without the typed fields, downstream code had to reach for@ts-expect-erroror unsafe casts to route by the correct workspace.