π¨ #192: Fog of War, react-html, Memory leaks, Suspense, security, chadcn/ui Charts, MUI, XR, Filament, Rise, Expo, React Navigation, Reanimated, Node, TypeScript, pnpm, Vitest...
Hi everyone!
The newsletter is back after a well-deserved 2-weeks break!
So we're covering three weeks of news in one issue, and there are too many links to squeeze into one e-mail, so I had to filter out the news more aggressively. Despite the holiday season, we had a lot of great community React articles, and quite interesting React Native news!
If you really like the exhaustive side of this newsletter, I'd encourage you to check the online version this time: it exceptionally contains extra sections with twice more links that you might still find interesting. This also gives you a hint of the value I provide: the work you don't see is all the articles that I gathered and read/skimmed over and had to filter out.
Check out our partner conf React-Brussels (π§πͺ Brussels - 18 October), offering us a 10% discount with code βTWIRβ. Some speakers have already been revealed!
π‘ Check this newsletter on Twitter - visual format π¨
As always, thanks for supporting us on your favorite platform:
- π¦ Bluesky
- βοΈ X / Twitter
- π LinkedIn
- π½ Reddit
Don't miss the next email!
πΈ Sponsorβ
The Category-Defining React Grid for Your Enterprise
Data grids are complex components of web applications, but current solutions are inefficient, require a lot of maintenance, and perform poorly. Graphite Grid transforms the landscape with two key features: retargetable rendering and reactive signal state.
Graphite Grid separates grid state from view logic, allowing a single unified state model to support a variety of render targets, declaratively or imperatively. It includes a DOM and Canvas renderer, giving developers flexible, high-performance options π.
Graphite Grid is declarative and consistent, leveraging state signals to ensure seamless integration with your application. Designed with React in mind, it is the only JavaScript data grid built with React's state management primitives. Try it now!
βοΈ Reactβ
We already featured this in our last issue, but thereβs now a dedicated blog post that greatly explains what itβs all about. A new React Router feature enables you to split your route manifest in chunks. This article explains how it has been integrated in Remix 2.10 and what are the tradeoffs. It turns out a route manifest can grow quite large, and if you donβt split it, it might delay your appβs React hydration because it has to be downloaded upfront. If you have a medium/large Remix or React Router site, Iβd recommend to check the size your route manifest immediately, and think about logical ways to split it, because the size reduction this new feature enable can have a significant perf impact. Shopifyβs initial manifest went from 10MB to 1.9KB! The Docusaurus website manifest is also 200KB and I definitively plan to implement this.
- πΈ Meilisearch β Build fast, typo-tolerant search with React
- π React Core PR -
ReactHTML.renderToMarkup
: A newreact-html
package is being introduced for producing HTML thatβs not meant to be hydrated (like emails). Itβs the successor ofrenderToStaticMarkup
, supporting modern features like Suspense. - π React Core PR -
React.captureOwnerStack()
: From many PRs I see, a lot of effort is going on in the React repo to improve debugging, logging, and producing readable βcomponent owner stack tracesβ. This new public API should be useful for framework authors to display an error dialog. - π Next.js PR - TypeScript config file (
next.config.ts
): A welcome improvement for DX to have first-class TypeScript support in config files, not anymore limited to JSDoc comments. - ποΈ React Rally - πΊπΈ Utah - 12-13, August - Get a 10% discount with code "TWIR". An awesome line up announced with Kent C. Dodds, Cory House, Joel Hooks, Tejas Kumar.
- π Sneaky React Memory Leaks: How the React compiler won't save you: This closes a great 3-part series on memory leaks in React. Kevin found a case where using the React Compiler would actually introduce a memory leak to code that wouldnβt leak otherwise. Using bind might be a decent workaround. Note that these memory issues are not limited to React, but happen due to using functional programming and closures in JS in general.
- π How to Simplify Component Imports with TypeScript Namespaces: I admit I didnβt know this quite pragmatic React + TypeScript trick that Matt Pocock also approves.
- π How to protect against a security breach in React Server Components: Greatly illustrates that validating with Zod is not enough, and itβs important to check access control for any server action input.
- π WorkOS - Migrating to Next.js App Router with zero downtime: An incremental migration from pages to App Router does not give a great navigation UX. They found a clever way to expose the same app as both Pages Router and App Router, with the ability to switch routers through a query string param.
- π Enhancing The New York Times Web Performance with React 18: They migrated from React 16 and see great benefits such as fewer re-renders and improved INP score. Also encountered some challenges due to stricter hydration requirements.
- π Learn Suspense by Building a Suspense-Enabled Library: Creates a suspense-enabled
useFetch()
hook to broadly demonstrate how real-world libraries work. - π All About That Button, βBout That Button: Remix encourages writing mutations as declarative HTML that works βbeforeβ JS, and other interesting button-related progressive enhancement things.
- π Secret knowledge to self-host Next.js: Guide with everything you need for deploying production Next.js outside Vercel.
- π 5 Misconceptions about React Server Components
- π¦ chadcn/ui Charts - Collection of beautiful chart components, built using Recharts
- π¦ Material UI 6.0 beta - Pigment CSS build-time CSS-in-JS support (optional), container queries
- π¦ react-three/xr 6.0 - AR/VR for react-three-fiber
- π¦ Motion-Primitives - Beautifully designed motions components based on Framer Motion
- π₯ Jack Herrington - Warning: React 19's use Hook Can Impact App Performance: TIL about a surprising React implementation detail when it first encounters a βuseβ hook.
- ποΈ PodRocket - React Compiler with Sathya Gunasekaran and Joe Savona
Extras:
- π Next.js PR - onRequestError in instrumentation.js
- π¬ Why Vercel created Turbopack instead of using Vite
- π The Secret to Maintainable Remix Apps: Hexagonal Architecture
- π Can you modify React Props?
- π Demistifying cache in Next.js
- π How much code can Tanstack Query save
- π The Experience of Deploying Next.js Apps on Cloudflare
- π Preparing for React 19: a guide for WordPress 6.6 users
- π A pragmatic guide for adding React to an existing Rails application (and still use Hotwire)
- π Next.js and cache poisoning: a quest for the black hole
- π Security advice for self-hosting Next.js in Docker
- π Nested arrays and objects in Form Data with Conform
- π React Form Button
- π Extra Arguments for Server Actions in React Forms
- π Next.js createPage helper with loader pattern
- π How Zustand Was Born
- π The React useRef Hook: Not Just for DOM Elements
- π Path To A Clean(er) React Architecture (Part 7) - Domain Logic
- π¦ Headless UI React 2.1 - Simplified transition API and improved multi-dialog support
- π¦ Storybook 8.2 - beforeAll test hook, enhanced play function, portable stories, new onboarding
- π¦ React Flow 12.0 - SSR support, Computing flows, dark mode
- π¦ Hono 4.5 - React 19 Compatible APIs
- π₯ Dave Gray - Toast Notification Patterns with Next.js Server Actions and next-safe-action
- π₯ Lazar Nikolov - Implementing Clean Architecture Patterns in Next.js
- π₯ Jolly Coding - NextJS 'use server' Trap (Accidentally Leaking Data)
- π₯ Olivier Larose - GSAP vs Framer Motion for React
- ποΈ This Month in React - React 19 delayed (drama-ish), why no JS Laravel, TS 5.5β¦
Don't miss the next email!
πΈ Sponsorβ
WorkOS: Modern Identity Platform for B2B SaaS
With WorkOS you can start selling to enterprises with just a few lines of code.
π WorkOS supports a complete User Management solution along with SSO, SCIM, RBAC, & FGA.
ποΈ The APIs are flexible, easy-to-use, and modular. Pick and choose what you need and integrate in minutes.
π¨ Design and user experience are everything. From the quality of our documentation to how your users onboard, we remove all the unnecessary complexity for developers.
β¨ User Management is free up to 1 million MAUs and includes bot protection, impersonation, MFA, & more.
π€ WorkOS is trusted by hundreds of leading startups like Perplexity, Vercel, & Webflow.
Future-proof your auth stack with WorkOS π
π± React-Nativeβ
The Margelo team released an impressive new real-time physically based 3D rendering engine for React Native, based on Google Filament. Itβs GPU-accelerated by Metal/Vulkan, rendered on a separate thread, works with Reanimated, and already supports the New Architecture and Expo. The readme explains well how it differs from existing 3D solutions based on expo-gl (expo-three and react-three-fiber RN). With Skia and Filament, the future looks bright for React Native's 2D/3D capabilities.
A brand-new solution to create Server Driven UIs in React Native, that allows you to deploy new views on the server without rebuilding/resubmitting your app (or even ship an OTA update). It looks philosophically very close to the React Server Components model, but with slightly different tradeoffs: at the cost of some additional manual wiring, this new solution is framework and language agnostic thanks to a protocol that defines how views are serialized. It's still early days, but it looks promising.
- πΈ RevenueCat Paywalls - Easy remotely configurable paywalls for React Native apps
- π£ React Native 0.76 - Android minSdk will bump to Android 7.0 (API 24)
- π More-reacty-native-demo: Evan Bacon experiments on exposing native views as lowercase intrinsic JSX elements that can be used directly without importing them, like divs on the web.
- π Reanimated Cookbook - Real-life examples to help you learn
- ποΈ The Geek Conf - π©πͺ Berlin - 18 & 25 July - Get a 10% discount with code "TWIR". Last day tickets for tomorrow remote events !
- π Expo - Increase iteration speed with PR previews: New feature integrates EAS Updates with GitHub to automatically post OTA updates as PR commit status. A great DX, similar to what Vercel/Netlify offer on the web, but for mobile! My only wish is that they post a QRCode in a sticky PR comment.
- π Use a framework to build React Native apps: The React Native team finally officially endorses the use of Expo! If you donβt use a framework, you are probably building one.
- π From Web to Native with React: Kadi from Expo created a great resource to help web devs learn React Native, including a comparison between intrinsic React DOM and React Native elements, how the flexbox model is a little bit different, errors to avoid, new native things to learn, and overall a great overview of anything to be aware of related to React Native or Expo.
- π Microsoft - Building React Native for Windows Apps from a Mac: Owning a Wndows PC is not required, and you can use a Windows VM through Microsoft Dev Box or Parallels.
- π App clip with React Native and New Arch (and Swift)
- π Bringing native AI to your mobile apps with ExecuTorch - Part 2, Android
- π Introduction to the React Native OMH Maps Library
- π¦ React Navigation 7.0 RC: The final 7.0 release is coming, and Iβm particularly excited by the Static API and the introduction of a screen preloading API. This is a first step toward great upcoming perceived performance improvements, that could later leverage upcoming Concurrent React features like notably
<Activity>
. - π¦ FlashList 1.7 - New Architecture support!
- π¦ Yoga 3.1 - gap in %, layout conformance and regression fixes
- π¦ Reanimated 3.13 - New Architecture, Tabs Shared Element Transitions
- π¦ React Native Primitives - Unstyled universal components with a focus on accessibility
Extras:
- π¦ React Native running on Meta Quest demo
- π¦ Expo running on Daylight DC-1 devics demo
- π Flutter-Brownfield - a proof-of-concept for adding React Native to an existing Flutter app
- π Rebuilding a 10 year old iOS app with Expo
- π Building an Image Slider in React Native using Skia and Reanimated
- π Publishing dual module ESM libraries
- π How To Implement Local Storage In Your Expo App?
- π Empowering Users: Developing Accessible Mobile Apps using React Native
- π Awesome-react-native-ui - list of react native animations created by the community
- π¦ React Native 0.75 RC.5
- ποΈ Rocket Ship 44 - Yoga, Layouting and New Architecture with Delphine Bugner
- ποΈ Rocket Ship 45 - React Native Apps for Seafarers with Gabriel Dierks
- ποΈ RNR 301 - RNR Explains: Using Native Driver for Animated
- ποΈ RNR 302 - Landing a React Native Job with Taylor Desseyn
- π₯ Simon Grimm - From React to React Native in 12 Minutes
- π₯ Simon Grimm - React Native vs Flutter - Which should you use?
π Otherβ
- π TypeScript 5.6 Iteration Plan
- π Ecma International approves ECMAScript 2024 - Whatβs new?
- π Speeding up the JavaScript ecosystem - Isolated Declarations
- π¦ Node 22.4 - experimental Web Storage support (localStorage/sessionStorage)
- π¦ Node 22.5 - experimental node:sqlite module
- π¦ pnpm 9.5 - New βcatalogsβ feature
- π¦ Vitest 2.0 - better Browser Mode
Extras:
- π Polyfill.io supply chain attack hits 100K+ sites
- π£ Astro + Netlify - Official Deployment Partners
- π How To Hack Your Google Lighthouse Scores In 2024
- π Itβs about time I tried to explain what progressive enhancement actually is
- π What's coming next for ESLint - Language-agnostic, core rewrite
- π Is TypeScript Just A Linter?
- π A guide to reading and writing Node.js streams
- π TypeScript 5.5 - A Blockbuster Release
- π¦ StackBlitz pkg.pr.new - Continuous (Preview) Releases for your libraries
- π¦ fetch-super-headers - A drop-in replacement for JavaScript
Headers
with type-safe access - π¦ Deno 1.45 - Workspace and Monorepo Support
- π¦ Rspack 1.0 Alpha - Smaller outputs, module concat, Lightning CSS, lean core
- π¦ Mako - New fast bundler based on Rust
- π¦ Facebook memlab - Find JavaScript memory leaks, analyzing heap snapshots
π€ Funβ
See ya! π
Don't miss the next email!