Today’s issue: HTML 5 workshops, the elegant library builder inside all of us, and a few more song parodies than usual.
Welcome to #387.
Time to seize the means of software production, comrades
I’m sorry, the old RedwoodJS can’t come to the phone right now. Why? Cuz she’s dead.
Ok, she’s not actually dead, but she has evolved into RedwoodSDK – a new “React framework built for Cloudflare” that begins as a Vite plugin and gives you SSR, React Server Components, server functions, and realtime features.
Why the change of direction? On a technical level, this is about removing complexity. You no longer have to worry about infrastructure, integrating services, or hidden files. RedwoodSDK is built on Web APIs and is just TypeScript, Vite, and RSC.
On a spiritual level, it’s about powering the personal software revolution – a beautiful utopia where developers can quickly build side projects and micro-SaaS for their own niche use cases using tools like AI, serverless, and vibes RedwoodSDK.
So grab your picket signs and pitchforks and let’s take a closer look under this revolution’s hood:
Cloudflare everything – It comes with built-in access to CF Workers, D1 (SQL database), R2 (object storage), Queues, AI, and full local emulation via Miniflare, so you can build and ship fast with zero config required.
Every route is a function – And every function can return a response or a component. That gives you file-based routing, JSX as a response, and middleware that feels built-in.
Reimagined RSC – Server-first by default, with realtime streaming via edge-rendered JSX and native use server
and use client
directives.
Bottom Line: Do you hear the people sing? Singing the songs of Redwood devs – it is the music of a people who will not buy SaaS again. When the Cloudflare in your heart, matches the code that’s on the edge, there’s a life about to start when tomorrow comes.
![]() ![]() ![]() ![]() |
CodeRabbit stopping me from shipping sloppy code to prod
It instantly gives you context-aware feedback every time you submit a pull request, dramatically reducing the time and effort you spend on manual code reviews.
Here’s how:
Unlike basic linters, it understands your entire codebase – so it can catch more subtle issues like style inconsistencies to serious vulnerabilities.
It suggests simple one-click fixes to help you quickly clean things up, and it gives you simple PR summaries for complicated changes
It learns from your PRs over time, and you can always ask it questions to help you solve problems – the more you use it, the smarter it gets.
CodeRabbit has so far reviewed more than 10 million PRs, installed on 1 million repositories, and used by 70 thousand open-source projects.
Get a free trial for your team – or use it free forever for open-source projects.
Add blazing fast and reliable 1D/2D Barcode Scanning to your web apps. Check out the free demo app and their 30-day free trial to try it out.
What gets logged?
const array = new Array(3).fill([])
array[0].push("bytes")
console.log(array)
The React team just published RC RC, AKA the React Compiler Release Candidate.
Basedash is the AI-native Business Intelligence platform. Need a beautiful chart or dashboard? Just tell it what you want in plain English and it’ll spin one up for you instantly, no SQL required. It was the #3 Product of the Week on Product Hunt and is pretty mind-blowing to use. [sponsored]
tsdown calls itself “the elegant library builder” and is built on top of Rolldown. I often refer to myself the same way when people ask me what I do.
Pete Koomen wrote about AI horseless carriages.
Jay Meistrich created Legend List 1.0, the fastest React Native list library. Pretty sure he named it that because he singlehandedly created a list library that’s noticeably faster than Facebook and Shopify’s list libs. Legend indeed.
It’s obviously performance review week at Meta, because the React team also just released documentation for two more new features they’re working on: View Transitions and the Activity API.
Chef is a new full-stack app generation platform that’s actually full stack – because it uses Convex’s backend functionality to give you a type-safe database, auth, APIs, and everything else you need for your backend to just work. [sponsored]
Dan Fein wrote Life of a Request, which unfortunately is an article about Vercel deployments and not a fan-fic sequel to Life of Pi where the tiger gets his revenge.
Evan Bacon wrote up some best practices for reducing lag in Expo apps. Best practice #1: do better.
Simon Pieters wrote on the MDN blog about how default styles for h1 elements are changing. And if you buy my HTML 5 workshop for 8 easy payments of $19.95, I’ll teach you how to use it.
What gets logged?
const array = new Array(3).fill([])
array[0].push("bytes")
console.log(array) // [ ["bytes"], ["bytes"], ["bytes"] ]
The key to understanding this one is in knowing that arrays in JavaScript are reference values.
When you call .fill([])
, what you’re really doing is “filling up” the array with three references to the same array. You can kind of think of it like this.
const reference = []
const array = new Array(3).fill(reference)
Where now, array
has three elements and they’re all referencing the same reference
array. Therefore, if you add an item to any of the three elements, since they all point to the same array, it’s as if you’re adding an item to all of them.
To get the same functionality without the referential weirdness, you can use Array.from
.
const array = Array.from({ length: 3 }, () => []);
array[0].push("bytes"); // [ ["bytes"], [], [] ]