@slack/web-api@8.0.0
Major Changes
-
fc98c8c: Drop Node.js 18 support. The minimum supported Node.js version is now 20.
-
fc98c8c: Redesigned error handling to use proper
Errorsubclasses instead of plain objects with acodeproperty.Migration: Replace
if (error.code === ErrorCode.PlatformError)withif (error instanceof WebAPIPlatformError). All error classes extend a commonSlackErrorbase class (which extendsError), so you can also catch all SDK errors withif (error instanceof SlackError).New error class hierarchy:
SlackError(abstract base)WebAPIPlatformError— Slack API returnedok: falseWebAPIRequestError— Network/transport failure (original error incause)WebAPIHTTPError— Non-200 HTTP status from SlackWebAPIRateLimitedError— HTTP 429 withretryAftersecondsWebAPIFileUploadInvalidArgumentsError— Invalid file upload argumentsWebAPIFileUploadReadFileDataError— Failed to read file data for upload
Removed factory functions (these were internal but exported — use
newwith the corresponding class instead):errorWithCode()platformErrorFromResult()→new WebAPIPlatformError(...)requestErrorWithOriginal()→new WebAPIRequestError(...)httpErrorFromResponse()→new WebAPIHTTPError(...)rateLimitedErrorWithDelay()→new WebAPIRateLimitedError(...)
Other breaking type changes:
WebAPIHTTPError.headerstype changed fromIncomingHttpHeaderstoRecord<string, string>.- The
CodedErrorinterface is deprecated — useinstanceofchecks with specific error classes instead. - Error
.namevalues changed from generic'Error'to descriptive class names (e.g.,'WebAPIPlatformError').
-
fc98c8c: Replaced
axioswith the standard Fetch API for all HTTP transport. The following options and types have been removed fromWebClientOptions:agent— Use the newfetchoption to provide a custom fetch implementation with proxy or keep-alive support. For proxies, prefer the built-inhttp.setGlobalProxyFromEnv()orNODE_USE_ENV_PROXY=1(Node.js 24+). For advanced use cases:import { fetch, Agent } from "undici"; const client = new WebClient(token, { fetch: (url, init) => fetch(url, { ...init, dispatcher: new Agent({ keepAliveTimeout: 60_000 }), }), });tlsandTLSOptions— Configure TLS via a customfetchimplementation with an undiciAgent, or use theNODE_EXTRA_CA_CERTSenvironment variable.requestInterceptorandRequestInterceptortype — Wrap thefetchfunction to intercept or modify requests before they are sent.adapterandAdapterConfigtype — Use thefetchoption instead.RequestConfigtype (was an alias for Axios'InternalAxiosRequestConfig) — Removed entirely.attachOriginalToWebAPIRequestErroroption — Removed. The original error is now always available via the standardcauseproperty onWebAPIRequestError.
The dependencies
axios,form-data,is-electron, andis-streamhave been removed. The defaultfetchimplementation isglobalThis.fetch(available in Node.js 20+).New exported types for custom fetch implementations:
FetchFunction,FetchResponse,FetchRequestInit,FetchHeaders. -
fc98c8c: Removed previously-deprecated API methods and their associated request/response types:
files.upload— UsefilesUploadV2instead (available since v6.7). ThefilesUploadV2method handles the multi-step upload process automatically.rtm.start— Usertm.connectinstead. Thertm.startmethod was deprecated by Slack in favor of the lighter-weightrtm.connect.workflows.stepCompleted,workflows.stepFailed,workflows.updateStep— These methods supported the retired Steps from Apps feature (deprecated August 2023, retired September 2024). Theworkflows.featured.*andadmin.workflows.*methods for the current Workflow Builder remain available.
Minor Changes
- fc98c8c: feat: expand app manifest types — add
agent_viewandassistant_viewfeatures, recent agent events (app_context_changed,assistant_thread_started,assistant_thread_context_changed), optional OAuth scopes (bot_optional/user_optional), and eventmetadata_subscriptions
Patch Changes
- bb49d99: fix: apply redact() to API response bodies in debug logs and recurse into nested objects, preventing tokens from leaking into logs when debug logging is enabled
- Updated dependencies [fc98c8c]
- Updated dependencies [fc98c8c]
- @slack/logger@5.0.0
- @slack/types@3.0.0
Fetched July 14, 2026
