From d36b40f4cd05d5cd4e1be299f3fded486cf01b3f Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 13:30:49 -0800 Subject: [PATCH 1/6] build: use minimum support @types/node@18 in development --- .changeset/vast-drinks-raise.md | 5 +++++ .claude/settings.json | 7 +++++++ packages/cli-hooks/package.json | 2 +- packages/cli-test/package.json | 2 +- packages/logger/package.json | 4 +--- packages/web-api/package.json | 2 +- packages/webhook/package.json | 2 +- 7 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 .changeset/vast-drinks-raise.md diff --git a/.changeset/vast-drinks-raise.md b/.changeset/vast-drinks-raise.md new file mode 100644 index 000000000..8358f0b9a --- /dev/null +++ b/.changeset/vast-drinks-raise.md @@ -0,0 +1,5 @@ +--- +"@slack/logger": patch +--- + +build: remove @types/node from required dependencies diff --git a/.claude/settings.json b/.claude/settings.json index 357b4ca20..422d89133 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -10,15 +10,19 @@ "Bash(gh pr status:*)", "Bash(gh pr update-branch:*)", "Bash(gh pr view:*)", + "Bash(gh run view:*)", "Bash(gh search code:*)", "Bash(git diff:*)", "Bash(git grep:*)", "Bash(git log:*)", + "Bash(git ls-tree:*)", "Bash(git show:*)", "Bash(git status:*)", "Bash(grep:*)", "Bash(head:*)", + "Bash(jq:*)", "Bash(ls:*)", + "Bash(node --test:*)", "Bash(node --version:*)", "Bash(npm --version:*)", "Bash(npm config:*)", @@ -27,7 +31,10 @@ "Bash(npm run build:*)", "Bash(npm run lint:*)", "Bash(npm run lint:fix:*)", + "Bash(npm show:*)", "Bash(npm test:*)", + "Bash(npm version:*)", + "Bash(nvm use:*)", "Bash(tail:*)", "Bash(tree:*)", "WebFetch(domain:docs.slack.dev)", diff --git a/packages/cli-hooks/package.json b/packages/cli-hooks/package.json index e4478898a..59720a020 100644 --- a/packages/cli-hooks/package.json +++ b/packages/cli-hooks/package.json @@ -54,7 +54,7 @@ }, "devDependencies": { "@types/minimist": "^1.2.5", - "@types/node": "^25.0.3", + "@types/node": "^18.19.130", "@types/semver": "^7.5.6", "@types/sinon": "^21.0.0", "shx": "^0.4.0", diff --git a/packages/cli-test/package.json b/packages/cli-test/package.json index cfbf5d00f..be192823f 100644 --- a/packages/cli-test/package.json +++ b/packages/cli-test/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@tsconfig/recommended": "^1.0.6", - "@types/node": "^25.0.3", + "@types/node": "^18.19.130", "@types/sinon": "^21.0.0", "cross-env": "^10.0.0", "shx": "^0.4.0", diff --git a/packages/logger/package.json b/packages/logger/package.json index bf640ca1f..a9dc56715 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -37,10 +37,8 @@ "test:node18": "npm run build && node --test --test-reporter=spec --import tsx --test src/index.test.ts", "test:unit": "npm run build && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=test-results.xml --import tsx --test src/index.test.ts" }, - "dependencies": { - "@types/node": ">=18.0.0" - }, "devDependencies": { + "@types/node": "^18.19.130", "shx": "^0.4.0", "tsx": "^4.20.6", "typedoc": "^0.28.7", diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 1ec889ede..69652c829 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -51,7 +51,7 @@ "dependencies": { "@slack/logger": "^4.0.0", "@slack/types": "^2.20.0", - "@types/node": ">=18.0.0", + "@types/node": ">=18", "@types/retry": "0.12.0", "axios": "^1.13.5", "eventemitter3": "^5.0.1", diff --git a/packages/webhook/package.json b/packages/webhook/package.json index adf3860dd..9aaa388dd 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -43,7 +43,7 @@ }, "dependencies": { "@slack/types": "^2.9.0", - "@types/node": ">=18.0.0", + "@types/node": ">=18", "axios": "^1.13.5" }, "devDependencies": { From 76e02e361edcda230d38d0c55e3bd19a7e7cea88 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 13:50:09 -0800 Subject: [PATCH 2/6] test: use @types/node@18 in development when exporting a range --- packages/oauth/package.json | 1 + packages/rtm-api/package.json | 1 + packages/socket-mode/package.json | 1 + packages/web-api/package.json | 1 + packages/webhook/package.json | 1 + 5 files changed, 5 insertions(+) diff --git a/packages/oauth/package.json b/packages/oauth/package.json index 131d09b4c..e75fc191d 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -48,6 +48,7 @@ "jsonwebtoken": "^9" }, "devDependencies": { + "@types/node": "^18.19.130", "@types/sinon": "^21", "rewiremock": "^3", "shx": "^0.4.0", diff --git a/packages/rtm-api/package.json b/packages/rtm-api/package.json index 22673b093..93fbdbae0 100644 --- a/packages/rtm-api/package.json +++ b/packages/rtm-api/package.json @@ -55,6 +55,7 @@ "ws": "^8" }, "devDependencies": { + "@types/node": "^18.19.130", "@types/sinon": "^17", "@types/ws": "^8", "shx": "^0.3.2", diff --git a/packages/socket-mode/package.json b/packages/socket-mode/package.json index f502c960b..c60a0cf23 100644 --- a/packages/socket-mode/package.json +++ b/packages/socket-mode/package.json @@ -58,6 +58,7 @@ "ws": "^8" }, "devDependencies": { + "@types/node": "^18.19.130", "@tsconfig/recommended": "^1.0.7", "@types/proxyquire": "^1.3.31", "@types/sinon": "^21", diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 69652c829..766073b57 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -65,6 +65,7 @@ "devDependencies": { "@tsconfig/recommended": "^1", "@types/busboy": "^1.5.4", + "@types/node": "^18.19.130", "@types/sinon": "^21", "busboy": "^1", "nock": "^14", diff --git a/packages/webhook/package.json b/packages/webhook/package.json index 9aaa388dd..c489c7990 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -47,6 +47,7 @@ "axios": "^1.13.5" }, "devDependencies": { + "@types/node": "^18.19.130", "nock": "^14.0.6", "shx": "^0.4.0", "tsx": "^4.20.6", From a95b53afb16fb86b99b51445277953bada2edc90 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 15:34:57 -0800 Subject: [PATCH 3/6] ci: add support for node 24 version --- .github/workflows/ci-build.yml | 9 +++++---- AGENTS.md | 4 ++-- README.md | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 79059cc99..335c0f1df 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -19,6 +19,7 @@ jobs: - "18.x" - "20.x" - "22.x" + - "24.x" runs-on: ${{ matrix.os }} permissions: contents: read @@ -62,16 +63,16 @@ jobs: - name: Lint run: npm run lint - name: Run tests (Node 18/20) - if: matrix.node-version != '22.x' + if: matrix.node-version != '22.x' && matrix.node-version != '24.x' shell: bash # Node 18 lacks --test-reporter; Node 20 has coverage bugs. Use simpler script. run: npm run test:node18 --workspaces --if-present - - name: Run tests (Node 22) - if: matrix.node-version == '22.x' + - name: Run tests (Node 22+) + if: matrix.node-version == '22.x' || matrix.node-version == '24.x' shell: bash run: npm test - name: Upload code coverage - if: matrix.node-version == '22.x' && matrix.os == 'ubuntu-latest' + if: matrix.node-version == '24.x' && matrix.os == 'ubuntu-latest' uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 with: fail_ci_if_error: true diff --git a/AGENTS.md b/AGENTS.md index 6b3244914..edc0f8248 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -78,7 +78,7 @@ npm run build --workspace=@slack/socket-mode 2. **Request types ARE manually maintained** — `packages/web-api/src/types/request/` is hand-written code; edit these responsibly. 3. **Build packages in dependency order** — see the dependency graph above. 4. **Use Biome**, not ESLint or Prettier — config is in `biome.json` at repo root. -5. **TypeScript 5.9.3**, Node 18+. +5. **TypeScript 5.9.3**, Node 18+ (tested on Node 18, 20, 22, 24). ## Code Conventions @@ -282,7 +282,7 @@ Entry point for response type generation. It: - **Unit tests**: `*.test.{ts,js}` files alongside source (e.g., `src/WebClient.test.ts`) - **Type tests**: tsd (`*.test-d.ts` files in `packages/web-api/test/types/`) - **Integration tests**: CommonJS, ESM, and TypeScript compatibility checks -- **CI matrix**: Node 18.x, 20.x, 22.x on Ubuntu + Windows (6 jobs total) +- **CI matrix**: Node 18.x, 20.x, 22.x, 24.x on Ubuntu + Windows (8 jobs total) - **Coverage output**: `lcov.info` at each package root (not in `coverage/` dir) - **Test results**: `test-results.xml` at each package root (JUnit format) diff --git a/README.md b/README.md index 42bc36e86..7f44aa740 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ Refer to [the module document page](https://docs.slack.dev/tools/node-slack-sdk/ ## Requirements -This package supports Node v14 and higher. It's highly recommended to use [the latest LTS version of +This package supports Node v18 and higher. It's highly recommended to use [the latest LTS version of node](https://github.com/nodejs/Release#release-schedule), and the documentation is written using syntax and features from that version. From 4a9d963d017ecbb208c349218e7453a0fc5ba031 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 15:37:41 -0800 Subject: [PATCH 4/6] docs: changeset --- .changeset/plenty-times-rhyme.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .changeset/plenty-times-rhyme.md diff --git a/.changeset/plenty-times-rhyme.md b/.changeset/plenty-times-rhyme.md new file mode 100644 index 000000000..f9d871adc --- /dev/null +++ b/.changeset/plenty-times-rhyme.md @@ -0,0 +1,12 @@ +--- +"@slack/socket-mode": patch +"@slack/cli-hooks": patch +"@slack/cli-test": patch +"@slack/web-api": patch +"@slack/webhook": patch +"@slack/logger": patch +"@slack/oauth": patch +"@slack/types": patch +--- + +build: add support for node 24 From 41253ca7315e7c3f114bfe214eed26d5d81273c0 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 16:27:33 -0800 Subject: [PATCH 5/6] ci: remove specific shell --- .github/workflows/ci-build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 335c0f1df..168d838cd 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -64,12 +64,10 @@ jobs: run: npm run lint - name: Run tests (Node 18/20) if: matrix.node-version != '22.x' && matrix.node-version != '24.x' - shell: bash # Node 18 lacks --test-reporter; Node 20 has coverage bugs. Use simpler script. run: npm run test:node18 --workspaces --if-present - name: Run tests (Node 22+) if: matrix.node-version == '22.x' || matrix.node-version == '24.x' - shell: bash run: npm test - name: Upload code coverage if: matrix.node-version == '24.x' && matrix.os == 'ubuntu-latest' From 538e326a647dabcf2ae66d970ded65412861c13c Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Thu, 12 Mar 2026 16:42:36 -0700 Subject: [PATCH 6/6] revert: coauthored by claude --- packages/oauth/package.json | 1 - packages/rtm-api/package.json | 1 - packages/web-api/package.json | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/oauth/package.json b/packages/oauth/package.json index dc0774082..ca7a5ae26 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -48,7 +48,6 @@ "jsonwebtoken": "^9" }, "devDependencies": { - "@types/node": "^18.19.130", "@types/sinon": "^21", "rewiremock": "^3", "sinon": "^21" diff --git a/packages/rtm-api/package.json b/packages/rtm-api/package.json index 13813b4d8..01aa0e9cc 100644 --- a/packages/rtm-api/package.json +++ b/packages/rtm-api/package.json @@ -55,7 +55,6 @@ "ws": "^8" }, "devDependencies": { - "@types/node": "^18.19.130", "@types/sinon": "^17", "@types/ws": "^8", "sinon": "^21" diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 4475dc724..b66789b0c 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -64,7 +64,6 @@ }, "devDependencies": { "@types/busboy": "^1.5.4", - "@types/node": "^18.19.130", "@types/sinon": "^21", "busboy": "^1", "nock": "^14",