Today’s issue: The all-powerful beaver stack, confirmation bias on-device, and using JavaScript to make friends with an 80-year-old disgraced nuclear physicist.
Welcome to #389.
Me blindly upgrading Expo because I know they'll never hurt me
If 74.6% of your friends were using Axe body spray and a Zippo lighter to do the “Mr FireHands” trick, would you do it too?
Of course you would.
But what if I told you that 74.6% of Expo 52 projects had already enabled React Native’s New Architecture? Well, you’d probably want to take a closer look at the tradeoffs before making a rash decision like that.
Thankfully, the Expo team knows what’s best for you, and last week’s Expo SDK 53 release makes the New Arch the default. And that’s the kind of peer pressure I can get behind, because not only does the New Arch enable better performance, it’s also the only way to use new RN features like Suspense going forward.
Here are a few other highlights from Expo 53:
Edge-to-edge is now the default for Android projects, so your UI now flows under system bars like Google always wanted. Android build times are also faster thanks to prebuilt Expo modules.
expo-background-task
replaces the legacy background-fetch
module, giving your app a more modern and battery-friendly way to run background work.
The Metro bundler now enables package.json:exports
by default, bringing React Native’s module resolution in line with modern ESM standards. It’s great, but you will need to watch out for dual package hazards if libraries ship both ESM and CommonJS.
Bottom Line: Like my high school guidance counselor, Expo 53 is trying to make it easy for us to do the right thing. Will React Native developers listen? It’s unclear, but you have to respect how hard the Expo crew is trying.
![]() ![]() ![]() ![]() |
Your LLM after hallucinating an entire API that doesn't exist
We all know how powerful LLMs are – and how often they can hallucinate. And when you’re using them to power AI agents, the prompt you feed them can make or break everything.
That’s why QA Wolf just recorded this free panel discussion on AI Prompt Evaluations. You’ll learn why traditional “Golden Datasets” don’t cut it anymore – and how random sampling real production data can help your AI prompts adapt and improve.
You’ll also see how QA Wolf uses tools like Helicone to automatically test prompts against messy, real-world inputs to improve performance, save money, and keep agents sharp over time.
Check it out – and learn how to create prompts that actually work in the wild.
Companies like Microsoft and IBM use Apryse’s intelligent document processing to automate the extraction of data from diverse document formats.
function stressTest() {
console.time('Total Stress Test Duration');
const arraySize = Math.pow(2, 32);
let largeArray = new Array(arraySize).fill(0);
console.time('Populate Array');
largeArray = largeArray.map(() => Math.floor(Math.random() * 1000));
console.timeEnd('Populate Array');
console.time('Sort Array');
largeArray.sort((a, b) => a - b);
console.timeEnd('Sort Array');
console.time('Filter Even Numbers');
const oddArray = largeArray.filter(num => num % 2 !== 0);
console.timeEnd('Filter Even Numbers');
console.time('Square Numbers');
const squaredArray = oddArray.map(num => num * num);
console.timeEnd('Square Numbers');
console.time('Sum of Numbers');
const sum = squaredArray.reduce((acc, num) => acc + num, 0);
console.timeEnd('Sum of Numbers');
console.timeEnd('Total Stress Test Duration');
}
stressTest();
shadcn just released the registry mcp, which lets you make any component registry MCP-compatible with a single command. Resistance is futile.
Redis is open source again, and Hacker News suddenly has one less hill to die on.
Next.js Enterprise, a ready-to-deploy Next.js boilerplate for enterprise projects, is expanding its capabilities with built-in infra, WAF, caching, CI/CD, and more. Be the first to know once the updates go live! [sponsored]
bhvr is a modern and lightweight stack that includes Bun, Hono, Vite, React, and a custom neck tattoo that says “I’m better than u.”
react-native-ai lets you run LLMs on-device with React Native and Vercel. Now you can get all the confirmation bias you crave without even needing an internet connection.
Mat Marquis wrote an article called, JavaScript, when is this? which is the same thing Marty McFly asked his 80-year-old best friend and disgraced nuclear physicist, Dr. JavaScript Brown.
Monitoring Modern Infrastructure is a free ebook from Datadog that shows you how to effectively keep tabs on every layer of your application, no matter how complex. [sponsored]
GSAP 3.13 just came out, and it is now 100% free to use, even for commercial use.
Jess wrote about Pwning the Ladybird browser, and Saoirse Ronan just texted me to let me know that she is very upset by this.
The V8 team wrote about speeding up JavaScript startup with explicit compile hints. But they’ll be hearing from my lawyers, because I’ve already trademarked “Explicit Compile Hints” as the name of my gentlemen’s club for developers.
function stressTest() {
console.time('Total Stress Test Duration');
const arraySize = Math.pow(2, 32);
let largeArray = new Array(arraySize).fill(0);
console.time('Populate Array');
largeArray = largeArray.map(() => Math.floor(Math.random() * 1000));
console.timeEnd('Populate Array');
console.time('Sort Array');
largeArray.sort((a, b) => a - b);
console.timeEnd('Sort Array');
console.time('Filter Even Numbers');
const oddArray = largeArray.filter(num => num % 2 !== 0);
console.timeEnd('Filter Even Numbers');
console.time('Square Numbers');
const squaredArray = oddArray.map(num => num * num);
console.timeEnd('Square Numbers');
console.time('Sum of Numbers');
const sum = squaredArray.reduce((acc, num) => acc + num, 0);
console.timeEnd('Sum of Numbers');
console.timeEnd('Total Stress Test Duration');
}
stressTest();
The bug is that the array’s size is too large. The maximum size of an array is 2^32 - 1
.
// const arraySize = Math.pow(2, 32);
const arraySize = Math.pow(2, 32) - 1;
In ECMAScript, the length
property of an array is a 32-bit unsigned integer, which limits the maximum number of entries an array can have. Because the length
property represents the number of entries, and it’s zero-based, the maximum length
is Math.pow(2, 32) - 1
. #themoreyouknow