<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta" -->

---
title: Node.js 27 alpha: V8 15.6, new heap defaults and a new...
description: Node.js 27's first alpha (27.0.0-alpha.0.0.0) upgrades V8 from 14.6 to 15.6, bringing new language features and breaking behavior changes. Array sort now uses...
canonical: https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Node.js 27 alpha: V8 15.6, new heap defaults and a new serialization format | daily.dev
og:description: Node.js 27's first alpha (27.0.0-alpha.0.0.0) upgrades V8 from 14.6 to 15.6, bringing new language features and breaking behavior changes. Array sort now uses...
og:url: https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta
og:image: https://api.daily.dev/og/posts/4c6mopGTa.png
og:image:alt: Node.js 27 alpha: V8 15.6, new heap defaults and a new serialization format
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Node.js 27 alpha: V8 15.6, new heap defaults and a new serialization format

**[Collections](https://daily.dev/sources/collections)** · 2 min read · 0 upvotes · 0 comments

## Summary

Node.js 27's first alpha (27.0.0-alpha.0.0.0) upgrades V8 from 14.6 to 15.6, bringing new language features and breaking behavior changes. Array sort now uses PowerSort instead of TimSort, and seeded Math.random() output changes because it runs xorshift128+ directly. When max-old-space-size isn't set, the default heap limit becomes half of physical memory, clamped between 256 MB and 4 GB, so an 8 GB machine's old-generation limit rises from 2 GB to 4 GB and worst-case GC pauses drop from about 45 ms to 10 ms. v8.serialize(), structuredClone() and postMessage() move to a new format older Node versions can't read. OpenSSL 3 or later is now required and default keepAliveTimeout rises to 65 seconds.

## Content

The first Node.js 27 alpha (27.0.0-alpha.0.0.0) is out, and the headline change is the engine. V8 moves from 14.6 in Node.js 26 to 15.6, and with it come new language features and a few behavior changes that can break existing code.

## New language features

Several features are now on by default:

- `Math.sumPrecise()`
- `Iterator.prototype.join()` and `Iterator.zip()`
- `Intl.Locale.prototype.variants`

## Behavior changes from V8

`Array.prototype.sort()` now uses PowerSort instead of TimSort. `Math.random()` runs xorshift128+ directly, so the sequence you get for a given `--random-seed` changes. If you have tests that pin seeded output, expect them to break. asm.js also no longer compiles to WebAssembly.

## Memory

When `--max-old-space-size` isn't set, the default heap limit is now half of physical memory, clamped between 256 MB and 4 GB. On an 8 GB machine that means the old-generation limit goes from 2 GB to 4 GB. Buffer and ArrayBuffer memory now counts toward that limit. Worst-case GC pauses drop from about 45 ms to 10 ms.

## Serialization

`v8.serialize()`, `structuredClone()` and `postMessage()` switch to a new format that older Node.js releases can't read. This is the one I'd watch most closely: if you pass serialized data between processes or services running different Node versions, upgrade them together or you'll hit failures that are hard to trace.

## Other semver-major changes

The alpha bundles dozens of SEMVER-MAJOR changes. Notable ones:

- OpenSSL 3 or later is required.
- The FIPS provider build is removed.
- The default HTTP `keepAliveTimeout` rises to 65 seconds.

The Node.js blog has a separate write-up of the V8 changes between 26 and 27 for anyone who wants the full list.

## Elsewhere in the ecosystem

Node Weekly's issue #646 covered the alpha alongside a few other items. One engineer described running a proxy in front of npm for his company that refuses releases under seven days old. A registry-by-registry survey compares signing, provenance attestations and trusted publishing across npm, PyPI, RubyGems, crates.io, Go and others. Parcel 3's alpha rewrites its bundler core in Rust, with claims of up to 100x faster builds on large monorepos. Nitro v3 reached release candidate with a frozen API and Vitest-based route testing.

## Questions this post answers

### Will upgrading to Node.js 27 break my serialized data compatibility with older Node versions?

Yes. Node.js 27's v8.serialize(), structuredClone() and postMessage() switch to a new serialization format that older Node.js releases cannot read. If you pass serialized data between processes or services running different Node versions, you need to upgrade them together, otherwise you'll hit failures that are hard to trace.

_Track breaking serialization changes like this on daily.dev before rolling out a Node upgrade across services._

### Why did my Math.random() seeded test output change after upgrading Node.js?

Node.js 27 upgrades V8 from 14.6 to 15.6, and Math.random() now runs xorshift128+ directly instead of the previous algorithm, changing the sequence produced for a given --random-seed value. Tests that pin seeded output will break after this upgrade and need their expected values updated.

_Developers chasing down flaky seeded tests after a V8 bump can follow changes like this on daily.dev._

### What is the default heap size limit in Node.js 27 when max-old-space-size is not set?

When --max-old-space-size isn't set, Node.js 27 defaults the heap limit to half of physical memory, clamped between 256 MB and 4 GB. On an 8 GB machine this raises the old-generation limit from 2 GB to 4 GB, and worst-case GC pauses drop from about 45 ms to 10 ms, with Buffer and ArrayBuffer memory now counting toward that limit.

_Teams tuning memory limits before a Node upgrade can keep up with changes like this on daily.dev._

## Similar posts on daily.dev

- [Node.js — Node.js 24.15.0 \(LTS\)](https://daily.dev/posts/node-js-node-js-24-15-0-lts--nsrp0vl5j) · Node.js · 107 upvotes · 3 comments
- [Node.js 26: Temporal API Enabled by Default, V8 14.6, and a Round of Deprecations](https://daily.dev/posts/node-js-26-temporal-api-enabled-by-default-v8-14-6-and-a-round-of-deprecations-8f8xftnj7) · InfoQ · 5 upvotes · 0 comments
- [Node.js — Node.js 26.3.0 \(Current\)](https://daily.dev/posts/node-js-node-js-26-3-0-current--xfdfokfje) · Node.js · 20 upvotes · 1 comments
- [Node.js — Node.js 26.0.0 \(Current\)](https://daily.dev/posts/node-js-node-js-26-0-0-current--xsccfs0nf) · Node.js · 98 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#nodejs](https://daily.dev/tags/nodejs), [#v8](https://daily.dev/tags/v8)

[View this post on daily.dev](https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Node.js 27 alpha: V8 15.6, new heap defaults and a new serialization format","url":"https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta"},"datePublished":"2026-11-05T14:47:44.771Z","dateModified":"2026-11-05T14:48:25.824Z","description":"Node.js 27's first alpha (27.0.0-alpha.0.0.0) upgrades V8 from 14.6 to 15.6, bringing new language features and breaking behavior changes. Array sort now uses...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/76f99639ef5cf3cd2c4f8a58bee30ed1?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/76f99639ef5cf3cd2c4f8a58bee30ed1?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,nodejs,v8","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"Node.js 27 alpha: V8 15.6, new heap defaults and a new serialization format"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/node-js-27-alpha-v8-15-6-new-heap-defaults-and-a-new-serialization-format-4c6mopgta#faq","mainEntity":[{"@type":"Question","name":"Will upgrading to Node.js 27 break my serialized data compatibility with older Node versions?","acceptedAnswer":{"@type":"Answer","text":"Yes. Node.js 27's v8.serialize(), structuredClone() and postMessage() switch to a new serialization format that older Node.js releases cannot read. If you pass serialized data between processes or services running different Node versions, you need to upgrade them together, otherwise you'll hit failures that are hard to trace. Track breaking serialization changes like this on daily.dev before rolling out a Node upgrade across services."}},{"@type":"Question","name":"Why did my Math.random() seeded test output change after upgrading Node.js?","acceptedAnswer":{"@type":"Answer","text":"Node.js 27 upgrades V8 from 14.6 to 15.6, and Math.random() now runs xorshift128+ directly instead of the previous algorithm, changing the sequence produced for a given --random-seed value. Tests that pin seeded output will break after this upgrade and need their expected values updated. Developers chasing down flaky seeded tests after a V8 bump can follow changes like this on daily.dev."}},{"@type":"Question","name":"What is the default heap size limit in Node.js 27 when max-old-space-size is not set?","acceptedAnswer":{"@type":"Answer","text":"When --max-old-space-size isn't set, Node.js 27 defaults the heap limit to half of physical memory, clamped between 256 MB and 4 GB. On an 8 GB machine this raises the old-generation limit from 2 GB to 4 GB, and worst-case GC pauses drop from about 45 ms to 10 ms, with Buffer and ArrayBuffer memory now counting toward that limit. Teams tuning memory limits before a Node upgrade can keep up with changes like this on daily.dev."}}]}
```

