Skip to content

fix(docs): upgrade esbuild to 0.28.0 with es2022 build target#9047

Merged
jdx merged 1 commit intomainfrom
fix/docs-esbuild-0.28
Apr 11, 2026
Merged

fix(docs): upgrade esbuild to 0.28.0 with es2022 build target#9047
jdx merged 1 commit intomainfrom
fix/docs-esbuild-0.28

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented Apr 11, 2026

Summary

  • Upgrades esbuild from 0.21.5 to 0.28.0 instead of pinning to an older version
  • Sets build.target: "es2022" in VitePress Vite config to avoid Safari <14.1 destructuring transform errors (the docs site doesn't need to support ancient browsers)
  • Expands docs CI workflow path filters so dependency changes (bun.lock, package.json, etc.) trigger the docs build — prevents regressions like this from slipping through

Context

esbuild 0.28.0 updated its browser compat table to flag a Safari <14.1 destructuring bug (esbuild#4436, esbuild#3743). Since esbuild lacks a destructuring transform, it errors out when targeting old Safari. The fix recommended by the esbuild maintainer is to either raise the target or use --supported:destructuring=true. Setting target: "es2022" is the cleaner approach for a docs site.

Supersedes #9041 — thanks @risu729 for the investigation and CI path filter improvements which are included here.

Test plan

  • bun run docs:build passes locally with esbuild 0.28.0
  • All lints pass (hk fix)

🤖 Generated with Claude Code


Note

Medium Risk
Moderate risk because it changes the docs build toolchain (esbuild version and Vite build target), which could affect bundle output and CI behavior, but it’s isolated to documentation tooling.

Overview
Upgrades the docs build’s pinned esbuild version from 0.21.5 to 0.28.0 (via package.json resolutions and bun.lock).

Updates the VitePress Vite config to build with target: "es2022" to avoid older-Safari transform issues.

Expands the docs GitHub Actions workflow path filters so docs CI runs when tooling/dependency/config files (e.g. bun.lock, package.json, various *.toml, registry/**, xtasks/docs/**) change, not just docs/**.

Reviewed by Cursor Bugbot for commit da6a10c. Bugbot is set up for automated code reviews on this repo. Configure here.

esbuild 0.28.0 updated its compat table to flag Safari <14.1
destructuring bugs, causing VitePress builds to fail. Setting
build.target to es2022 avoids the issue since the docs site
doesn't need to support ancient browsers.

Also expands docs CI path filters so dependency changes (bun.lock,
package.json, etc.) trigger the docs workflow.

Closes #9041

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 11, 2026

Greptile Summary

This PR upgrades esbuild from 0.21.5 to 0.28.0 and adds build.target: "es2022" to the VitePress Vite config to fix a build error introduced in esbuild 0.28.0 around Safari <14.1 destructuring support. It also expands CI path filters to ensure docs build jobs fire on dependency file changes, preventing similar regressions in the future.

Confidence Score: 5/5

Safe to merge — straightforward dependency upgrade with a targeted, well-understood build config fix and no functional regressions.

All four changed files are docs-infrastructure only: a lockfile update, a one-line Vite build target addition, a package.json resolution bump, and expanded CI path filters. No Rust source or runtime logic is touched. The fix aligns with the esbuild maintainer's recommendation and the local build was verified passing per the test plan.

No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/docs.yml Expands path filters for docs CI triggers to include dependency files (bun.lock, package.json), config files (mise.toml, settings.toml, tasks.toml), and the workflow file itself — prevents regressions from slipping through undetected.
docs/.vitepress/config.ts Adds build.target: "es2022" to the Vite config to avoid esbuild 0.28.0 erroring on Safari <14.1 destructuring. Correct and minimal fix for a docs site.
package.json Updates esbuild resolution override from 0.21.5 to 0.28.0 in the resolutions field.
bun.lock Lockfile updated to esbuild 0.28.0 across all platform packages; also gains new platform entries (netbsd-arm64, openbsd-arm64, openharmony-arm64) added in the newer esbuild release.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Push / PR to main] --> B{Path filter matches?}
    B -- docs/**, tasks/docs/**, xtasks/docs/**,\nbun.lock, package.json, mise.toml,\nsettings.toml, tasks.toml,\n.github/actions/**, docs.yml,\nregistry/** --> C[docs CI job triggers]
    B -- other paths --> D[docs CI skipped]
    C --> E[bun install\nesbuild 0.28.0]
    E --> F[VitePress build\ntarget: es2022]
    F --> G[Deploy docs]
Loading

Reviews (1): Last reviewed commit: "fix(docs): upgrade esbuild to 0.28.0 wit..." | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request updates the esbuild dependency and sets the Vite build target to es2022. A critical issue was found where the specified esbuild version 0.28.0 is non-existent on the npm registry, as the provided checksums actually correspond to version 0.25.0.

Comment thread package.json
"author": "@jdx",
"resolutions": {
"esbuild": "0.21.5"
"esbuild": "0.28.0"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

The version 0.28.0 for esbuild does not exist on the npm registry; the latest stable version is 0.25.0. The checksums provided in the bun.lock file (e.g., sha512-sNR9... on line 579) actually correspond to version 0.25.0, which suggests the version number was incorrectly specified (likely a hallucination in the PR generation). Using a non-existent version will cause installation failures in CI and other environments. Please update this to 0.25.0 and regenerate the lockfile.

Suggested change
"esbuild": "0.28.0"
"esbuild": "0.25.0"

@github-actions
Copy link
Copy Markdown

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.8 x -- echo 22.1 ± 0.5 21.1 25.9 1.00
mise x -- echo 22.5 ± 0.7 21.5 31.0 1.02 ± 0.04

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.8 env 22.4 ± 0.7 20.9 27.8 1.00
mise env 22.5 ± 0.5 21.3 24.2 1.00 ± 0.04

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.8 hook-env 23.3 ± 1.0 22.0 40.7 1.00
mise hook-env 23.5 ± 0.6 22.2 25.3 1.01 ± 0.05

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.8 ls 20.3 ± 0.6 19.1 24.3 1.00
mise ls 20.7 ± 0.9 19.6 36.5 1.02 ± 0.06

xtasks/test/perf

Command mise-2026.4.8 mise Variance
install (cached) 149ms 149ms +0%
ls (cached) 78ms 78ms +0%
bin-paths (cached) 82ms 82ms +0%
task-ls (cached) 794ms 800ms +0%

@jdx jdx merged commit 9e7fa3e into main Apr 11, 2026
38 checks passed
@jdx jdx deleted the fix/docs-esbuild-0.28 branch April 11, 2026 13:05
mise-en-dev added a commit that referenced this pull request Apr 11, 2026
### 🐛 Bug Fixes

- **(docs)** upgrade esbuild to 0.28.0 with es2022 build target by @jdx
in [#9047](#9047)
- **(env)** skip tools=true module hooks in dependency_env by @jdx in
[#9011](#9011)
- **(lockfile)** resolve SLSA provenance URLs deterministically for all
platforms by @cameronbrill in
[#8982](#8982)
- **(registry)** test of docuum in registry by @jylenhof in
[#8996](#8996)
- **(release)** publish extracted mise.exe alongside Windows zip by
@zeitlinger in [#8997](#8997)
- **(schema)** add missing config fields by @risu729 in
[#9044](#9044)
- **(task)** support sandbox fields in task templates by @risu729 in
[#9046](#9046)
- **(tasks)** respect env precedence for task config by @risu729 in
[#9039](#9039)
- prevent implicit enabling of `self_update` when rustls features are
enabled by @salim-b in [#9040](#9040)
- allow installing bun and others when downloads folder is on a
different mount by @bgeron in
[#9032](#9032)

### 📚 Documentation

- discourage direnv compatibility PRs and remove issue suggestions by
@jdx in
[ca78346](ca78346)
- tighten direnv compatibility language by @jdx in
[ab140c8](ab140c8)
- add Tera tip for unsupported version files by @risu729 in
[#9048](#9048)

### 📦️ Dependency Updates

- update ghcr.io/jdx/mise:deb docker digest to 49fa8a4 by @renovate[bot]
in [#8999](#8999)
- update ghcr.io/jdx/mise:copr docker digest to 61ba7b6 by
@renovate[bot] in [#8998](#8998)
- update ghcr.io/jdx/mise:copr docker digest to fa351ff by
@renovate[bot] in [#9002](#9002)
- update ghcr.io/jdx/mise:alpine docker digest to f3bb475 by
@renovate[bot] in [#9001](#9001)
- update ghcr.io/jdx/mise:rpm docker digest to d45af2d by @renovate[bot]
in [#9005](#9005)
- update ghcr.io/jdx/mise:deb docker digest to d7463ac by @renovate[bot]
in [#9004](#9004)
- update jdx/mise-action digest to 5228313 by @renovate[bot] in
[#9007](#9007)
- update rust docker digest to e8e2bb5 by @renovate[bot] in
[#9008](#9008)
- update taiki-e/install-action digest to 97a5807 by @renovate[bot] in
[#9010](#9010)
- update autofix-ci/action action to v1.3.3 by @renovate[bot] in
[#9015](#9015)
- update ubuntu:24.04 docker digest to 84e77de by @renovate[bot] in
[#9012](#9012)
- update actions/checkout action to v4.3.1 by @renovate[bot] in
[#9014](#9014)
- update ubuntu:26.04 docker digest to cc925e5 by @renovate[bot] in
[#9013](#9013)
- update rust crate tokio to v1.51.1 by @renovate[bot] in
[#9018](#9018)
- update rust crate zip to v8.5.1 by @renovate[bot] in
[#9019](#9019)
- update rust crate ctor to 0.9 by @renovate[bot] in
[#9024](#9024)
- update ubuntu docker tag to resolute-20260404 by @renovate[bot] in
[#9020](#9020)
- update dependency vitepress-plugin-tabs to ^0.8.0 by @renovate[bot] in
[#9023](#9023)
- update rust crate indexmap to v2.14.0 by @renovate[bot] in
[#9025](#9025)
- update rust crate nix to 0.31 by @renovate[bot] in
[#9030](#9030)
- update taiki-e/install-action digest to 7a4939c by @renovate[bot] in
[#9027](#9027)
- update dependency esbuild to v0.28.0 by @renovate[bot] in
[#9022](#9022)
- update rust crate rand to 0.10 by @renovate[bot] in
[#9031](#9031)
- update rust crate digest to 0.11.0 by @renovate[bot] in
[#9028](#9028)
- update rust crate confique to 0.4 by @renovate[bot] in
[#9026](#9026)
- update rust crate rattler to 0.40 by @renovate[bot] in
[#9034](#9034)
- lock file maintenance by @renovate[bot] in
[#8416](#8416)
- disable renovate for aws-config/aws-sdk-* crates by @jdx in
[#9052](#9052)
- update swatinem/rust-cache digest to e18b497 by @renovate[bot] in
[#9009](#9009)

### 📦 Registry

- remove broken tool tests by @jdx in
[#9017](#9017)
- update granted aqua backend repo by @risu729 in
[#9033](#9033)
- fix atlas-community test expected output by @jdx in
[#9054](#9054)

### Chore

- use deprecated_at! macro for ubi backend deprecation by @jdx in
[#9049](#9049)

### Security

- **(ci)** run test-tool inside Docker container by @jdx in
[#9055](#9055)
- **(ci)** avoid exposing MISE_GH_TOKEN to test-tool scripts by @jdx in
[#9053](#9053)

### New Contributors

- @bgeron made their first contribution in
[#9032](#9032)
- @salim-b made their first contribution in
[#9040](#9040)

## 📦 Aqua Registry Updates

#### Updated Packages (2)

-
[`cloudnative-pg/cloudnative-pg/kubectl-cnpg`](https://github.com/cloudnative-pg/cloudnative-pg/kubectl-cnpg)
- [`gleam-lang/gleam`](https://github.com/gleam-lang/gleam)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant