Skip to content

Stop shipping build-only deps in the app - #23

Draft
mokagio wants to merge 1 commit into
trunkfrom
mokagio/trim-desktop-artifact-deps
Draft

Stop shipping build-only deps in the app#23
mokagio wants to merge 1 commit into
trunkfrom
mokagio/trim-desktop-artifact-deps

Conversation

@mokagio

@mokagio mokagio commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #22 (macOS code signing). Review/merge that first — GitHub will retarget this to trunk once it lands.

Rationale

The packaged app was ~1 GB on every platform. The renderer is esbuild-bundled at build time, so React, @wordpress/*, @emotion/*, and xterm are already inlined into src/renderer — yet they also sat in dependencies, so electron-builder shipped their full node_modules trees inside the app too. @xterm/xterm was a dependency with zero references in src (the renderer imports the xterm package).

Moving the build-only libs to devDependencies and dropping @xterm/xterm trims the packaged production tree 1366 MB → 1196 MB (~170 MB, 12%), 492 → 312 packages.

Not addressed here

The remaining bulk is @php-wasm (~1 GB: @php-wasm/node 654 MB + @php-wasm/web 406 MB), pulled transitively by @wp-playground/cli. It ships every PHP version (7.2–8.4) in two execution strategies (asyncify + jspi), plus a browser build (@php-wasm/web) that src never imports directly. Cutting it needs a product decision on supported PHP versions/strategies and whether @php-wasm/web is reachable — left as a follow-up.

How to test

electron-store (runtime import()), the main process, preload.js, and the spawned runner scripts were checked — none import the moved libraries. npm run build:once bundles the renderer cleanly with the libs as devDependencies. Confirm the macOS/Windows/Linux builds still produce working apps and that artifact sizes drop by ~170 MB on the Buildkite run.

@mokagio mokagio self-assigned this Jul 3, 2026
The renderer is esbuild-bundled at build time, so React, `@wordpress/*`,
`@emotion/*`, and `xterm` are already inlined into `src/renderer`. Sitting
in `dependencies`, electron-builder also shipped their full `node_modules`
trees inside the app — dead weight the runtime never loads. Move them to
`devDependencies` so packaging drops them, and remove `@xterm/xterm`, which
has no references in `src` (the renderer imports the `xterm` package).

Trims the packaged production tree from 1366 MB to 1196 MB (~170 MB, 12%).
The bulk that remains is `@php-wasm` (PHP-WASM builds under
`@wp-playground/cli`); reducing that needs a call on which PHP versions and
execution strategies to support and is left as a follow-up.

---

Generated with the help of Claude Code, https://claude.ai/code

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mokagio
mokagio changed the base branch from ainfra-2597-fix-macos-code-signing-for-contributor-toolkit to trunk July 10, 2026 11:05
@mokagio
mokagio force-pushed the mokagio/trim-desktop-artifact-deps branch from b6ae55b to 1f8ca57 Compare July 10, 2026 11:05
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