slackapi / slackapi/node-slack-sdk

Removing support for Node 18 and other upcoming breaking changes

Open
#2,359 2 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

auto-triage-skip discussion pkg:cli-hooks pkg:cli-test pkg:logger pkg:oauth pkg:rtm-api pkg:socket-mode pkg:types pkg:web-api pkg:webhook semver:major
Dominant language
TypeScript
Stars
3.4k
Forks
688
Avg merge
15h 31m
Merged PRs (30d)
27

Description

👋 Hello! This issue announces support for Node 18 is being removed within a few months to add support and develop with changes from more recent Node versions. Ongoing changes and discussion can be followed along here!

📆 Timeline

As overview for what's ahead, the following timeline might be useful:

  • Upstream Node 18 reaches EOL: 2025-03-27.
  • Notice of removing support: 2025-09-03.
  • Development releases shared: 2025-10-03 or sooner.
  • Public release of new package versions: 2025-12-02 or later.
  • Previous versions become unsupported: 2026-01-01 or later.

References

👾 Planned changes

Breaking changes planned for this next major version follow.

Supported Node version

The Node 18 release will no longer be supported or used in testing. Future development will use features from the latest releases for the following versions:

  • Node 20 - "Maintenace": What we use in testing.
  • Node 22 - "Active": What we use in testing.
  • Node 24 - "Current": What we will recommend applications use.
Using the fetch API to send requests

The axios package has been used to send requests with both the @slack/web-api and @slack/webhook packages. We'll look to replace this with the undici package to align with the Node implementation. Related: #1525 #1761.

Using request and response in installation callbacks

The installer handler callback arguments from @slack/oauth are changing to Request and Response objects as a more compatible standard. For: #2270.

Unnesting responses from the filesUploadV2 method

The shape of responses from the filesUploadV2 method of @slack/web-api will be flattened to return file indicies at the top of the response. From: #1803.

Converting code samples and examples to ECMAScript modules

Examples documented for these packages will use ECMAScript modules.

Removing deprecated features

These next major versions will remove deprecated features from packages.

Removing unsupported packages from the main branch

The @slack/client, @slack/events-api, and @slack/interactive-messages packages are being removed from the main branch after being EOL for a handful of years.

Converting test runners to default scaffoldings

Recent Node updates introduced a test runner for setting up and asserting cases. We can perhaps use this to reduce updates from dependencies. Similar: #2304 #2348 #2349 #2350 #2351 #2352.

👁️‍🗨️ Future changes

A few open issues address breaking changes to @slack/types that might not be included in this set of changes and might involve coordinating changes with @slack/bolt in upcoming releases. Follows: #1768 #1816 #1904 #1905.

📝 Notes

Super open to discussing the scope of these changes and considerations of all kind!

For sometime soon I'm hoping we can start developing against supported Node versions in sample apps and begin testing in CI 🚀

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This is an umbrella planning issue covering Node support, request APIs, OAuth callbacks, response shapes, examples, deprecated packages, and test runners; no files, tests, or entry points are named. Start by reviewing the related issues and package areas listed in the timeline. Done requires a defined scope and completed coordinated breaking changes, but this issue does not specify one self-contained task.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
backend-api-design, build-system, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.