React 19 is huge. Here's a cheat sheet.
Nine new features:
1. React Server Components - Components that render at build time, or for each request.
2. Actions - Functions that use async transitions and automatically submit data for you. Actions support error handling, optimistic updates, and pending state.
3. Full custom element support
4. Document metadata support - Render title, link, and meta tags and they automatically hoist.
5. Stylesheets with precedence settings
6. Render async scripts in any component - They're automatically deduplicated
7. Preload resources via prefetchDNS, preconnect, preload, preinit
8. Unexpected tags in <head> and <body> are skipped over - Improves third-party script compatibility and avoids mismatch errors
9. Better error reporting - Automatically removes duplicate errors. Added onCaughtError and onUncaughtError root options.
Two new directives:
1. 'use client' marks code that runs only on the client.
2. 'use server' marks server-side functions that can be called from client-side code.
Six new APIs:
1. use - Read resources (like promises and context) in render
2. ref as a prop - refs are finally just a plain prop!
3. ref callbacks support returning a cleanup function
4. Streamlined Context - Use <Context> instead of <Context.Provider>
5. useDeferredValue - Now accepts an initial value too
3 new hooks:
1. useActionState - Declare form state and degrade gracefully if JS hasn't executed yet
2. useFormStatus - Get a form’s status
3. useOptimistic - Show the final state optimistically while an async request is underway
Introducing Charts.
A collection of chart components that you can copy and paste into your apps.
Built on top of Recharts. Beautifully designed. Open Source.
🚀 My favorite things you can do with Expo SDK 51:
⬦ Inspect bundles with Atlas
⬦ Enable React Compiler and React 19
⬦ Redirect system URLs w/ +native-intent
⬦ Fast bundling w/ the new Metro resolver
⬦ Using the # param in Expo Router v3.5
⬦ Building iOS apps OTA
In the next few weeks, I will be launching:
- A FREE 16-chapter book with interactive exercises
- A 400 video, entry-level Total TypeScript training course (with a price I think you'll like)
This has been 11 months of blood, sweat, and tears.
I can't wait for you to see it ❤️
Google Gemini 1.5 can see and hear you in real time🤯
And with 1M context as memory, you can do some incredible things that aren't possible before.
8 wild examples (and how to access):
1. Build your own game assistant
🚀 React Server Components are coming to every platform with @Expo Router!
To showcase all the new possibilities, I wrote the most powerful demo AI app I could think of—took less than a day to write, and it runs everywhere!
Unlike traditional AI apps, which stream plain-text, Expo RSC can server render interactive native views and animations.
This is the future of mobile apps.
React Compiler explained in 1 tweet:
1. It works on every platform that you can run React on
2. It enables you to completely forget about reactivity, and memoizes much more granularly than is possible by hand
3. No new APIs to learn, no rewrites, and incrementally adoptable
Clearing up some React Compiler misunderstandings
1. “React Compiler is written in Rust!”
There’s a WIP branch that Joe made to experiment with a Rust implementation. It’s VERY early and AFAIK can’t even be used right now, just meant to show it’s possible
Say hello to GPT-4o, our new flagship model which can reason across audio, vision, and text in real time: https://t.co/MYHZB79UqN
Text and image input rolling out today in API and ChatGPT with voice and video in the coming weeks.
@leeerob I built OpenTask on top of the Next.js App Router. It's a fully functional and responsive task management MVP.
It's a great example of this new hybrid web app model. I'm all in RSCs, Server Actions, and Suspense. The codebase is incredibly clean.
https://t.co/rEksI1jAZU
You'd need to add a weird "input is string" type to the return type of isString:
const isString = (input: unknown): input is string => {
return typeof input === 'string';
}
This is a type predicate, and it's a little problematic - TS doesn't check that your runtime code matches up to the type you've added.
So you could easily typo this as "input is number" and TS wouldn't care.
🚀 Build native iOS apps over-the-air with @Expo 51 beta!
𝝠 npx expo run:ios --device
◆ Supports Vision Pro 🥽
◆ Connects to all iOS dev devices on the network 🌐
◆ Feels like absolute magic 🪄
I've interviewed several people who got laid off recently.
One thought seems to emerge in all of them:
- "I'll never again join a company that self-describes as a family!!"
Some reports are sobering:
How I use @v0 for UI development ⬇️
Exploration: I rely on v0 a lot for exploration. If you have an idea you want to visualize, type in your prompt & let v0 transforms it into components. For the 1st generation, I always want v0 to be creative. I use the Quality ✨ toggle.