Skip to content

chore(deps): upgrade frontend Node engine to 24#4658

Merged
aglinxinyuan merged 8 commits into
mainfrom
xinyuan-frontend-node-24
May 3, 2026
Merged

chore(deps): upgrade frontend Node engine to 24#4658
aglinxinyuan merged 8 commits into
mainfrom
xinyuan-frontend-node-24

Conversation

@aglinxinyuan
Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

Bump the frontend from Node 20 to Node 24 (current Active LTS) ahead of the Node 20 end-of-life window (October 2026 maintenance / April 2027 EOL).

  • frontend/package.json
    • engines.node: >=20.19.0>=24.0.0
    • @types/node: 20.19.3924.10.1
  • .github/workflows/build.yml
    • frontend matrix node-version: 20.19.024.10.0
    • fixed stale literal 18 in the frontend job-name format string (now 24, matching the matrix)
  • bin/texera-web-application.dockerfile
    • frontend build stage: node:22-bookwormnode:24-bookworm
  • AGENTS.md — two doc references to the Node engine bumped to >=24.0.0
  • frontend/yarn.lock — regenerated; only @types/node and its undici-types peer changed

Out of scope:

  • The root Dockerfile still pins node:18-alpine but references the long-removed core/gui/ paths. It is stale and should be cleaned up or removed separately.
  • The frontend/.nvmrc already says lts/*, so no change was needed.
  • The Node 24 audit of the GitHub Actions themselves is tracked in Upgrade GitHub Actions to runtimes that support Node.js 24 #4647.

Any related issues, documentation, discussions?

Closes #4657. Related: #4647 (Node 24 inside GitHub Actions runtimes).

How was this PR tested?

Locally on Windows with Node 24.15.0 + Yarn 4.14.1:

  • yarn --cwd frontend install — lockfile updated cleanly (only @types/node 20.19.39 → 24.10.1 and undici-types 6.21.0 → 7.16.0).
  • yarn --cwd frontend build:ci — production bundle built (initial total 13.82 MB raw / 2.87 MB transfer), exit 0.
  • yarn --cwd frontend test:ci — Karma/Jasmine, 298 of 299 specs passed (1 pre-existing skip), exit 0 under Chrome Headless 147.

CI will exercise the new 24.10.0 matrix value across ubuntu-latest, windows-latest, and macos-latest.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Opus 4.7)

Bump the frontend Node engine from 20.x to 24.x ahead of the Node 20
end-of-life window. Updates the package engines field, the CI matrix,
the @types/node devDependency, the docker build stage that compiles
the frontend bundle, and the Node references in AGENTS.md. Also fixes
a stale literal `18` in the frontend job-name format string in
build.yml that no longer matched the matrix.

Closes #4657
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file frontend Changes related to the frontend GUI ci changes related to CI docs Changes related to documentations dev labels May 2, 2026
Comment thread .github/workflows/build.yml Outdated
Comment thread frontend/package.json
Comment thread .github/workflows/build.yml
@Yicong-Huang Yicong-Huang requested a review from aicam May 2, 2026 19:26
Signed-off-by: Xinyuan Lin <xinyual3@uci.edu>
Copilot AI review requested due to automatic review settings May 3, 2026 04:30
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 3, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 42.93%. Comparing base (5a5ee19) to head (e87c355).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##               main    #4658   +/-   ##
=========================================
  Coverage     42.93%   42.93%           
- Complexity     2028     2030    +2     
=========================================
  Files           957      957           
  Lines         34077    34077           
  Branches       3753     3753           
=========================================
  Hits          14632    14632           
- Misses        18667    18669    +2     
+ Partials        778      776    -2     
Flag Coverage Δ
access-control-service 28.12% <ø> (ø)
agent-service 33.72% <ø> (ø)
amber 40.95% <ø> (+0.01%) ⬆️
computing-unit-managing-service 0.00% <ø> (ø)
config-service 0.00% <ø> (ø)
file-service 33.24% <ø> (ø)
frontend 35.28% <ø> (ø)
python 84.10% <ø> (-0.06%) ⬇️
workflow-compiling-service 47.72% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades the frontend’s required Node.js runtime to Node 24 (Active LTS), updating the version surfaces in the frontend package metadata, CI workflow, Docker build stage, and contributor docs.

Changes:

  • Bump frontend/package.json Node engine to >=24.0.0 and update @types/node to 24.10.1.
  • Update CI to use Node 24.10.0 for the frontend job.
  • Update the web application Dockerfile frontend build stage to node:24-bookworm and refresh docs/lockfile accordingly.

Reviewed changes

Copilot reviewed 3 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
frontend/package.json Raises minimum Node engine to 24 and updates Node typings.
frontend/yarn.lock Regenerated lockfile reflecting updated @types/node and undici-types.
.github/workflows/build.yml Updates frontend CI Node version to 24.10.0 (but also removes job name: fields).
bin/texera-web-application.dockerfile Updates frontend build stage base image to Node 24.
AGENTS.md Updates Node version references to >=24.0.0.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/build.yml
Comment thread .github/workflows/build.yml
Comment thread AGENTS.md Outdated
aglinxinyuan and others added 2 commits May 2, 2026 21:34
Remove dynamic job name formatting for amber build.

Signed-off-by: Xinyuan Lin <xinyual3@uci.edu>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Xinyuan Lin <xinyual3@uci.edu>
@aglinxinyuan aglinxinyuan enabled auto-merge (squash) May 3, 2026 04:34
@aglinxinyuan aglinxinyuan merged commit 7982193 into main May 3, 2026
22 checks passed
@aglinxinyuan aglinxinyuan deleted the xinyuan-frontend-node-24 branch May 3, 2026 04:47
bobbai00 added a commit that referenced this pull request May 4, 2026
### What changes were proposed in this PR?

Manual backport of #4925 to `release/v1.1.0-incubating`. Auto-backport
failed because `bin/texera-web-application.dockerfile` diverged on main
(Node 22 → 24 in #4658, landed 2026-05-02). Conflict resolved by keeping
the release branch's `FROM node:22-bookworm` and inserting the
disclaimer block above it. The other 11 Dockerfiles applied cleanly.

### Any related issues, documentation, discussions?

Backport of #4925. Closes the auto-backport failure noted at
https://github.com/apache/texera/actions/runs/25336814980/job/74284062316.

### How was this PR tested?

Comment-only change; no functional impact. `git diff --stat
upstream/release/v1.1.0-incubating` shows 12 Dockerfiles touched, +9
each (+108 / 0).

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Opus 4.7)
aglinxinyuan added a commit that referenced this pull request May 5, 2026
### What changes were proposed in this PR?

Delete the root `Dockerfile`. It is dead code that has been broken since
the `core/` reorganization in late 2025 and is referenced by nothing in
the build system.

**Why it is broken on its own terms.** The file still contains:

- `COPY core/gui/package.json core/gui/yarn.lock ./` and `COPY core/gui
.` — `core/gui/` was relocated to `frontend/` in #3851 (`chore: relocate
core/gui to frontend`).
- `COPY core/ .` — `core/` was renamed to `common/` in #3882 (`chore:
rename core to common`).
- `RUN pip3 install -r requirements.txt` and `RUN pip3 install -r
operator-requirements.txt` — those files now live under `amber/`.
- `FROM node:18-alpine` — the active frontend builder is
`node:24-bookworm` in `bin/texera-web-application.dockerfile` (post
#4658).

The last touch was #3877 (`chore: rename core/scripts to bin`, Oct
2025), which only fixed one path inside this file and left the rest
pointing at directories that no longer exist. `docker build .` against
this file fails immediately — there is nothing to copy from `core/gui/`.

**Why nothing uses it.**

- `.github/workflows/build-and-push-images.yml` builds images by
globbing `bin/*.dockerfile` only.
- `bin/build-images.sh` and `bin/merge-image-tags.sh` likewise iterate
`*.dockerfile` from `bin/`.
- `bin/README.md` documents `bin/*.dockerfile` as the supported pattern
(e.g. `docker build -f bin/texera-web-application.dockerfile -t ... .`).
- The two `docker-compose.yml` files (`bin/single-node/`, `sql/`)
consume pre-built images and do not declare `build:` for the root
`Dockerfile`.

`.dockerignore` is intentionally kept — it still applies as a
build-context filter for the active `bin/*.dockerfile` builds run from
the project root.

### Any related issues, documentation, discussions?

Closes #4661.

### How was this PR tested?

No automated tests apply; this is a pure deletion of an unreferenced
file.

Verified manually that no remaining file references the root
`Dockerfile`:

```bash
grep -rIn -E '(^|[^.a-zA-Z/])\./Dockerfile|-f Dockerfile' \
  --exclude-dir=node_modules --exclude-dir=.git . | wc -l   # → 0
```

The active image-build paths still resolve (`bin/*.dockerfile`
enumerated by both the local `bin/build-images.sh` and the
`build-and-push-images.yml` matrix builder).

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Opus 4.7)
Yicong-Huang pushed a commit that referenced this pull request May 5, 2026
### What changes were proposed in this PR?

Delete the root `Dockerfile`. It is dead code that has been broken since
the `core/` reorganization in late 2025 and is referenced by nothing in
the build system.

**Why it is broken on its own terms.** The file still contains:

- `COPY core/gui/package.json core/gui/yarn.lock ./` and `COPY core/gui
.` — `core/gui/` was relocated to `frontend/` in #3851 (`chore: relocate
core/gui to frontend`).
- `COPY core/ .` — `core/` was renamed to `common/` in #3882 (`chore:
rename core to common`).
- `RUN pip3 install -r requirements.txt` and `RUN pip3 install -r
operator-requirements.txt` — those files now live under `amber/`.
- `FROM node:18-alpine` — the active frontend builder is
`node:24-bookworm` in `bin/texera-web-application.dockerfile` (post
#4658).

The last touch was #3877 (`chore: rename core/scripts to bin`, Oct
2025), which only fixed one path inside this file and left the rest
pointing at directories that no longer exist. `docker build .` against
this file fails immediately — there is nothing to copy from `core/gui/`.

**Why nothing uses it.**

- `.github/workflows/build-and-push-images.yml` builds images by
globbing `bin/*.dockerfile` only.
- `bin/build-images.sh` and `bin/merge-image-tags.sh` likewise iterate
`*.dockerfile` from `bin/`.
- `bin/README.md` documents `bin/*.dockerfile` as the supported pattern
(e.g. `docker build -f bin/texera-web-application.dockerfile -t ... .`).
- The two `docker-compose.yml` files (`bin/single-node/`, `sql/`)
consume pre-built images and do not declare `build:` for the root
`Dockerfile`.

`.dockerignore` is intentionally kept — it still applies as a
build-context filter for the active `bin/*.dockerfile` builds run from
the project root.

### Any related issues, documentation, discussions?

Closes #4661.

### How was this PR tested?

No automated tests apply; this is a pure deletion of an unreferenced
file.

Verified manually that no remaining file references the root
`Dockerfile`:

```bash
grep -rIn -E '(^|[^.a-zA-Z/])\./Dockerfile|-f Dockerfile' \
  --exclude-dir=node_modules --exclude-dir=.git . | wc -l   # → 0
```

The active image-build paths still resolve (`bin/*.dockerfile`
enumerated by both the local `bin/build-images.sh` and the
`build-and-push-images.yml` matrix builder).

### Was this PR authored or co-authored using generative AI tooling?

(backported from commit d837578)

Generated-by: Claude Code (Opus 4.7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci changes related to CI dependencies Pull requests that update a dependency file dev docs Changes related to documentations frontend Changes related to the frontend GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade frontend Node engine to 24

4 participants