---
name: Node SDK
slug: slack-node-sdk
type: github
source_url: https://github.com/slackapi/node-slack-sdk
organization: Slack
organization_slug: slack
total_releases: 102
latest_version: @slack/webhook@7.0.9
latest_date: 2026-04-13
last_updated: 2026-04-19
tracking_since: 2023-12-14
canonical: https://releases.sh/slack/slack-node-sdk
organization_url: https://releases.sh/slack
---

<Release version="@slack/webhook@7.0.9" date="April 13, 2026" published="2026-04-13T21:55:28.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/webhook%407.0.9">
### Patch Changes

-   3a9c444: build(deps): bump minimum axios version to 1.15.0

</Release>

<Release version="@slack/web-api@7.15.1" date="April 13, 2026" published="2026-04-13T21:55:25.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/web-api%407.15.1">
### Patch Changes

-   3a9c444: build(deps): bump minimum axios version to 1.15.0
-   175dcb8: Fix user-agent header to URI-encode characters outside the Latin-1 range, preventing errors when `process.title` contains non-ASCII characters

</Release>

<Release version="@slack/webhook@7.0.8" date="March 13, 2026" published="2026-03-13T01:13:10.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/webhook%407.0.8">
### Patch Changes

- b8d922f: build: add support for node 24
- Updated dependencies [b8d922f]
  - @slack/types@2.20.1
</Release>

<Release version="@slack/web-api@7.15.0" date="March 13, 2026" published="2026-03-13T01:12:41.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/web-api%407.15.0">
### Minor Changes

- 75649f4: feat: add support for [apps.user.connection.update](docs.slack.dev/reference/methods/apps.user.connection.update)

### Patch Changes

- b8d922f: build: add support for node 24
- Updated dependencies [b8d922f]
- Updated dependencies [b8d922f]
  - @slack/logger@4.0.1
  - @slack/types@2.20.1
</Release>

<Release version="@slack/types@2.20.1" date="March 13, 2026" published="2026-03-13T01:11:28.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/types%402.20.1">
### Patch Changes

- b8d922f: build: add support for node 24
</Release>

<Release version="@slack/logger@4.0.1" date="March 13, 2026" published="2026-03-13T01:10:47.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/logger%404.0.1">
### Patch Changes

- b8d922f: build: add support for node 24
</Release>

<Release version="@slack/cli-test@2.2.2" date="March 13, 2026" published="2026-03-13T01:10:02.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/cli-test%402.2.2">
### Patch Changes

- b8d922f: build: add support for node 24
</Release>

<Release version="@slack/cli-hooks@1.3.1" date="March 13, 2026" published="2026-03-13T01:09:13.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/cli-hooks%401.3.1">
### Patch Changes

- b8d922f: build: add support for node 24
</Release>

<Release version="@slack/socket-mode@2.0.6" date="March 13, 2026" published="2026-03-13T00:53:21.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/socket-mode%402.0.6">
### Patch Changes

-   b8d922f: build: add support for node 24
-   Updated dependencies [75649f4]
-   Updated dependencies [b8d922f]
-   Updated dependencies [b8d922f]
    -   @slack/web-api@7.15.0
    -   @slack/logger@4.0.1

</Release>

<Release version="@slack/oauth@3.0.5" date="March 13, 2026" published="2026-03-13T00:53:18.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/oauth%403.0.5">
### Patch Changes

-   dbd38e2: fix: write files to the file installation store using the path.join method
-   b8d922f: build: add support for node 24
-   Updated dependencies [75649f4]
-   Updated dependencies [b8d922f]
-   Updated dependencies [b8d922f]
    -   @slack/web-api@7.15.0
    -   @slack/logger@4.0.1

</Release>

<Release version="@slack/webhook@7.0.7" date="February 13, 2026" published="2026-02-13T03:35:33.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/webhook%407.0.7">
### Patch Changes

-   370cf22: chore(deps): bump axios to ^1.13.5

</Release>

<Release version="@slack/web-api@7.14.1" date="February 13, 2026" published="2026-02-13T03:35:30.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/web-api%407.14.1">
### Patch Changes

