
Today’s issue: Everything our components know about us, fulfilling the TanStack prophecies, and the least bad outcome for AI.
Welcome to #438.


Angular devs seeing modern file-based routing for the first time
AnalogJS launched v2.0 of its fullstack Angular meta-framework on Monday, and I ate 47 fun-sized bags of Nerds Clusters that we had left over from Halloween – so it was a productive day for both of us.
This release didn’t come with a ton of huge new features, but it does lay some important groundwork with stuff like new content resources, bundle size optimizations, and much better support for various Vite ecosystem tools.
But this major version bump got us thinking about a bigger question: Why do we need Analog at all?
Unlike React and Vue, Angular already comes with its own built-in approach to SSR, routing, and other metaframework-y features. Shouldn’t this mean we don’t need a Next.js for Angular in the first place?
Not exactly. Because it turns out there’s still a big difference between features that Angular technically supports, and features that developers actually enjoy using in 2025.
That’s why Analog stepped in to provide a more modern approach to building full-stack apps, which even the crustiest Angular developer should appreciate:
File-based routing – Replaces those giant app-routing.module.ts files with an intuitive folder-based system that supports layouts, group routes, dynamic routes, static routes, and pathless routes in a way that feels Next-y.
Vite ecosystem – Angular already uses Vite and esbuild under the hood, but Analog gives you full access to Vite’s plugin system, faster reloads, native ESM, and built-in testing with Vitest.
Modern rendering – Unifies SSR, SSG, and islands-style hydration into one cohesive setup with a lot less boilerplate.
Bottom Line: As Angular keeps modernizing, there’s a chance Analog becomes less necessary over time – but for now, there’s still more than enough Angular clunkiness to keep Analog busy for a while.


When your app's AI agent exposes user creds for the third time this week
One of the biggest problems facing the AI ecosystem today is security.
That’s why Auth0 for AI Agents created a complete auth solution that lets you build trustworthy, secure agents with just a few lines of code.
Its Token Vault feature makes it easy to build agents that can call external APIs on behalf of users, without exposing user credentials or juggling refresh tokens.
Instead, it automatically handles authorization requests and securely stores those tokens for you, so your users only need to approve access once. It’s perfect for building secure AI agents that can do things like build a Spotify playlist or create a pull request in GitHub.
Try it out for free today – and start building AI agents you can actually trust.

They wrote about how their new AI Code Review tool has already caught more than 30,000 bugs, and how they’ve improved its latency by 50% since launch.
const fetchPokemon = async (id) => {
const response = await fetch(`https://pokeapi.co/api/v2/pokemon/${id}`);
if (!response.ok) {
throw new Error(`Network response was not ok: ${response.statusText}`);
}
const data = await response.json();
return data;
};
const getStarterPokemon = () => {
const ids = [1, 2, 3]
const pokemon = [];
ids.forEach(async (id) => {
const result = await fetchPokemon(id);
pokemon.push(result);
});
return pokemon
}
getStarterPokemon()

AI has led to TypeScript becoming the most used language on GitHub. Of all the things AI could lead to, this one is by far one of the least bad.
CodeRabbit can cut your code review time in half, while catching more bugs than the most annoying senior engineer on your team. It’s the #1 most installed AI app on GitHub for a reason. [sponsored]
SveltePlot (alpha) is a Svelte-native visualization framework that combines the concepts behind Observable Plot with Svelte’s reactivity.
Adam Argyle wrote this list of everything that components know about us, and I for one was surprised how easily it could tell I was an INFJ.
Ryan Skinner shared how Rari v0.3.0 has way faster component rendering than Next.js while maintaining the same DX.
ArkRegex is a type-safe, drop-in wrapper of new RegExp(). It offers type-level feedback with no plugins or build steps required.
CarbonQA provides high-quality QA services for dev teams, so you’ll never have to waste time testing your own app again. Their US-based testers work in your tools, talk with your team on Slack, and let your devs spend their time building real features. [sponsored]
TanStack Start + shadcn/ui is now just one command, as the prophecy foretold.
The DevTools team released Chrome 142, rolling out AI code suggestions, enhancements for the DevTools MCP server and the ability to debug full performance traces with Gemini.
9 Developer Enablement Practices to Achieve DevOps at Enterprise Scale is a free ebook that shares actionable strategies for scaling DevOps teams without sacrificing quality. [sponsored]
Ahmad Alfy wrote about how your URL is your state.
Turborepo 2.6 comes with vertical microfrontends and stable support for Bun package manager. “Vertical microfrontend” sounds like the name of a Tech-Deck trick I used to win gold in my middle school’s table top X Games. I still wear that medal everywhere I go.
await-ing inside of a forEach will only end in pain. There are a few different ways to fix this, but here’s one using a for of loop.
const fetchPokemon = async (id) => {
const response = await fetch(`https://pokeapi.co/api/v2/pokemon/${id}`);
if (!response.ok) {
throw new Error(`Network response was not ok: ${response.statusText}`);
}
const data = await response.json();
return data;
};
const getStarterPokemon = async () => {
const ids = [1, 2, 3]
const pokemon = [];
for (const id of ids) {
const result = await fetchPokemon(id);
pokemon.push(result);
};
return pokemon
}
await getStarterPokemon()