Cloudflare buys Astro

Issue #455.January 17, 2026.2 Minute read.
Bytes

Today’s issue: An API for fixing Nic Cage’s financial woes, macOS Tahoe struggles, and Daddy Sundar takes things to the next level.

Welcome to #455.


Eyeballs logo

The Main Thing

Old people playing slots at a casino

The guys who invested in all those OSS frameworks in 2021

Cloudflare buys Astro

Just like we predicted they would… almost.

Technically, our prediction was that Netlify would acquire Astro, but if you squint, we basically nailed it.

But why is this marriage happening at all? Good question, especially since Astro will stay open source and promises to continue supporting “a wide set of deployment targets” (not just Cloudflare).

From Astro’s perspective, the decision matrix seems pretty simple: “We needed money. Cloudflare has lots of money.”

In his announcement post, Fred Schott talked about how he and the Astro team had tried to launch various paid features over the years, but they all “fell flat and rarely justified their own existence.” So Astro was running out of time and options supporting their work on the framework.

That’s when Cloudflare came in and offered a lifeline, with job offers for the whole Astro team and ongoing financial support for open-source contributors.

Cloudflare’s motivations are a little more interesting here, since they seem to have no plans for directly monetizing Astro. They say that it boils down to the fact that Astro will enable them to pursue their mission of “helping build a better internet,” (aww) by “helping build a faster internet.”

But they also get a great team of engineers and a lot of love and clout in the developer community. And when you have a market cap of $65 billion, you can afford to do vibes-based acqui-hires like this (just ask Shopify and Remix).

Bottom Line: I just hope Fred was savvy enough to tell Dane Knect that Guillermo offered him $100 million.


Sentry logo

Our Friends
(With Benefits)

Mario as a clown

When my AI code reviewer can't fix all my AI slop code

Building a code review system that uses prod data to predict bugs

Most AI code review tools feel like a glorified linter – but this deep dive from Sentry explains how their AI Code Review actually works under the hood to find real bugs.

What’s different here:

  • Prod-aware reviews combine your code changes with real Sentry error data, so suggestions are based on how your app actually fails in production.

  • Multi-agent verification filters out weak hypotheses, false positives, and unhelpful style tips.

  • Built for real PRs with file filtering, repo-specific memory, and bug confidence scoring, so that reviews stay useful even on large changes.

Check out the article to see how they built it.


Spot the Bug logo

Spot the Bug

Sponsored by Auth0

It provides a simple and secure way to connect AI agents to external apps and require human approval for sensitive actions. Free for up to 25k free monthly active users.

const user = {
  name: 'Tyler',
  age: 32,
  greet() {
    alert(`Hello, my name is ${this.name}`)
  },
  mother: {
    name: 'Jan',
    greet() {
      alert(`Hello, my name is ${this.mother.name}`)
    }
  }
}

user.mother.greet()

Cool Bits logo

Cool Bits

  1. Norbert Heger wrote about the struggle of resizing windows on macOS Tahoe. God gives his toughest battles to his strongest soldiers.

  2. Chrome 144 just shipped with a new <geolocation> HTML element that changes how sites request user location data. Anything that makes it easier for Daddy Sundar to know my exact coordinates at all times.

  3. Trigger.dev is an open-source platform for building AI agents and workflows in TypeScript (13.3k GitHub stars). It handles long-running tasks with automatic retries, tool calling, queues, observability, and elastic scaling so you don’t need to build (and rebuild) it all yourself. [sponsored]

  4. Jen Simmons and Brandon Stewart broke down how new Safari developer tools provide insight into CSS Grid Lanes.

  5. Raymond Chen wrote about swapping two blocks of memory that reside inside a larger block. Then I put that block inside of another block, then I mail that block to myself…

  6. Macroscope catches more bugs than any other AI code reviewer, according to a code review benchmark of production bugs in OSS repos. Try it out for free to see the difference. [sponsored]

  7. Oxfmt announced support for Tailwind CSS class sorting in all major editors.

  8. In the wake of 2025’s Shai-Hulud attacks, ESLint creator Nicholas C. Zakas gave his advice on how GitHub could secure npm.

  9. GitLab Transcend is a free virtual event happening on Feb 10th, where engineering leaders will share real-life stories of how their teams are using agentic AI to improve DevOps, security, and software delivery. [sponsored]

  10. Nuxt a11y is a new Nuxt module that offers real-time accessibility feedback and actionable insights to fix all of your WCAG transgressions.

  11. Antoine Boulanger identified some anti-patterns in early-stage engineering teams.

  12. stfu is a tiny app that plays back the audio it hears, delayed by 2 seconds. A revolutionary new way to shame people watching videos at full volume in public without headphones.

  13. Abdul Rahman Sibahi broke down his unbearable frustration of figuring out APIs. It’s a lot like The Unbearable Weight of Massive Talent, except by reading this blog post you won’t be helping Nic Cage get out of debt.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by Auth0

When we invoke user.mother.greet, we can tell what the this keyword is referencing by looking to the “left of the dot” of the invocation – in this case, mother.

So inside of greet, it’s as if we had my name is ${mother.mother.name}, which is clearly wrong. Instead, since the this keyword is referencing mother, we can just do this.name.

const user = {
  name: 'Tyler',
  age: 32,
  greet() {
    alert(`Hello, my name is ${this.name}`)
  },
  mother: {
    name: 'Jan',
    greet() {
      alert(`Hello, my name is ${this.name}`)
    }
  }
}

user.mother.greet()