Bytes

Today’s issue: Your annual physical with the React doctor, a wellness check for Angular, and the shopping cart animation of your dreams.

Welcome to #493.


Eyeballs logo

The Main Thing

Kid eating popcorn with a Thanos mask on

Watching VC-backed open source reach the endgame

The VC-backed Open Source Endgame

Cloudflare announced that they are acquiring VoidZero (the company behind Vite, Vitest, OXC, and Rolldown), and normally this is where we like to insert ourselves as the main character and talk about how we called it in our annual predictions issue, but this one got me.

In hindsight we probably should have seen this coming when they announced Void, their hosting platform, a few months back. A hosting platform that was built on top of… you guessed it… Cloudflare. But as suspicious as this was, we thought they were opening door #2 in the classic “sell your company to (insert your favorite late stage tech co) or build a hosting product” decision tree for how to actually make money. By choosing door #1, it effectively ends the debate on how open source gets funded.

The bigger picture:

We’ve been doing this newsletter long enough to see the VC-backed open source reach the endgame. Here is a quick list of companies we’ve written about:

  • Rome Tools: Company died.
  • Turborepo: Acquired by Vercel.
  • Gatsby: Acquired by Netlify.
  • Remix: Acquired by Shopify.
  • Nuxt: Acquired by Vercel.
  • Bun: Acquired by Anthropic.
  • Astro: Acquired by Cloudflare.
  • Drizzle: Acquired by PlanetScale.
  • VoidZero: Acquired by Cloudflare.

With two exceptions, Deno & TanStack (who notably never took VC money), all of these companies chose door #1. And now that almost all of the companies participating in this experiment have exited, it does raise the question: where do things go from here?

Where things go from here:

It seems like most open source projects moving forward will fit into 3 categories: personal projects from tech billionaires (Mitchell Hashimoto, Evan Wallace), small indie projects for specific niches, and platform sponsored open source that funnels users towards their paid products.

Bottom Line: The framework wars are now the platform wars. And as much as I enjoy Dane and Guillermo’s sexual tension Twitter spats, I am a little nostalgic for the good ol’ days when we were sippin’ on Soylent, arguing tabs vs spaces, and fighting for our lives trying to figure out how to configure Webpack.


Sentry logo

Our Friends
(With Benefits)

A person using telepathy

When you finally connect your OTel logs to Sentry

Sentry + OpenTelemetry Working Together

If your backend already uses OpenTelemetry, you can send traces and logs to Sentry by changing a few environment variables. No SDK swap, no instrumentation rewrite.

Here’s how:

  1. Point your OTLP exporter at Sentry’s endpoint
  2. Add the Sentry SDK on the frontend for browser context
  3. Get a single stack trace from click to backend.

Learn more about how to integrate Sentry with OpenTelemetry by reading their latest blog post.


Spot the Bug logo

Spot the Bug

Spot the Bug - Presented by Clerk

The Clerk CLI lets you add auth to your app in 3 simple commands without ever leaving the terminal or copy/pasting API keys.

const petName = "Leo";
const placeholder = "{NAME}";
const reminderTemplate = "{NAME} is due for another visit. Please call us so we can set up a new appointment. We look forward to seeing you and {NAME} soon.";

const reminder = reminderTemplate.replace(placeholder, petName);

Cool Bits logo

Cool Bits

  1. Aiden Bai, our resident React doctor, wrote about the problem with useEffect. Unfortunately, you’re going to have to “turn and cough” to get to the solution.

  2. Angular released version 22 this week, which is good news because we were about to have the police do a wellness check.

  3. Patrick Dawkins from Upsun wrote an article on how to actually sandbox your AI agent, and how to verify it worked. [sponsored]

  4. The OXC team is working on integrating the Rust port of the React compiler.

  5. Anthropic wrote a post about Claude’s recursive self-improvement and how the world is not ready. It’s a real pick-me-up if you’re having a bad day.

  6. Sankalpa Acharya wrote about how React Server Components integrate with a bundler.

  7. Only idiots write manual tests – modern engineering teams like Notion, Dropbox and LaunchDarkly use Meticulous to maintain e2e UI tests that cover every edge case of your web app. [sponsored]

  8. Benjamin Leonard from Oxide made a tool that generates ASCII art from your brand assets.

  9. Motion just added a new arc utility that lets you do that fancy add to cart animation you’ve been dreaming of doing since you were a kid.

  10. The call for papers is now open for Agent Conf, Europe’s first major conference for AI engineers taking place in Warsaw, Poland on Sept. 17-18. They’re looking for original talks from people building with AI agents about agent design patterns, experimental approaches, orchestration, multi-agent systems, and production lessons. Submit here. [sponsored]

  11. Pilcrow wrote “The Auth book” which includes chapters on sessions, passkeys, and CSRF prevention. It’s basically Memoirs of a Geisha for people who love RSA signature schemes.

  12. Christoph Nakazawa wrote about modern engineering values in the age of LLMs. The top one is “secure the bag” (congrats on the acquisition buddy).


Spot the Bug logo

Spot the Bug: Solution

Presented by Clerk

const petName = "Leo";
const placeholder = "{NAME}";
const reminderTemplate = "{NAME} is due for another visit. Please call us so we can set up a new appointment. We look forward to seeing you and {NAME} soon.";

const reminder = reminderTemplate.replace(placeholder, petName);

String.prototype.replace only replaces the first occurrence found in the string. If there could be more than one occurrence, use String.prototype.replaceAll.

const petName = "Leo";
const placeholder = "{NAME}";
const reminderTemplate = "{NAME} is due for another visit. Please call us so we can set up a new appointment. We look forward to seeing you and {NAME} soon.";

const reminder = reminderTemplate.replaceAll(placeholder, petName);
Bytes
Want us to say nice things
about your company?

Built with ❤️ by Fireship

50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101

Unsubscribe