Luke Oliff.

Node 26.8 Put Syntax Highlighting in the REPL

·JavaScript·2 min read·Luke Oliff
TL;DR

Node.js 26.8.0, released 26 August 2026, brings syntax highlighting to the REPL. Start node, type, and keywords, strings and numbers colour in real time. It also lands GCM-SIV crypto and new zlib zip helpers.

Node.js 26.8.0 landed on 26 August 2026, and the change I noticed first wasn’t in the changelog headline. It’s node repl highlighting: the interactive prompt now colours your code as you type. Keywords, strings, numbers, all of it, live.

Small thing. I’ve wanted it for years.

If you live in the REPL to poke at an API response or sanity-check a regex, you know the old experience. Everything was one flat colour, and a missing bracket or a typo’d const looked exactly like valid code until you hit enter and got a SyntaxError. Now the mistake shows up while you’re still typing it.

Turning it on

There’s nothing to turn on. Start a session and it just works.

node
> const files = ['a.txt', 'b.txt'].map(f => f.toUpperCase())

Type that and const reads as a keyword, the strings sit in their own colour, and the arrow function stops blending into the noise. It only touches the interactive REPL, so running node script.js is unchanged. Your program’s output is your program’s output.

One caveat worth saying out loud: this is on the Current line, not LTS. If your daily driver is 24.x Krypton you don’t have it yet, and I wouldn’t move a production runtime to Current just for prettier prompts. This is a “nice on my laptop” upgrade, not a “bump the Dockerfile” one.

The parts that actually matter for prod

While the REPL colour is the fun bit, 26.8.0 shipped two things that matter more once you’re past the prompt.

The crypto module gained AES-GCM-SIV. It’s a nonce-misuse-resistant mode, which in plain terms means reusing a nonce degrades gracefully instead of catastrophically leaking your key stream the way plain GCM does. If you’ve ever lost sleep over nonce management in an encrypt-heavy service, this is the mode you reach for.

There’s also new zlib support for reading zip archives directly, with ZipEntry and ZipFile, so unpacking a zip no longer means pulling a dependency for something the runtime can now do itself. I’ve shipped unzipper and adm-zip into projects for exactly this. One less line in package.json is one less thing to audit.

None of this is headline-grabbing. That’s rather the point. The releases that quietly improve the day are the ones I end up relying on, and a REPL that catches my typos before I do is going straight into muscle memory.