Skip to content

perf: reduce vp binary size - #2043

Merged
fengmk2 merged 5 commits into
mainfrom
perf/reduce-vp-binary-size
Jul 8, 2026
Merged

perf: reduce vp binary size#2043
fengmk2 merged 5 commits into
mainfrom
perf/reduce-vp-binary-size

Conversation

@fengmk2

@fengmk2fengmk2 commented Jul 4, 2026

Copy link
Copy Markdown
Member

Summary

  • trim unused features and dependencies from tracing-subscriber, zip, and vite_error
  • gate migration-only error conversions so unrelated binaries do not link them
  • add a workflow that builds the shipped Linux, macOS, and Windows artifacts with the existing native build actions, then reports vp, NAPI, and trampoline sizes in a sticky PR comment

Final results

ArtifactPR sizegzip -9Raw changegzip change
vp (Linux x64)10.27 MiB4.41 MiB-4.75%-5.84%
NAPI (Linux x64)33.42 MiB12.77 MiB-0.45%-0.52%
vp (macOS ARM64)7.61 MiB3.82 MiB-5.12%-5.97%
NAPI (macOS ARM64)40.78 MiB17.02 MiB-0.35%-0.44%
vp (Windows x64)8.32 MiB3.62 MiB-18.93%-22.41%
NAPI (Windows x64)27.85 MiB10.76 MiB-0.49%-0.60%
Trampoline (Windows x64)0.20 MiB0.10 MiB0.00%+0.00%

Windows size difference

The old vite_error dependency pulled bundled SQLite into the MSVC executables, while Unix linkers discarded most unused SQLite code. Disabling zip defaults also removes BZip2, Deflate64, LZMA, and PPMd; Node archives only require Deflate. vp-setup.exe shows the same 2.02 MB drop as vp.exe, while NAPI drops 0.14 MB because task dependencies still use SQLite and NAPI does not include the ZIP extractor.

The workflow uses build-upstream, build-windows-cli, and compute-native-cache-input-hash. Linux and Windows cross-compilation run on namespace-profile-linux-x64-default; macOS runs on namespace-profile-mac-default.

@fengmk2fengmk2 self-assigned this Jul 4, 2026
@netlify

netlifyBot commented Jul 4, 2026

Copy link
Copy Markdown

Deploy Preview for viteplus-preview canceled.

NameLink
🔨 Latest commitdb4f474
🔍 Latest deploy loghttps://app.netlify.com/projects/viteplus-preview/deploys/6a4e7977c2e54f00087443d9

@github-actions

github-actionsBot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Native binary sizes (db4f474)

Final release artifacts built by the canonical build-upstream and build-windows-cli actions.

ArtifactFormatBasePRChange
vp (Linux x64)Binary10.78 MiB10.27 MiB-524.02 KiB (-4.75%)
vp (Linux x64)gzip -94.68 MiB4.41 MiB-280.23 KiB (-5.85%)
NAPI (Linux x64)Binary33.57 MiB33.42 MiB-156.00 KiB (-0.45%)
NAPI (Linux x64)gzip -912.84 MiB12.77 MiB-71.50 KiB (-0.54%)
vp (macOS ARM64)Binary8.02 MiB7.61 MiB-419.89 KiB (-5.12%)
vp (macOS ARM64)gzip -94.06 MiB3.82 MiB-248.43 KiB (-5.98%)
NAPI (macOS ARM64)Binary40.92 MiB40.78 MiB-145.38 KiB (-0.35%)
NAPI (macOS ARM64)gzip -917.09 MiB17.02 MiB-77.69 KiB (-0.44%)
vp (Windows x64)Binary10.26 MiB8.32 MiB-1.94 MiB (-18.93%)
vp (Windows x64)gzip -94.67 MiB3.63 MiB-1.05 MiB (-22.41%)
NAPI (Windows x64)Binary27.99 MiB27.85 MiB-141.00 KiB (-0.49%)
NAPI (Windows x64)gzip -910.82 MiB10.76 MiB-65.62 KiB (-0.59%)
Trampoline (Windows x64)Binary203.00 KiB203.00 KiB0 B (0.00%)
Trampoline (Windows x64)gzip -997.91 KiB97.91 KiB+2 B (+0.00%)

@fengmk2
fengmk2force-pushed the perf/reduce-vp-binary-size branch from 87be261 to 49eecdcCompareJuly 4, 2026 08:07
@fengmk2fengmk2 added test: e2e Auto run e2e tests test: install-e2e run vite install e2e test test: create-e2e Run `vp create` e2e tests test: sfw labels Jul 4, 2026
@fengmk2
fengmk2force-pushed the perf/reduce-vp-binary-size branch from 49eecdc to ad948a7CompareJuly 4, 2026 08:50
@fengmk2