-   370cf22: chore(deps): bump axios to ^1.13.5

</Release>

<Release version="@slack/types@2.20.0" date="February 10, 2026" published="2026-02-10T21:23:45.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/types%402.20.0">
### Minor Changes

- f1fb7bf: feat: add thinking steps types

  Added types for Thinking Steps features:

  - **Block types**: `PlanBlock` and `TaskCard` for displaying task progress in messages
  - **Chunk types**: `MarkdownTextChunk`, `PlanUpdateChunk`, `TaskUpdateChunk` for streaming
  - **Source types**: `UrlSourceElements` for displaying sources within task cards

  Related PRs:

  - [#2471](https://github.com/slackapi/node-slack-sdk/pull/2471) - add task_card and plan blocks

  ### Example

  ```js
  await client.chat.postMessage({
    channel: CHANNEL_ID,
    text: "Task progress update",
    blocks: [
      {
        type: "plan",
        plan_id: "plan-123",
        title: "My Task",
        tasks: [
          {
            type: "task_card",
            task_id: "task-124",
            title: "Task 1",
            status: "complete",
          },
          {
            type: "task_card",
            task_id: "task-125",
            title: "Task 2",
            status: "pending",
          },
        ],
      },
    ],
  });
  ```

</Release>

<Release version="@slack/web-api@7.14.0" date="February 10, 2026" published="2026-02-10T20:53:45.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/web-api%407.14.0">
### Agent Thinking Steps: Display Tasks/Tools, Plans, and Markdown Text

#### 🍿 Preview: Display as Plan

https://github.com/user-attachments/assets/1a6478c2-37aa-48c2-84e9-69375b20177e

#### 🍿 Preview: Display as Timeline

https://github.com/user-attachments/assets/984f84e5-c0e0-47ef-a1c2-994ac51a25ba

#### 📺 Chat Stream with 2 Display Mode

- Plan Display Mode
- Timeline Display Mode

#### 👾 Chat Stream Structured Content

Now, you can display a mixture of structured content called "chunks":

- 🔠 **Markdown Text Block** to format your text with standard markdown
- ☑️ **Task Card Block** to display a single task, representing an AI Tool Call or general action
- 🗒️ **Plan Block** to display a collection of related tasks
- 📚 **URL Sources Element** to display references within a task card block

Available in:
- 🔌 API Methods: `chat.startStream`, `chat.appendStream`, and `chat.stopStream`
- 🛟 Chat Stream Helper: `const stream = new ChatStreamer(...);`, `stream.append(...)`

#### 📖 Documentation

- **Announcements**
    - [CHANGELOG](https://docs.slack.dev/changelog/2026/02/11/task-cards-plan-blocks)
- **Guides**
    - [AI in Slack Apps](https://docs.slack.dev/ai/developing-ai-apps#streaming)
    - [Developing AI Apps (streaming section)](https://docs.slack.dev/ai/developing-ai-apps#streaming)
    - [Sending and Scheduling Messages (streaming section)](https://docs.slack.dev/messaging/sending-and-scheduling-messages#text-streaming)
- **Block Kit**
    - [Plan Block](https://docs.slack.dev/reference/block-kit/blocks/plan-block)
    - [Task Card Block](https://docs.slack.dev/reference/block-kit/blocks/task-card-block)
    - [URL Source Element](https://docs.slack.dev/reference/block-kit/block-elements/url-source-element)
- **References**
    - API Methods: [chat.startStream](https://docs.slack.dev/reference/methods/chat.startstream), [chat.appendStream](https://docs.slack.dev/reference/methods/chat.appendstream), and [chat.stopStream](https://docs.slack.dev/reference/methods/chat.stopstream)
    - [Node SDK Reference](https://docs.slack.dev/tools/node-slack-sdk/reference/types)

#### 🍿 Getting Started

```bash
$ slack create

# → AI Agent App
#   → Bolt for JavaScript
#     Bolt for Python
```

---

### Minor Changes

-   1fbce32: feat: add thinking steps support to streaming methods

    `chat.appendStream`, `chat.startStream`, and `chat.stopStream` now accept a `chunks` parameter for streaming structured content including markdown text, plan updates, and task updates.

    Related PRs:

    -   [#2467](https://github.com/slackapi/node-slack-sdk/pull/2467) - accept chunks as arguments to chat.{start,append,stop}Stream methods
    -   [#2470](https://github.com/slackapi/node-slack-sdk/pull/2470) - accept chunks as arguments to chat stream helper
    -   [#2479](https://github.com/slackapi/node-slack-sdk/pull/2479) - add task display mode option to start of chat streams
    -   [#2481](https://github.com/slackapi/node-slack-sdk/pull/2481) - export the chat streamer and related options from the package

    ### Example

    ```js
    const stream = new ChatStreamer(client, client.logger, {
      channel: CHANNEL_ID,
      thread_ts: threadTs,
    });

    await stream.append({
      chunks: [
        {
          type: "markdown_text",
          text: "**Hello!** I am starting to process your request...\n\n",
        },
      ],
    });

    await stream.append({
      chunks: [
        {
          type: "plan_update",
          title: "Processing tasks...",
        },
        {
          type: "task_update",
          id: "task-1",
          title: "Fetching data from API",
          status: "complete",
          output: "Successfully retrieved 42 records",
        },
      ],
    });

    await stream.stop({
      chunks: [
        {
          type: "markdown_text",
          text: "\n\n---\n\n✅ **All tasks completed successfully!**\n",
        },
      ],
    });
    ```

### Patch Changes

-   16a43ca: fix(web-api): add channel_id to canvases.create method
-   Updated dependencies [f1fb7bf]
    -   @slack/types@2.20.0

</Release>

<Release version="@slack/cli-hooks@1.3.0" date="February 5, 2026" published="2026-02-05T22:09:50.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/cli-hooks%401.3.0">
### Minor Changes

-   0abdc91: feat(cli-hooks): add default app and manifest watch config

    This package now provides default watch configurations for automatic file watching during [`slack run`](https://docs.slack.dev/tools/slack-cli/reference/commands/slack_platform_run). The CLI will restart your app server when source files change and reinstall your app when the manifest changes.

    **Requirements:** These features require Slack CLI v3.12.0+ with [file watching support](https://github.com/slackapi/slack-cli/pull/310).

    ### Default Configuration

    The following watch settings are provided automatically when using this package:

    ```json
    {
      "config": {
        "watch": {
          "app": {
            "filter-regex": "\\.js$",
            "paths": ["."]
          },
          "manifest": {
            "paths": ["manifest.json"]
          }
        }
      }
    }
    ```

    -   **app**: Watches for JavaScript file changes to restart the app server
    -   **manifest**: Watches the manifest file for changes to reinstall the app

    **Note:** Manifest watching requires a local manifest source in your `.slack/config.json` file. Remote manifests will not be updated on file changes.

    ```json
    {
      "manifest": {
        "source": "local"
      }
    }
    ```

    ### Custom Configurations

    You can override these defaults in your `.slack/hooks.json` file to reduce the paths searched or change the file patterns. Read [Watch Configurations](https://docs.slack.dev/tools/slack-cli/reference/hooks/#watch-configurations) for more options.

    ### TypeScript Development

    TypeScript developers should run `tsc --watch` in a separate terminal during development. This compiles `.ts` files to `.js` on changes, and the default watch configuration will detect changes to the compiled `dist/*.js` files and restart the app server. This approach works best with the default settings.

### Patch Changes

-   8962739: fix(cli-hooks): stop app process if the start hook exits

    Fixes a CLI [issue](https://github.com/slackapi/slack-cli/issues/128) where daemon app processes were spawned if the CLI was exited without being interrupted.

</Release>

<Release version="@slack/cli-test@2.2.1" date="January 30, 2026" published="2026-01-30T22:26:44.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/cli-test%402.2.1">
### Patch Changes

-   9318ec9: build(cli-test): document the compatible version of slack cli with each release

    The minimum supported Slack CLI version is now documented in the README instead of being encoded in the package version using build metadata (e.g. `+cli.2.32.2`). Build metadata is stripped by npm during publish, causing version conflicts with previously published versions and breaking the automated release workflow.

</Release>

<Release version="@slack/web-api@7.13.0" date="November 25, 2025" published="2025-11-25T21:28:29.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/web-api%407.13.0">
## What's Changed

### 👾 Enhancements
* feat(web-api): add slackLists methods by @srtaalej in https://github.com/slackapi/node-slack-sdk/pull/2421

<details>
<summary>🍿 Expand for a slackLists API method example</summary>

```javascript
 const list = await app.client.slackLists.create({
      name: 'Test List - SlackLists API',
      description_blocks: [
        {
          type: 'rich_text',
          elements: [
            {
              type: 'rich_text_section',
              elements: [
                {
                  type: 'text',
                  text: 'List to keep track of tasks!',
                },
              ],
            },
          ],
        },
      ],
      schema: [
        {
          key: 'task_name',
          name: 'Task Name',
          type: 'text',
          is_primary_column: true,
        },
        {
          key: 'due_date',
          name: 'Due Date',
          type: 'date',
        },
        {
          key: 'status',
          name: 'Status',
          type: 'select',
          options: {
            choices: [
              { value: 'not_started', label: 'Not Started', color: 'red' },
              { value: 'in_progress', label: 'In Progress', color: 'yellow' },
              { value: 'completed', label: 'Completed', color: 'green' },
            ],
          },
        },
        {
          key: 'assignee',
          name: 'Assignee',
          type: 'user',
        },
      ],
    });
    console.log('List created:', list);
    const listId = list.list_id;

    // extract column IDs from the response (map key -> id)
    const keyToId = {};
    if (list.list_metadata?.schema) {
      for (const col of list.list_metadata.schema) {
        keyToId[col.key] = col.id;
      }
    }
    const taskNameColId = keyToId['task_name'];
    console.log('Column IDs:', keyToId);

    const response = await app.client.slackLists.access.set({
      list_id: listId,
      access_level: 'write',
      user_ids: ['U09G4FG3TRN'],
    });
    console.log('Access set:', response);

    const createItemResponse = await app.client.slackLists.items.create({
      list_id: listId,
      initial_fields: [
        {
          column_id: taskNameColId,
          rich_text: [
            {
              type: 'rich_text',
              elements: [
                {
                  type: 'rich_text_section',
                  elements: [
                    {
                      type: 'text',
                      text: 'CLI app unlink command',
                    },
                  ],
                },
              ],
            },
          ],
        },
      ],
    });
    console.log('Item created:', createItemResponse);
    const itemId = createItemResponse.id;

    if (itemId) {
      await app.client.slackLists.items.info({
        list_id: listId,
        id: itemId,
        include_is_subscribed: true,
      });
      console.log('Item info retrieved');

      await app.client.slackLists.items.update({
        list_id: listId,
        cells: [
          {
            row_id: itemId,
            column_id: taskNameColId,
            checkbox: true,
          },
        ],
      });
      console.log('Item updated');
    }

    const listItemsResponse = await app.client.slackLists.items.list({
      list_id: listId,
      limit: 50,
    });
    console.log('Items listed:', listItemsResponse);

    const downloadStartResponse = await app.client.slackLists.download.start({
      list_id: listId,
      include_archived: false,
    });
    console.log('Download started:', downloadStartResponse);
    const jobId = downloadStartResponse.job_id;

    if (jobId) {
      await app.client.slackLists.download.get({
        list_id: listId,
        job_id: jobId,
      });
      console.log('Download status retrieved');
    }

    if (itemId) {
      await app.client.slackLists.items.delete({
        list_id: listId,
        id: itemId,
      });
      console.log('Item deleted');
    }

    await app.client.slackLists.items.deleteMultiple({
      list_id: listId,
      ids: ['item1', 'item2'],
    });
    console.log('Multiple items deleted');

    await app.client.slackLists.access.delete({
      list_id: listId,
      user_ids: ['U09G4FG3TRN'],
    });
    console.log('Access removed');
```
</details>

### 📚 Documentation
* docs(maintainers): update release steps with recent examples by @mwbrooks in https://github.com/slackapi/node-slack-sdk/pull/2442
* docs: fixes broken links in docs sidebar by @lukegalbraithrussell in https://github.com/slackapi/node-slack-sdk/pull/2444
* docs(web-api): note the chat stream buffer size default by @zimeg in https://github.com/slackapi/node-slack-sdk/pull/2418

### 🧰 Maintenance
* chore(web-api): release @slack/web-api@7.13.0 by @srtaalej in https://github.com/slackapi/node-slack-sdk/pull/2445

## New Contributors
* @srtaalej made their first contribution in https://github.com/slackapi/node-slack-sdk/pull/2421 🎉 

**Full Changelog**: https://github.com/slackapi/node-slack-sdk/compare/@slack/types@2.19.0...@slack/web-api@7.13.0
**Milestone**: https://github.com/slackapi/node-slack-sdk/milestone/159
**npm Release**: https://www.npmjs.com/package/@slack/web-api/v/7.13.0
</Release>

<Release version="@slack/types@2.19.0" date="November 21, 2025" published="2025-11-21T23:32:53.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/types%402.19.0">
## What's Changed

### 👾 Enhancements

feat(types): add underline to rich text section block element in #2414 - Thanks @zimeg!
feat(types): add table block in #2426 - Thanks @zimeg!
feat(types): update work object types in #2431 - Thanks @vegeris!

### 📚 Documentation

docs: link to streaming methods and context actions block reference in #2429 - Thanks @zimeg!
docs(types): remove note of maximum length for `raw_text` in #2440 - Thanks @zimeg!

### 🧰 Maintenance

chore(types): release `@slack/types@2.19.0` in #2441 - Thanks @mwbrooks!

**Full Changelog**: https://github.com/slackapi/node-slack-sdk/compare/@slack/types@2.18.0...@slack/types@2.19.0
**Milestone**: https://github.com/slackapi/node-slack-sdk/milestone/158?closed=1
**npm Release**: https://www.npmjs.com/package/@slack/types/v/2.19.0
</Release>

<Release version="@slack/web-api@7.12.0" date="November 3, 2025" published="2025-11-03T18:55:34.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/web-api%407.12.0">
## What's Changed

👾 Enhancements
* feat: add support to @slack/web-api for work objects by @vegeris in https://github.com/slackapi/node-slack-sdk/pull/2231
* web-api(fix): Update SearchMessagesArguments to support cursor pagination by @vegeris in https://github.com/slackapi/node-slack-sdk/pull/2361

🧰 Maintenance
* chore(web-api): release @slack/web-api@7.12.0 by @vegeris in https://github.com/slackapi/node-slack-sdk/pull/2419

📚 Changelog
https://docs.slack.dev/changelog/2025/10/22/work-objects/

**Package**: https://www.npmjs.com/package/@slack/web-api@7.12.0
**Full Changelog**: https://github.com/slackapi/node-slack-sdk/compare/@slack/web-api@7.11.0...@slack/web-api@7.12.0
**Milestone**: https://github.com/slackapi/node-slack-sdk/milestone/156?closed=1
</Release>

<Release version="@slack/types@2.18.0" date="November 3, 2025" published="2025-11-03T18:45:04.000Z" url="https://github.com/slackapi/node-slack-sdk/releases/tag/%40slack/types%402.18.0">
## What's Changed

👾 Enhancements
* feat: add support to @slack/types for work objects by @vegeris in https://github.com/slackapi/node-slack-sdk/pull/2412

🧰 Maintenance
* chore(types): release @slack/types@2.18.0 by @vegeris in https://github.com/slackapi/node-slack-sdk/pull/2417

📚 Changelog
https://docs.slack.dev/changelog/2025/10/22/work-objects/

**Package**: https://www.npmjs.com/package/@slack/types/v/2.18.0
**Full Changelog**: https://github.com/slackapi/node-slack-sdk/compare/@slack/types@2.17.0...@slack/types@2.18.0
**Milestone**: https://github.com/slackapi/node-slack-sdk/milestone/157?closed=1
</Release>

<Pagination page="1" total-pages="6" total-items="102" next="https://releases.sh/slack/slack-node-sdk.md?page=2" />
