Skip to content

Releases: slackapi/node-slack-sdk

@slack/web-api@8.2.0

Choose a tag to compare

@slackapi slackapi released this 30 Sep 22:07
a98047a

Minor Changes

Patch Changes

  • Updated dependencies [ca6f416]
  • Updated dependencies [abf184e]
  • Updated dependencies [d420d00]
  • Updated dependencies [52eeb05]
    • @slack/types@3.2.0

@slack/types@3.2.0

Choose a tag to compare

@slackapi slackapi released this 30 Sep 22:07
a98047a

Minor Changes

@slack/socket-mode@3.1.0

Choose a tag to compare

@slackapi slackapi released this 30 Sep 22:07
a98047a

Minor Changes

  • 334e6a6: Support undici@^8 as a peer dependency in addition to undici@^7. undici@^8 requires Node.js >=22.19; undici@^7 continues to support Node.js >=20.

    The default dispatcher now pins the WebSocket connection to HTTP/1.1, since undici@^8 offers HTTP/2 by default. To do the same with a custom ProxyAgent dispatcher, pass requestTls: { allowH2: false }.

Patch Changes

  • e22facd: fix(socket-mode): stop spurious ping/pong WARN from other undici WebSockets (#2743). Route diagnostics frames by reference identity instead of instanceof, which failed across undici copies (e.g. Node's global WebSocket).
  • Updated dependencies [c523063]
    • @slack/web-api@8.2.0

@slack/webhook@8.0.2

Choose a tag to compare

@slackapi slackapi released this 27 Aug 20:20
e026671

Patch Changes

  • 0ee1d99: fix: revert internal packages requiring esm loading for backward compatible support (#2711)

@slack/webhook@8.0.1

Choose a tag to compare

@slackapi slackapi released this 27 Aug 06:50
c663dc0

Patch Changes

  • 3a459f6: fix: stop WebhookTrigger.send() from retrying after a successful delivery

    A 2xx response with an empty or non-JSON body no longer throws. It now resolves to { ok: true }. Before this fix that body threw a parse error, which was retried as a request error and caused duplicate Workflow Builder runs. A valid { ok: false, error } body is still surfaced to the caller.

  • Updated dependencies [916d8e9]

  • Updated dependencies [f5e9a01]

    • @slack/types@3.1.0

@slack/web-api@8.1.1

Choose a tag to compare

@slackapi slackapi released this 27 Aug 20:20
e026671

Patch Changes

  • 0ee1d99: fix: revert internal packages requiring esm loading for backward compatible support (#2711)

@slack/web-api@8.1.0

Choose a tag to compare

@slackapi slackapi released this 27 Aug 06:50
c663dc0

Minor Changes

  • 955e6b9: feat(web-api): add support for admin.users.getExpiration

  • 4322e14: feat(web-api): add agents.sessions.rename and agents.sessions.setStatus

  • 4ba30a1: feat(web-api): add session_status to chat.stopStream arguments

  • bff3398: feat(web-api): add webapi response changes as of 2026-08-21

    Regenerate response types with new stable response properties (e.g. agent_session on message-bearing responses, ListView grouping/sort/filter fields, bots.info connector/workflow flags).

    Two fields are removed from UsersListResponse, neither of which is a real success-response property:

    • Member.is_connector_bot — not returned by users.list; this flag is surfaced on bots.info (added here to BotsInfoResponse).
    • arg — an error-response echo field, not part of a successful users.list body.
  • f5fd35a: feat(web-api): add blocks.validate method

Patch Changes

  • Updated dependencies [916d8e9]
  • Updated dependencies [f5e9a01]
    • @slack/types@3.1.0

@slack/types@3.1.0

Choose a tag to compare

@slackapi slackapi released this 27 Aug 06:44
c663dc0

Minor Changes

@slack/socket-mode@3.0.1

Choose a tag to compare

@slackapi slackapi released this 27 Aug 20:34
e0fa745

Patch Changes

  • 5c2362c: Fix leaked TCP sockets on disconnect (#2709). Moving from ws to undici's WebSocket in 3.0.0 dropped every force-close mechanism, so ESTABLISHED sockets were never torn down and accumulated toward Slack's per-app connection cap.

    • disconnect() now arms a 30s close-handshake timeout, so a peer that never replies to the close frame no longer leaves the socket stuck in CLOSING indefinitely.
    • On the default dispatcher path, the underlying TCP socket is now captured and force-destroyed during cleanup. A user-supplied dispatcher owns its own socket and instead relies on the close-handshake timeout — this limitation is documented on the dispatcher option.
    • The close handler no longer schedules a reconnect on stale or overlapping close events, so at most one reconnect is scheduled per disconnect.

@slack/webhook@8.0.0

Choose a tag to compare

@slackapi slackapi released this 14 Jul 17:55
70e15b8

Major Changes

  • fc98c8c: Drop Node.js 18 support. The minimum supported Node.js version is now 20.

  • fc98c8c: Restructured error classes to use proper Error subclasses extending a new SlackWebhookError base class.

    Breaking changes to IncomingWebhookHTTPError:

    • The original property has been removed. HTTP response details are now direct properties:
      • statusCode: number
      • statusMessage: string
      • body: string
    • Migrate from error.original.response.status to error.statusCode, error.original.response.data to error.body, etc.

    Breaking changes to IncomingWebhookRequestError:

    • The original property is now a standard Error (previously it was an AxiosError). The original error is also available via the standard cause property.

    Removed factory functions (use new with the corresponding class instead):

    • requestErrorWithOriginal() → new IncomingWebhookRequestError(original)
    • httpErrorWithOriginal() → new IncomingWebhookHTTPError(statusCode, statusMessage, body)
    • errorWithCode() — Use the specific error class directly.

    Migration: Replace if (error.code === ErrorCode.HTTPError) with if (error instanceof IncomingWebhookHTTPError). You can also catch all webhook errors with if (error instanceof SlackWebhookError).

    The CodedError interface is deprecated — use instanceof checks with the SlackWebhookError base class or specific error subclasses instead.

  • fc98c8c: Replaced axios with the standard Fetch API for HTTP transport.

    Removed options from IncomingWebhookDefaultArguments:

    • agent — Use the new fetch option to provide a custom fetch implementation with proxy or TLS support. For proxies, prefer the built-in http.setGlobalProxyFromEnv() or NODE_USE_ENV_PROXY=1 (Node.js 24+). For advanced use cases:
      import { fetch, Agent } from "undici";
      const webhook = new IncomingWebhook(url, {
        fetch: (url, init) =>
          fetch(url, {
            ...init,
            dispatcher: new Agent({ connect: { ca: myCA } }),
          }),
      });

    The axios dependency has been removed. The default fetch implementation is globalThis.fetch (available in Node.js 20+). The timeout option remains available and is implemented via AbortController.

Minor Changes

  • fc98c8c: feat: add WebhookTrigger class for Workflow Builder triggers and opt-in retries for IncomingWebhook and WebhookTrigger

    WebhookTrigger surfaces its own WebhookTriggerHTTPError and WebhookTriggerRequestError (subclasses of SlackWebhookError), so trigger failures can be distinguished from IncomingWebhook failures via instanceof.

Patch Changes

  • Updated dependencies [fc98c8c]
    • @slack/types@3.0.0