Copy link
Copy Markdown
MemberAuthor

@codex review

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:ad948a7d08

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread.github/workflows/vp-binary-size.yml Outdated
Comment thread.github/workflows/vp-binary-size.yml
@fengmk2
fengmk2force-pushed the perf/reduce-vp-binary-size branch 2 times, most recently from 1707b7a to 02119e3CompareJuly 8, 2026 06:39
@fengmk2

Copy link
Copy Markdown
MemberAuthor

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Swish!

Reviewed commit:02119e38fc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@fengmk2
fengmk2force-pushed the perf/reduce-vp-binary-size branch 2 times, most recently from 62b6e2a to dcb3b88CompareJuly 8, 2026 06:55
@fengmk2

Copy link
Copy Markdown
MemberAuthor

@codex review

@fengmk2
fengmk2force-pushed the perf/reduce-vp-binary-size branch from dcb3b88 to e7e97b0CompareJuly 8, 2026 07:20

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:dcb3b88c83

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread.github/workflows/vp-binary-size.yml
Comment thread.github/workflows/vp-binary-size.yml
@fengmk2

Copy link
Copy Markdown
MemberAuthor

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit:b7e0230081

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@fengmk2

Copy link
Copy Markdown
MemberAuthor

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit:34bf502f58

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@fengmk2
fengmk2 marked this pull request as ready for review July 8, 2026 08:55
@fengmk2
fengmk2 requested a review from wan9chiJuly 8, 2026 08:55
@fengmk2fengmk2 added the preview-build Publish this PR's commits to the registry bridge as preview builds label Jul 8, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Registry bridge build (34bf502)

This commit build is published to the registry bridge, which serves these as ordinary npm versions (every other package proxies to npmjs):

PackageVersion
vite-plus0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9
@voidzero-dev/vite-plus-core0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9

Install the Vite+ CLI built from this commit, then migrate a project:

# macOS / Linux
curl -fsSL https://vite.plus | VP_PR_VERSION=2043 bash
# Windows (PowerShell)$env:VP_PR_VERSION="2043"; irm https://vite.plus/ps1 | iex

After installing, upgrade the current project's vite-plus to this test build with:

vp migrate

Or point your package manager at the bridge registry https://registry-bridge.viteplus.dev/:

Package managerRegistry config
npm / pnpm / Bun.npmrc: registry=https://registry-bridge.viteplus.dev/
Yarn (v2+).yarnrc.yml: npmRegistryServer: "https://registry-bridge.viteplus.dev/"

Then pin the build (vite aliases to vite-plus-core; pnpm can use a catalog, npm an overrides entry):

{
"devDependencies": {
"vite-plus": "0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9",
"vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.34bf502f587cb98036ac8cdf072783aa813c0dc9"
}
}

@github-actions

Copy link
Copy Markdown
Contributor

🐳 Docker preview image

Built from this PR's registry bridge build:

ImageCompressed size
ghcr.io/voidzero-dev/vite-plus:pr-2043240MB
# remove any stale local copy from a previous run, then pull fresh
docker rmi ghcr.io/voidzero-dev/vite-plus:pr-2043 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-2043

Quick check:

docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2043 vp --version

See docs/guide/docker.md for usage.

