Our 2025 Predictions

Issue #356.January 3, 2025.2 Minute read.
Bytes

Happy New Year, ya filthy animals.

Today’s issue: We’ve got lots of ultimately false predictions for you, the bad parts of React Query, and how LLMs helped my grandpa get his first job.

Welcome to #356.


Eyeballs logo

The Main Thing

Luigi floating in the sky

When I ask my inner eye to show me the future of web dev

Our 2025 Predictions

  1. SPAs will make a comeback. More and more front-end developers are getting fed up with the complexity of SSR-first frameworks – and I’m not just referring to the hardos on Hacker News. 2025 will see a significant number of these folks flock to tools with great SPA support, like Vite, SolidJS, and TanStack Router and Query. Which brings me to my next point…

  2. 2025 will be the year of the Singularity TanStack. TanStack Router downloads were up 15x last year and keep climbing, TanStack Query continues to be the go-to library for async state management, and TanStack Start should release a stable version of its React meta-framework that’ll be loved by jaded Next.js developers.

  3. We all get sick of paying for Serverless and realize that containers give us everything we want at a discounted price.

  4. React Router will bring RSC to the masses. The new “framework mode” in RR v7 should provide an easy way for the ~7 million React Router apps to start using server components. And since most developers are intensely lazy efficient, I’m betting that RR v7 will be the main way folks utilize React 19 features this year – unless they’ve refused to upgrade React Router since 2018.

  5. Every VC-backed OSS company will magically become an AI company. There are two big reasons for this: 1) developers are willing to pay *actual money* for AI tools and features, and 2) VCs are more willing to pump tons of cash into hot “AI startups.” Why else do you think Vercel is rebranding itself as an AI company now?

  6. Everyone learns about DOM Components and the prophecy is finally fulfilled.

  7. TypeScript will get even bigger. Instead of re-writing in Rust, we’ll start to see apps being re-written in TypeScript. At the same time, TypeScript will overtake Python for production AI apps.

  8. Netlify will acquire Astro. Yes, it’s now an annual tradition for me to openly speculate about Netlify’s M&A plans, but hear me out. These two companies have already been casually dating since July, when Netlify became Astro’s “official deployment partner.” I’m betting they’ll officially tie the knot in 2025 so that Astro can avoid needing to raise more VC money, and so Netlify can continue to counter-position against Vercel – while adding some high-quality engineering talent. It’s a win-win for all of us, so just trust me on this one @biilmann.

        

Inngest logo

Our Friends
(With Benefits)

Matthew McConaughey saying that this little maneuver is gonna cost us 51 years

When your AI “weekend project” takes longer to spin up than you thought

Inngest’s AgentKit can help you join the AI Agent gold rush

You’ve probably seen developers building powerful AI agents and wondered to yourself, “how can I get in on that sweet cheddar?”

That’s why Inngest built AgentKit – a new library that helps you build AI Agents in TypeScript instead of good ol’ Python 🙏.

It’s built on top of Inngest’s TypeScript and is designed to help you get started quickly and scale seamlessly, with features like:

  • Granular AI traces – with inspectable tokens and LLM inputs/outputs

  • Full control of your Agent behavior – with many different Routing strategies

  • Local-first experience – no account required, so you can get started immediately

Read the docs and check out some examples.


Spot the Bug logo

Spot the Bug

Sponsored by Clerk

Their components and auth helpers are purpose-built for Next.js App Router, so you can hit your 2025 goal of protecting your pages and endpoints without spending 3 months writing middleware.

function decodeBinaryCommands(binaryStrings) {
  const commands = [];

  for (let binStr of binaryStrings) {
    const command = parseInt(binStr, 10);

    switch (command) {
      case 1:
        commands.push("Start");
        break;
      case 2:
        commands.push("Stop");
        break;
      case 3:
        commands.push("Pause");
        break;
      case 4:
        commands.push("Resume");
        break;
      default:
        commands.push("Unknown");
        break;
    }
  }

  return commands;
}

const binaryCommands = ["0001", "0010", "0100", "0011", "1100"];
const decodedCommands = decodeBinaryCommands(binaryCommands);
console.log(decodedCommands);

Cool Bits logo

Cool Bits

  1. Max Woolf wrote an article called, Can LLMs write better code if you keep asking them to “write better code”?. It reminds me of how my Grandpa got his first job by just walking right up to the manager and asking.

  2. Meticulous AI generates and maintains a continuously evolving e2e test suite, with zero effort and zero flakes. The CTO of Courier said that it “eliminated the need to write and maintain frontend tests across my engineering org” – and it’s one of the coolest AI use cases we’ve seen. [sponsored]

  3. Ollie Williams wrote about formatting dates and times with Temporal and the Internationalization API.

  4. Matt Perry, the creator of Motion, added a bunch of vanilla JS examples to examples.motion.dev.

  5. Evan Bacon went on the React Universe podcast to discuss universal React Native apps with DOM & React Server Components. My horoscope told me that the universe would try to teach me something in 2025, so I guess astrology is real after all. Checkmate, haters.

  6. tailwindcss-motion is a new Tailwind plugin that provides a simple syntax to animate any element in your Tailwind project.

  7. Dominik Dorfmeister gave a talk called React Query - the bad parts.

  8. Sentry is hosting a free livestream on How to build testing culture on your team, where two engineering leaders will share some practical strategies for how to get buy-in, how to steadily improve test coverage over time, and how to effectively guilt everyone on your team into writing better tests. (Fine, I made up the last one.) [sponsored]

  9. BennyKok wrote a quick article about how and why his team migrated from Next.js to just React.

  10. Midscene.js is an AI-powered SDK for UI automation and data extraction that can integrate with tools like Playwright and Puppeteer. This will make it easier to scrape the LinkedIn profiles of all your high school bullies to figure out if you make more money than them now – and it’s cheaper than therapy.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by Clerk

If we run this code, we get an output of ['Start', 'Unknown', 'Unknown', 'Unknown', 'Unknown']. This is because the parseInt function has the wrong radix. In this case, we want to use a radix of 2 to convert the binary string to a decimal number.

function decodeBinaryCommands(binaryStrings) {
  const commands = [];

  for (let binStr of binaryStrings) {
    const command = parseInt(binStr, 2);

    switch (command) {
      case 1:
        commands.push("Start");
        break;
      case 2:
        commands.push("Stop");
        break;
      case 3:
        commands.push("Pause");
        break;
      case 4:
        commands.push("Resume");
        break;
      default:
        commands.push("Unknown");
        break;
    }
  }

  return commands;
}

const binaryCommands = ["0001", "0010", "0100", "0011", "1100"];
const decodedCommands = decodeBinaryCommands(binaryCommands);
console.log(decodedCommands);