Angular's glow up

Issue #397.June 3, 2025.2 Minute read.
Bytes

Today’s issue: Vite takes a stand, how to hack a credit card terminal, and things that taste like JavaScript.

Welcome to #397.


Eyeballs logo

The Main Thing

Judge Greg Mathis pretending to smoke weed from his gavel

The LLM when I tell it to upgrade my app from Angular.js to Angular 20

Angular’s glow up

You know that annoying feeling when your plastic surgeon refuses to let you schedule any more cosmetic procedures, because they’re concerned that you’ve become “borderline unrecognizable” to your friends and family?

We’ve all been there – and so has Angular.

But even though the framework looks a lot different than it did a couple years ago, most developers are pretty happy with the transformation, which includes new-and-improved approaches to SSR, hydration, and reactivity. And with last week’s Angular v20 release, it’s safe to say that the ng-vibes have never been higher.

This release is less about flashy new features and more about adding some polish to the new stuff they’ve previously shipped – improving the DX, stabilizing APIs, and getting everything ready for prime time. Let’s take a closer look:

  • Signals get extra stable – Angular’s Signals-powered reactivity model promoted effect, linkedSignal, and toSignal to stable, which should improve performance and DX even more. They also introduced a new experimental httpResource API for making reactive HTTP requests the Angular way.

  • Modern SSR gains – Incremental hydration and route-level rendering modes are now stable, bringing noticeable improvement gains and finally making Angular feel like a real option for modern SSR.

  • DX polish – Angular-specific insights now show up directly in Chrome DevTools, host bindings get proper type checking, and template literals finally just work without needing any weird hacks.

Bottom Line: Angular’s glow up isn’t just some cheap hair plugs, botox, and lip filler from that online “lab” in Turkey – it’s a multi-year architectural rework that’s already producing some real performance wins in the wild.


datadog logo

Our Friends
(With Benefits)

The Hulk with Steve Buscemi's face looking concerned

You mean we're supposed to be testing the code that Copilot writes too?

Learn how the best software teams monitor their front ends

Front-end codebases are getting more complex than ever, and chances are, your team’s monitoring situation hasn’t kept up.

That’s why Datadog created their Front-end Developer Kit – a free collection of resources that’ll help you better understand user activity and catch front-end issues early.

It gives you instant access to:

  • A Best Practices Guide that details key strategies for monitoring and testing used by top front-end teams

  • A Solution Brief with a step-by-step walkthrough for proactively catching and resolving issues

  • An on-demand livestream on how to optimize front-end applications

Get it for free – and protect your frontend before it’s too late.


Spot the Bug logo

Spot the Bug

Sponsored by Apryse

Their PDF Redaction SDK lets you enable users to securely delete sensitive data from PDFs, images, documents, and more.

function Animal (name, energy) {
  let animal = {}
  animal.name = name
  animal.energy = energy

  return animal
}

Animal.prototype.eat = function (amount) {
  console.log(`${this.name} is eating.`)
  this.energy += amount
}

const leo = Animal('Leo', 7)
leo.eat(5)

Cool Bits logo

Cool Bits

  1. Vite v7.0 beta is out, and it drops support for Node 18 so that Vite is now distributed as ESM only. Because sometimes you have to be the change you wish to see in the world.

  2. Jim Nielsen wrote an article called Is it JavaScript? But you’ll have to take a bite to be 100% sure.

  3. Gleam v1.11 makes Gleam compiled to JavaScript 30% faster – which I’m guessing hits really hard if you know what Gleam is.

  4. A team of Sentry engineers are hosting this Full-stack Performance and Debugging Workshop on June 10th – it’s a 90-minute, hands-on walkthrough that’ll show how to use tracing to actually understand what your code is doing across backend, frontend, and mobile. [sponsored]

  5. Dan Abramov wrote about Progressive JSON, and why it’s significantly more fair and equitable than flat JSON or regressive JSON.

  6. Vitest 3.2 comes with a new Annotations API, Scoped Fixtures, and better TypeScript support.

  7. NexFaster is a minimal template that integrates React Router within Next.js to produce world peace intuitive, Type-safe client-side routing. It’s 2025 – anything goes.

  8. Matt Palmer wrote about how it’s very easy to hack vibe-coded apps.

  9. Stefan Gloor wrote about how he accidentally-on-purpose got access to the root shell of a credit card terminal. And now we’re all flagged in a Palantir database somewhere.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by Apryse

Our call to leo.eat is going to fail. The reason for this is because the object returned from Animal isn’t delegating to Animal.prototype so leo.eat will be undefined.

To fix this, we can use Object.create or a combination of the this keyword with new.

function Animal (name, energy) {
  let animal = Object.create(Animal.prototype)
  animal.name = name
  animal.energy = energy

  return animal
}

// or

function Animal (name, energy) {
  this.name = name
  this.energy = energy
}

const leo = new Animal('Leo', 7)

You’ll never stop me from spreading the great this keyword.