@fengmk2
fengmk2 merged commit 5ebe64e into mainJul 8, 2026
110 of 111 checks passed
@fengmk2
fengmk2 deleted the perf/reduce-vp-binary-size branch July 8, 2026 16:47
wan9chi added a commit that referenced this pull request Jul 16, 2026
)
Release vite-plus v0.2.5: Cleaner environments and more reliable
workflows.
This release adds cleanup and package version commands, supports
TypeScript 7 declaration generation, reduces the standalone binary size,
and hardens task tracking, CLI output, package-manager routing, Docker
workflows, and project scaffolding.
### Highlights
- Add `vp env clean` to remove unused managed Node.js runtimes and
package-manager caches
([#2003](#2003)), by
@liangmiQwQ
- Add `vp pm version`, forwarding native version commands to npm, pnpm,
Yarn, and Bun
([#2127](#2127)), by
@jong-kyung
- Add TypeScript 7 support to declaration generation and generated
library projects with tsdown `0.22.7`
([#2104](#2104),
[#2168](#2168)), by
@wan9chi
- Improve automatic task input tracking for Bun on macOS, Linux
containers with constrained `/dev/shm`, and Windows process images,
reduce Windows backing-file allocation, and clarify task wait failures
([vite-task#515](voidzero-dev/vite-task#515),
[vite-task#518](voidzero-dev/vite-task#518),
[vite-task#523](voidzero-dev/vite-task#523),
[vite-task#524](voidzero-dev/vite-task#524),
[vite-task#542](voidzero-dev/vite-task#542),
[#2126](#2126),
[#2167](#2167)), by
@wan9chi
- Prevent CLI diagnostics from truncating or panicking when inherited
standard output or error is nonblocking
([#2172](#2172),
[#2173](#2173)), by
@wan9chi
### Fixes & Enhancements
- Reduce standalone `vp` binary sizes by about 5% on Linux and macOS and
19% on Windows
([#2043](#2043)), by
@fengmk2
- Keep the Docker image non-root by default while allowing passwordless
`sudo` for Playwright browser dependencies and system packages
([#2088](#2088)), by
@fengmk2
- Ignore `.env` and `.env.*` in generated projects while keeping
`.env.example` trackable
([#2095](#2095)), by
@forehalo
- Create `vp-use.cmd` after the Windows environment bin directory is
ready and document its Command Prompt-only usage
([#2128](#2128)), by
@liangmiQwQ
- Render user-facing process statuses and paths without Rust debug
wrappers ([#2130](#2130)),
by @liangmiQwQ
- Make `vp dedupe` fall back to `yarn install` with a warning on Yarn
Classic ([#2139](#2139)),
by @jong-kyung
- Ensure package-manager child processes, including Bun, can always find
the managed Node.js runtime
([#2158](#2158)), by
@BlankParticle
### Docs
- Update the release-manager post-release guidance
([#2096](#2096)), by
@wan9chi
- Add Windows to the Namespace sponsor credit
([#2108](#2108)), by
@fengmk2
- Document installer and runtime environment variables, registry
settings, TLS options, and precedence rules
([#2114](#2114)), by
@yukinoshi
- Mark shell examples in `CONTRIBUTING.md` as Bash code blocks
([#2159](#2159)), by
@BlankParticle
### Chore
- Assign prepared release PRs to the workflow actor
([#2094](#2094)), by
@wan9chi
- Complete the PTY snapshot migration and harden the runner, fixtures,
release-version redaction, registry teardown, timeouts, and Linux
parallelism
([#2071](#2071),
[#2080](#2080),
[#2084](#2084),
[#2099](#2099),
[#2102](#2102),
[#2103](#2103),
[#2107](#2107),
[#2109](#2109),
[#2115](#2115),
[#2117](#2117),
[#2118](#2118),
[#2119](#2119),
[#2120](#2120),
[#2121](#2121),
[#2131](#2131),
[#2132](#2132),
[#2134](#2134),
[#2137](#2137),
[#2138](#2138),
[#2141](#2141),
[#2143](#2143),
[#2145](#2145),
[#2182](#2182)), by
@fengmk2 and @wan9chi
- Expose Vite+ managed binaries consistently inside snapshot fixtures
([#2110](#2110)), by
@liangmiQwQ
- Exclude PTY snapshot configuration from Vitest discovery and remove
the legacy snapshot infrastructure
([#2135](#2135),
[#2146](#2146)), by
@jong-kyung
- Modernize Windows runners, registry bridge publishing, native size
reporting, merge-base comparisons, and package-manager installation CI
([#2083](#2083),
[#2100](#2100),
[#2105](#2105),
[#2106](#2106),
[#2112](#2112),
[#2133](#2133)), by
@fengmk2
- Verify that created monorepo libraries emit declarations in CI
([#2171](#2171)), by
@wan9chi
### Bundled Versions
| Tool | Version | Source |
| --------------- | ------- |
-----------------------------------------------------------------------
|
| vite | `8.1.4` |
[`a477454`](vitejs/vite@a477454)
|
| rolldown | `1.1.5` |
[`f09947a`](rolldown/rolldown@f09947a)
|
| tsdown | `0.22.7` | [npm](https://npmx.dev/package/tsdown/v/0.22.7) |
| vitest | `4.1.10` | [npm](https://npmx.dev/package/vitest/v/4.1.10) |
| oxlint | `1.73.0` | [npm](https://npmx.dev/package/oxlint/v/1.73.0) |
| oxlint-tsgolint | `0.24.0` |
[npm](https://npmx.dev/package/oxlint-tsgolint/v/0.24.0) |
| oxfmt | `0.58.0` | [npm](https://npmx.dev/package/oxfmt/v/0.58.0) |
### Upgrade
```bash
vp upgrade
```
### New Contributors
Welcome @yukinoshi and @BlankParticle.
**Full Changelog**:
v0.2.4...v0.2.5
---
Merging this PR will trigger the release workflow.
---------
Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com>
Co-authored-by: wan9chi <dk4rest@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

preview-buildPublish this PR's commits to the registry bridge as preview buildstest: create-e2eRun `vp create` e2e teststest: e2eAuto run e2e teststest: install-e2erun vite install e2e testtest: sfw

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@fengmk2@wan9chi