Skip to content

Phase 6: bump GitHub Actions runner from Node.js 20 to Node.js 24 #9

@thomaschristory

Description

@thomaschristory

GitHub Actions is deprecating Node.js 20 runners — every workflow run currently emits this annotation:

Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, astral-sh/setup-uv@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026.

See https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/.

Affected workflows

All seven workflows in this repo use `actions/checkout@v4` and most use `astral-sh/setup-uv@v3`:

  • `.github/workflows/release.yml`
  • `.github/workflows/lint.yml`
  • `.github/workflows/test.yml`
  • `.github/workflows/bench.yml`
  • `.github/workflows/e2e.yml`
  • `.github/workflows/docs.yml`
  • `.github/workflows/agents-md-sync.yml`

Resolution paths (in order of preference)

  1. Wait for upstream major-version bumps. Both `actions/checkout` and `astral-sh/setup-uv` will publish new major versions that ship with Node.js 24 binaries. When they do, bump the pins (`@v5`, `@v4`, etc.) across all seven workflows in one PR. This is the cleanest path; expected before June 2026.
  2. Opt into Node.js 24 early by setting `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` either as a runner env var or per-workflow. Validates compatibility before the forced flip on 2026-06-02.

Deadline

  • 2026-06-02: GitHub forces Node.js 24 for all action runs. Workflows that haven't migrated may emit warnings or break.
  • 2026-09-16: Node.js 20 is removed from runners entirely. Workflows pinned to Node 20-only action versions will fail outright.

Why deferred from v1

The deprecation is informational at v1.0.0 ship time (2026-05-06); the forced flip is ~4 weeks out. v1.0.0 publishes successfully on the current pins.

Acceptance

  • All seven workflows run on Node.js 24 without the deprecation annotation.
  • Tested via a no-op PR that bumps the action pins and confirms green CI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions