A large Next build can exhaust the V8 heap, especially on small CI containers with tight memory limits. The process aborts mid-compile with an OOM. Faster, larger managed runners (Latchkey) give the build the headroom it needs and auto-retry transient OOM-killed jobs.
What this error means
The build dies with FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory, often partway through compilation.
node
<--- Last few GCs --->
[1:0x...] FATAL ERROR: Reached heap limit Allocation failed -
JavaScript heap out of memory
1: 0x... node::Abort()
Common causes
Heap limit too low for the app
The default Node heap is smaller than the build needs for a large dependency graph.
Undersized runner
A small CI container caps total memory; the OS OOM-killer reaps the build before it finishes.
How to fix it
Raise the Node heap
Increase the max old space size for the build process.
Terminal
NODE_OPTIONS=--max-old-space-size=4096 npm run build
Build on a larger runner
Run next build on a runner with more memory so the build is not OOM-killed.
CI config
# choose a higher-memory runner for the build job
How to prevent it
Right-size the build runner to the app and cap the heap accordingly.
Watch peak build memory so growth does not silently approach the limit.
Frequently asked questions
What causes "next build OOM"?
The default Node heap is smaller than the build needs for a large dependency graph.