Skip to content

Embedded web UI build ran out of heap on the Intel release runner - #69

Merged
mayoalexander merged 1 commit into
iris/1.18.23from
fix/embed-build-heap
Sep 17, 2026
Merged

mayoalexander merged 1 commit into
iris/1.18.23from
fix/embed-build-heap

Conversation

@mayoalexander

Copy link
Copy Markdown

desktop-v1.18.68 failed twice on macos-15-intel: vite hit JavaScript heap out of memory at ~2017 MB (node default limit) while stringifying sourcemaps. Borderline, not broken: the same commit built on the same runner an hour earlier.

Fix: NODE_OPTIONS=--max-old-space-size=4096 for the embed build, appended to any existing NODE_OPTIONS.

Proven to reach the node child through the exact bun run --cwd … build path using values that differ from the local default (1234→1282 MB, 6000→6048 MB). Full local build.ts --single passes; opencode typecheck clean.

The verifier refused to promote the incomplete release both times (manifest is missing darwin-x86_64); no user saw it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JwiqN8M84qimu1TjZGSsdQ

…lease runner

desktop-v1.18.68 failed twice on macos-15-intel while arm64 and Windows passed:

  vite build (the web UI embedded into the sidecar)
  FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
  ~2017 MB, inside JsonStringify (sourcemap output)

The build runs vite under node, which defaults to a ~2 GB old-space limit there.
It was BORDERLINE, not broken: the identical commit built fine on the same runner
an hour earlier, and the three previous Intel builds all passed. That is the
worst kind of release failure — it fires at random, and only after the other
platforms have built. (Attempt 1's "Unable to connect" was a separate network
blip, which is why the first read of it as transient looked right.)

The verifier did its job both times: publish went ahead without the x64 assets,
and verify-and-promote refused with "manifest is missing darwin-x86_64", so no
user was ever offered an incomplete release.

Fix: NODE_OPTIONS=--max-old-space-size=4096 for that build, appended to any
NODE_OPTIONS already set. Proven to reach the node child through the exact
bun-shell + `bun run --cwd … build` path by asking for a value that differs from
this machine's default (1234 -> 1282, 6000 -> 6048); a probe using 4096 on a Mac
whose default is already ~4.2 GB would have passed without proving anything.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JwiqN8M84qimu1TjZGSsdQ
@mayoalexander
mayoalexander merged commit a855864 into iris/1.18.23 Sep 17, 2026
1 of 6 checks passed
@mayoalexander
mayoalexander deleted the fix/embed-build-heap branch September 17, 2026 05:57
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