Repository navigation
ci(lint): give the ESLint pass an explicit 4 GB heap - #8092
Conversation
The full lint pass needs about 1.9 GB of heap on main, almost all of it in the type-aware pass over packages/core/src, and Node's default limit on the 8 GB lint runner is about 2 GB. Pull requests that add a few percent of source intermittently run it out of memory (exit 134). A 4 GB limit keeps the pass under half the runner's RAM (3.3 GB peak RSS measured) and spends less time in garbage collection.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
There was a problem hiding this comment.
Recommended for approval: the 4 GB heap cap on the Run ESLint step keeps the required lint job, its routing and its findings unchanged, and this pull request's own lint run passed on the 2-core runner with the cap in place. The heap and memory figures in the new workflow comment hold up, so no changes are needed.
[Automated review]
PR Analysis Report📚 Storybook Preview🧪 Sandbox PreviewNo new or modified components detected. Bundle Size SummaryNo component packages changed. Accessibility AuditStatus: No accessibility violations detected. Visual Regression46 of 494 shot(s) changed. A change here is a question, not a failure: check whether the after is the
and 26 more. Generated by PR Enrichment workflow | Storybook | Sandbox | View full report |
Maintainer impact
The
lintjob intermittently dies with "JavaScript heap out of memory" (exit 134) inpnpm lint. Pull requests that add core source hit it (#8045, #8055, #8059, #8060, #8067), and a re-push can pass. Main runs at about 92% of the runner's default heap, so any growing pull request will start tripping it.Intended invariant
No product, rule or lint-result change; only the
Run ESLintstep's Node heap limit is raised.Change
.github/workflows/lint.yml, stepRun ESLint:NODE_OPTIONS: '--max-old-space-size=4096', with a comment.2-core-ubuntu-armhas 8 GB of RAM (GitHub's larger-runner reference), and Node's default heap limit there is about 2 GB. The OOM log's last full collection held 1917 MB of 2006 MB committed.Evidence
Full
eslint . --cachefrom a fresh cache, Node 24,--trace-gc; peak heap is the largest heap at a full collection.Where it goes, on main at 2048 MB:
packages/core/srcalone peaks at 1869 MB; the rest of the repository at 1176 MB.src).Follow-ups for maintainers, not part of this change:
Scope
Testing
node --max-old-space-size=<N> --trace-gc node_modules/eslint/bin/eslint.js . --cacheafterrm -rf .eslintcache node_modules/.cache, on main e769940, chore(core): useAnimator and the animator's browser proofs on the interaction harness #8067 at 978d630 and feat(core): pan gesture recognizer with UIKit's hysteresis and velocity #8060 at 90d1deb; peak RSS from/usr/bin/time -v.pnpm exec vitest run .github/scripts/ci-tooling-routing.test.mjs .github/scripts/spec-owner-workflow.test.mjs .github/scripts/release-publish-workflow.test.mjs .github/scripts/ci-test-routing.test.mjs: 55 passed.pnpm check:repo(pre-commit).