<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[This Week In React]]></title><description><![CDATA[Keeping 43978 React devs up-to-date.
Receive the most important news once a week in your inbox!]]></description><link>https://substack.thisweekinreact.com</link><image><url>https://substackcdn.com/image/fetch/$s_!1jXd!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd0ebd98-bd63-49b4-b03a-7cef2a32a838_450x450.png</url><title>This Week In React</title><link>https://substack.thisweekinreact.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 28 Oct 2026 08:20:59 GMT</lastBuildDate><atom:link href="https://substack.thisweekinreact.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sébastien Lorber]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[thisweekinreact@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thisweekinreact@substack.com]]></itunes:email><itunes:name><![CDATA[Sébastien Lorber]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sébastien Lorber]]></itunes:author><googleplay:owner><![CDATA[thisweekinreact@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thisweekinreact@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sébastien Lorber]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[This Week In React 302]]></title><description><![CDATA[Next.js, React Router, DevTools, Security, shadcn, Hydrogen, Vinext, Mutative, R3F | RN 0.88, Expo 58, Navigation, FastImage, Screens, Device Hub, Edge to Edge | TypeScript, PHP, CrUX, Rsdoctor, Astro]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-302</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-302</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 23 Oct 2026 12:40:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xD1i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>It&#8217;s a heavy security week, with patches from React and Next.js. Not React-related, but there&#8217;s also a very bad &#8220;php2shell&#8221; vulnerability that has just been disclosed. Upgrade now!</p><p>On mobile, React Native 0.88 is out, switching to the web event model with no breaking changes. Expo SDK 58 ships with tons of features, ready for iOS 27 and iPhone Duo.</p><p>Outside React, TypeScript makes the headlines. v7.1 is in beta, with a new API to build devtools upon. A Rust port of the type checker is now backed by Cloudflare/VoidZero, and already faster than the official Go version.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yEBt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yEBt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yEBt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yEBt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yEBt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yEBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!yEBt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yEBt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yEBt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yEBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e18513-f14f-444a-87e1-61f9f63a9ad7_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ynxt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ynxt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!ynxt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!ynxt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!ynxt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ynxt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;On-device AI for React &amp; React Native&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="On-device AI for React &amp; React Native" title="On-device AI for React &amp; React Native" srcset="https://substackcdn.com/image/fetch/$s_!ynxt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!ynxt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!ynxt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!ynxt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24da2a98-7603-4771-a78a-1702e76389d3_1200x600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://github.com/nobodywho-ooo/nobodywho">On-device AI for React &amp; React Native</a></strong></p><p>NobodyWho is a library for running LLMs locally &amp; offline on any OS. GPU-accelerated via Vulkan or Metal.</p><ul><li><p><strong>Any LLM</strong>: Gemma, Qwen, Mistral and more in .gguf format</p></li><li><p><strong>Type-safe tool calling</strong>: automatically generates structured grammars from your function signatures</p></li><li><p><strong>Multimodal input</strong>: provide image and audio information to your LLM</p></li><li><p><strong>Text-to-speech</strong>: synthesize local WAV audio with Kokoro, Pocket TTS and Supertonic backends</p></li><li><p><strong>Speech-to-text</strong>: transcribe audio into text with Whisper</p></li><li><p><strong>Voice Activity Detection</strong>: know when to stop listening and start transcribing with Silero</p></li></ul><p>Available for <strong>React Native</strong>, <strong>Expo</strong>, but also for Flutter, Swift, Kotlin, Python, Godot and in React very soon thanks <strong>WebAssembly</strong>.</p><p><strong>Star the</strong> <strong><a href="https://github.com/nobodywho-ooo/nobodywho">repo</a></strong> if NobodyWho is useful to you, it is how people find us &#10084;&#65039;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-oct21">build mode - What nobody tells you about writing agent skills</a></p></li><li><p>&#128272; <a href="https://github.com/react/react/security/advisories/GHSA-xqc2-xf4c-x3h3">React vulnerability - Unauthenticated Remote Code Execution in React Server Components</a> - Patched in React 19.3.1 and the 19.0.9, 19.1.10 and 19.2.9 backports, together with a Server Functions DoS. In Next.js, the RCE affects <code>"use cache"</code> functions returning multiple typed arrays. Upgrade to <a href="https://nextjs.org/blog/nextjs-security-update-october-14-2026">16.4.1 or 15.5.28</a>, which also fixes a critical RCE in sharp via SVG images.</p></li><li><p>&#128197; <a href="https://luma.com/g9q690i2">React Foundation Meetup - Nov 11, London</a> - We <a href="https://thisweekinreact.com/newsletter/300#react:~:text=React%20Foundation%20news">recently mentioned</a> a React Foundation contributor summit, invite-only. But there&#8217;s also the first official React Foundation public meetup happening the same week at Meta King&#8217;s Cross.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/99871">Next.js PR - </a><code>&lt;Link prefetch="navigation"&gt;</code> - Adds a way to prefetch past the recently-introduced <code>await navigation()</code> boundaries for links users are likely to click.</p></li><li><p>&#128064; <a href="https://react.dev/reference/dev-tools/react-devtools-cdt-mcp">React docs - React DevTools for agents</a> - The experimental <code>react-devtools-cdt-mcp</code> package is now documented, with a live sandbox. Registers 12 additional React-specific tools with the Chrome DevTools MCP.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/improving-navigation-experience-in-v0-with-nextjs-16-4">Improving navigation experience in v0 with Next.js 16.4</a> - The <code>next-partial-prefetching-optimizer</code> skill helps your agent refactor until an <code>instant()</code> test proves the UI is ready before the click.</p></li><li><p>&#128220; <a href="https://base-ui.com/blog/building-a-filterable-menu">Building a filterable menu that works for everyone</a> - Adding an input to a menu is easy, making it accessible isn&#8217;t. Base UI explains its ARIA choices (dialog, not combobox), keyboard and submenu UX.</p></li><li><p>&#128220; <a href="https://mattrothenberg.com/notes/pure-ui-agentic-era/">Pure UI in the Agentic Era</a> - Practical advice for reviewing agent-written UI: make components pure, pass state as explicit inputs, render every combination as a grid.</p></li><li><p>&#128230; <a href="https://reactrouter.com/changelog#v850">React Router 8.5 - Deprecated view transition APIs, unstable API-only mode</a> - Now recommends React 19.3&#8217;s <code>&lt;ViewTransition&gt;</code>, wrapped around an <code>&lt;Outlet&gt;</code>. The new API-only mode serves prerendered HTML from a CDN, while loaders and actions run on a server that can live on another origin.</p></li><li><p>&#128230; <a href="https://github.com/pmndrs/react-three-fiber/releases/tag/v10.0.0-alpha.6">React Three Fiber 10.0 alpha 6 - WebGPU renderer by default, better React 19 support</a> - The upcoming major now works with <code>&lt;Activity&gt;</code> and <code>&lt;ViewTransition&gt;</code>. StrictMode and Fast Refresh no longer rebuild the Canvas.</p></li><li><p>&#128230; <a href="https://hydrogen.shopify.dev/update/hydrogen-2026-10-now-available">Hydrogen 2026-10</a> - Shopify Hydrogen is now a library, not a framework. Bring Shopify commerce to your existing Next.js or React Router app, with skills for coding agents. Built-in WebMCP support.</p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-10-ai-elements">shadcn/ui - AI Elements, Trace and Code Block</a> - 21 copy-paste patterns for agent UIs. They replace Vercel&#8217;s AI SDK Elements, which will be deprecated.</p></li><li><p>&#128230; <a href="https://vinext.dev/blog">Vinext 1.2 &#8594; 1.3 - 69% fewer JS requests per page, 5x faster cold starts, cache key collision fixes</a></p></li><li><p>&#128230; <a href="https://mutative.js.org/blog/releases/2.0">Mutative 2.0 - Faster updates, safer patches</a> - Same API, 3.6x faster than Immer on their benchmarks, for a bigger bundle (7.9 vs 3.6 kB).</p></li><li><p>&#128230; <a href="https://github.com/immerjs/immer/releases/tag/v11.2.0">Immer 11.2 - </a><code>isModified()</code><a href="https://github.com/immerjs/immer/releases/tag/v11.2.0"> helper</a></p></li><li><p>&#128230; <a href="https://github.com/bvaughn/react-window/releases/tag/2.4.0">React Window 2.4 - Server rendering improvements</a></p></li><li><p>&#128230; <a href="https://astryx.atmeta.com/blog/introducing-astryx-richtext">Astryx RichText - Lexical-based rich text field with lossless Markdown</a></p></li><li><p>&#128230; <a href="https://x.com/davidhaz/status/2110662315959803905">React Bits 2.0 - 215 animated React components, rebuilt design tools</a></p></li><li><p>&#128230; <a href="https://c15t.com/changelog/3.0.0">c15t v3 - One consent engine for 8 frameworks, banner in the server HTML</a></p></li><li><p>&#128230; <a href="https://julesblom.com/react-trees">React Trees Playground - Paste React code, see its parent and owner trees</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lI7_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lI7_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lI7_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lI7_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lI7_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lI7_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!lI7_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lI7_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lI7_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lI7_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217f07bb-deba-455b-9579-f10cbf10eba1_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/jherr">Jack Herrington</a></strong><a href="https://twitter.com/jherr">Principal Engineer - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0OoT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0OoT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0OoT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0OoT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0OoT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0OoT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Make Forms a Scalable Part of Your React App&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Make Forms a Scalable Part of Your React App" title="Make Forms a Scalable Part of Your React App" srcset="https://substackcdn.com/image/fetch/$s_!0OoT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0OoT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0OoT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0OoT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f2ae97-f6ad-41f9-9565-4c1fe932eda2_1200x600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://surveyjs.io/?utm_source=this-week-in-react&amp;utm_medium=email">Make Forms a Scalable Part of Your React App</a></strong></p><p>Product teams need to launch new forms and update existing ones. Developers shouldn&#8217;t have to edit fields, labels, and validation rules for every change. <strong><a href="https://surveyjs.io/?utm_source=this-week-in-react&amp;utm_medium=email">SurveyJS</a></strong> <strong>provides a JSON-driven form library and an embeddable drag-and-drop form builder</strong> for your React application.</p><p>Customize SurveyJS components to match your UI with custom themes or ready-to-use <em>theme adapters for Bootstrap, shadcn/ui, and Material UI</em>.</p><p>&#8226; Works with any backend and database<br>&#8226; Fits your existing design system<br>&#8226; Keeps developers in control of architecture and data</p><p>Developers control the UI and data. Business users update forms visually without waiting for every change to be coded. &#128640;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xD1i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xD1i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xD1i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xD1i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xD1i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xD1i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native 0.88&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Native 0.88" title="React Native 0.88" srcset="https://substackcdn.com/image/fetch/$s_!xD1i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xD1i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xD1i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xD1i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adfa071-6e86-4fcc-8957-97dbd6e8dabb_1200x675.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://reactnative.dev/blog/2026/10/19/react-native-0.88">React Native 0.88</a></strong></p><p>The new release is out with one of the largest runtime changes in years! Events are now dispatched through the W3C <code>EventTarget</code> API by default. This is the same model as on the web, making it possible to share event handling code between web and native. This opens the path to web-compatible imperative APIs in the future. And yet, it&#8217;s a third release with no user-facing breaking changes, after 0.83 and 0.86.</p><p>Other key highlights include:</p><ul><li><p><strong>SceneDelegate on iOS</strong> - support for the <code>UIScene</code> lifecycle required by the iOS 27 SDK, added additively.</p></li><li><p><strong>Variable fonts</strong> - <code>fontVariationSettings</code> on <code>Text</code> and <code>TextInput</code>, on Android and iOS, in object or CSS string form.</p></li><li><p><strong>ArrayBuffer for Java TurboModules</strong> - binary data no longer needs base64 or number-array encoding, and synchronous calls can borrow JavaScript memory instead of copying it.</p></li><li><p><strong>Swift Package Manager improvements</strong> - still experimental, but iOS versions now come from the app&#8217;s deployment target, and Xcode builds no longer break for libraries shipping their own <code>Package.swift</code>. 0.89 targets SwiftPM as the default.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KPYs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KPYs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KPYs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KPYs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KPYs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KPYs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Expo SDK 58&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Expo SDK 58" title="Expo SDK 58" srcset="https://substackcdn.com/image/fetch/$s_!KPYs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KPYs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KPYs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KPYs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1297ddf7-5ed5-4c64-b0d5-c7b2bd228684_1200x630.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://expo.dev/changelog/sdk-58">Expo SDK 58</a></strong></p><p>A React Native release is not enough! Expo SDK 58 is out with React Native 0.88, built for iOS 27 and ready for iPhone Duo on day one, and it comes with a long list of improvements of its own. Too many to list them all, so here are the highlights:</p><ul><li><p><strong>Expo Modules 2.0 (beta)</strong> - plain Swift and Kotlin classes with annotations, with sync calls 2.5-5.6x faster than the DSL on iOS and faster than TurboModules in all twelve Android microbenchmarks.</p></li><li><p><strong>Faster builds and faster modules</strong> - prebuilt <code>expo-modules-core</code> Android libraries cut a clean four-ABI debug build from about 80 seconds to about 39, and iOS calls passing long strings are up to 3.8x faster.</p></li><li><p><strong><a href="https://expo.dev/blog/introducing-expo-app-intents">App Intents</a></strong> <strong>(alpha)</strong> - <code>expo-app-intents</code> exposes your app to Siri, Shortcuts, Spotlight, and Apple Intelligence.</p></li><li><p><strong>Expo UI and Android home screen widgets</strong> - lists recycle rows now, iOS gains NavigationStack and Toolbar, and <code>expo-widgets</code> runs on Android with its own Hermes runtime.</p></li><li><p><strong>A CLI built for agents</strong> - the experimental <code>@expo/agent-cli</code> wraps Expo CLI, EAS CLI, and <code>expo-doctor</code>.</p></li><li><p><strong>Expo Router</strong> - data loaders, SSR and middleware are now stable, alongside native tabs and a reworked navigation core.</p></li></ul><p>And a few more: an experimental Rust transformer for roughly 2x faster cold bundling, SwiftPM groundwork for Expo apps, and Expo Observe gaining control over automatic error recording.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://deploypulse.io/">DeployPulse - Hosted OTA updates for React Native. A drop-in replacement for CodePush and EAS Update.</a></p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1027">RFC - API removal strategy in React Native</a> - Removed APIs like <code>InteractionManager</code> throw on access. This proposes alternatives so that library authors can more easily use feature detection to keep supporting older React Native versions.</p></li><li><p>&#128227; <a href="https://github.com/zoontek/react-native-edge-to-edge">React Native Edge to Edge is now deprecated</a> - RN 0.86+ ships the fixes natively: set <code>edgeToEdgeEnabled=true</code> in <code>gradle.properties</code> instead.</p></li><li><p>&#128220; <a href="https://x.com/reactnavigation/status/2110358651449868302">Icons and iOS 27 updates in React Navigation 8</a> - Native tabs now accept custom SF Symbols and VectorDrawables. With Nano Icons, you can use SVG icons in native tabs without hurting performance. Also includes filled Material Symbols and the iOS 27 prominent tab.</p></li><li><p>&#128220; <a href="https://dev.to/amazonappdev/openiap-adds-supports-for-amazon-33b">OpenIAP adds support for Amazon</a> - <code>react-native-iap</code> and <code>expo-iap</code> can now sell on Fire OS and Vega OS with the same APIs.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/teamreach-ota-updates-relaunch">Relaunching TeamReach: how OTA updates saved a 5,000,000-user cutover</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/multi-window-react-native-apps-with-the-meta-vr-layout-sdk">Multi-Window React Native Apps With the Meta VR Layout SDK</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/give-qa-agents-the-controls-they-need-with-appduct">Control App Test Conditions With Appduct for AI QA Agents</a></p></li><li><p>&#128184; <a href="https://docs.maestro.dev/get-started/maestro-mcp?utm_source=this-week-in-react">Maestro MCP - Let your coding agent write, run and debug your UI tests</a></p></li><li><p>&#128230; <a href="https://expo.dev/blog/xcode-27-device-hub-expo-device-hub">expo-device-hub - Your simulators and emulators in a browser tab</a> - Also fixes the Expo CLI <code>i</code> shortcut, broken by Xcode 27 after the removal of <code>Simulator.app</code>.</p></li><li><p>&#128230; <a href="https://github.com/DylanVann/react-native-fast-image/releases/tag/v10.0.0">FastImage 10.0 - New Architecture rewrite, </a><code>objectFit</code><a href="https://github.com/DylanVann/react-native-fast-image/releases/tag/v10.0.0"> replaces </a><code>resizeMode</code><a href="https://github.com/DylanVann/react-native-fast-image/releases/tag/v10.0.0">, </a><code>objectPosition</code><a href="https://github.com/DylanVann/react-native-fast-image/releases/tag/v10.0.0"> added</a> - The original library is actively maintained again.</p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/react-native-screens-4-30-0/">Screens 4.30 - iPhone Duo support, opaque headers fixed on iOS 26+, </a><code>prominentScreenKey</code><a href="https://swmansion.com/changelog/react-native-screens-4-30-0/"> for Tabs</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.4.0">Gesture Handler 3.4 - iOS SPM support, </a><code>immediatePressOut</code><a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.4.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-bottom-sheet/releases/tag/v0.17.0">Bottom Sheet 0.17 - Scroll handoff with nested scrollables, percentage detents</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.13.0">Uniwind 1.13 - CSS cascade order on native</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.9.0">Nitro Fetch 1.9 - iOS WebSockets on </a><code>Network.framework</code><a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.9.0"> (~30% faster), built-in SSL pinning, Android perf fixes</a></p></li><li><p>&#128230; <a href="https://github.com/natew/react-native-gpui">RN GPUI - Render React Native components natively with GPUI, Zed&#8217;s Rust UI framework (macOS only)</a></p></li><li><p>&#128230; <a href="https://github.com/gmi-software/react-native-better-pdf/releases/tag/v1.1.0">Better PDF 1.1 - Several files as one document, base64 sources, cheaper long documents</a></p></li><li><p>&#128230; <a href="https://github.com/retyui/babel-plugin-react-native-direct-imports">Babel Plugin RN Direct Imports - Rewrite react-native barrel imports into direct module imports, so your bundle only includes the APIs you use</a></p></li><li><p>&#128230; <a href="https://github.com/batical/react-native-skia-webgpu-video">Skia WebGPU Video 0.1 Beta - Video playback, composition and export for React Native Skia 3 and WebGPU</a></p></li><li><p>&#128230; <a href="https://developer.apple.com/documentation/xcode-release-notes/xcode-27_1-release-notes">Xcode 27.1 - Swift 6.4, iOS 27.1 SDKs, iPhone Duo support</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://web.dev/blog/crux-experimental-soft-navs/">Experimental soft navigation metrics now available in CrUX</a> - Exciting news for SPA / client-side routing frameworks! Core Web Vitals takes into account soft navigations, measuring the full navigation session instead of only the initial page load, and the Chrome User Experience Report dataset now exposes these metrics as experimental. Use the <a href="https://cruxvis.withgoogle.com/#/?view=cwvsummary&amp;url=https%3A%2F%2Freact.dev%2F&amp;identifier=origin&amp;device=PHONE&amp;periodStart=0&amp;periodEnd=-1&amp;display=p75s">CrUX Vis</a> tool and check the &#8220;Include soft navigations&#8221; toggle to see the score impact on any site. The React site&#8217;s score is improving because subsequent navigations are faster than the initial page load.</p></li><li><p>&#128272; <a href="https://www.php.net/archive/2026.php#2026-10-21-5">PHP - Critical remote code execution vulnerabilities</a> - These 2 &#8220;php2shell&#8221; RCEs look really bad: no login needed, affecting PHP since 5.4. Yes, that includes your WordPress and Laravel sites. Upgrade now!</p></li><li><p>&#128220; <a href="https://www.joshwcomeau.com/css/interop-2027/">The Future of CSS</a> - Josh Comeau&#8217;s top 10 picks for Interop 2027, nicely presented with browser support and interactive demos.</p></li><li><p>&#128220; <a href="https://jakearchibald.com/2026/jpeg-xl-vs-avif/">JPEG XL vs AVIF for web use-cases</a> - JPEG XL recently landed in all browsers. AVIF remains better for lossy compression, but JPEG XL wins for lossless compression and recompressing existing JPEGs.</p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-1-beta/">TypeScript 7.1 beta - New TypeScript API, Import Attributes in Ambient Modules, stable </a><code>es2026</code><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-1-beta/"> lib/target, performance improvements</a> - The real highlight is the new TypeScript API, unlocking ecosystem tools such as TypeScript-ESLint to integrate with TypeScript 7. Content Mappers are a game changer for improving the type safety of external files such as MDX, Astro, CSS Modules, Vue, and more.</p></li><li><p>&#128230; <a href="https://blog.cloudflare.com/typescript-rust-port/">tsrs - Rust port of the TypeScript 7 type checker and LSP</a> - There have been a lot of TypeScript ports to Rust recently. The most promising one is already much faster than tsgo. It&#8217;s now supported by Cloudflare/VoidZero, incubating under the Oxc toolchain umbrella. Not a fork: they are actively collaborating with the TypeScript team and plan to keep it aligned with the reference implementation. The <a href="https://building.owner.com/tsrs">backstory</a> is also interesting, and shows the port will also speed up Oxlint type-aware linting.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v24.22.0">Node.js 24.22 LTS - </a><code>util.throttle()</code><a href="https://nodejs.org/en/blog/release/v24.22.0"> and </a><code>util.debounce()</code><a href="https://nodejs.org/en/blog/release/v24.22.0">, crypto improvements</a></p></li><li><p>&#128230; <a href="https://rsdoctor.rs/blog/release/release-note-2_0">Rsdoctor 2.0 - Now Rspack-only, Agent CLI, 57% faster analysis, 56% smaller install, multi-compiler reports</a></p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-10-13-webpack-5-112/">Webpack 5.112 - SSR asset manifest, source map scopes, multi-entry library exports, async </a><code>DefinePlugin</code><a href="https://webpack.js.org/blog/2026-10-13-webpack-5-112/"> values</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-740/">Astro 7.4 - Build timings, separate build/runtime image services, parallel prerendering (experimental)</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1114f585-132f-4c90-b86b-5663b836181e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8iTB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8iTB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1114f585-132f-4c90-b86b-5663b836181e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pPxx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pPxx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pPxx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pPxx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pPxx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pPxx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg" width="1000" height="798" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:798,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Linear dev and Codex shaking hands over TodoMVC&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Linear dev and Codex shaking hands over TodoMVC" title="Linear dev and Codex shaking hands over TodoMVC" srcset="https://substackcdn.com/image/fetch/$s_!pPxx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pPxx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pPxx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pPxx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa091d8-0266-436f-8d4a-33502de88e51_1000x798.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3TQx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3TQx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3TQx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3TQx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3TQx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3TQx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg" width="1000" height="1171" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1171,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Benevolent sandworms from the php2shell patch team&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Benevolent sandworms from the php2shell patch team" title="Benevolent sandworms from the php2shell patch team" srcset="https://substackcdn.com/image/fetch/$s_!3TQx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3TQx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3TQx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3TQx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a1a4253-e646-4f3b-b943-256a24536e98_1000x1171.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 301]]></title><description><![CDATA[TanStack Start, React Aria, Base UI, Satori, Next.js, Vitest RSC, MobX | RN Web, Tamagui, One, Skia, Observe, Screens, Hot Updater, Nano Icons | Deno, Bun, TS, JPEG XL, AsyncContext, Playwright, pnpm]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-301</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-301</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 16 Oct 2026 12:23:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2R35!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>TanStack Start 1.0 is finally stable, a client-first alternative to server-first React frameworks.</p><p>On mobile, Expo will maintain React Native Web, under the React Foundation. Tamagui v3 and One v2 are out. React Native 0.88 is at RC5, so it should land very soon!</p><p>Deno is joining Cloudflare. JPEG XL lands in Chrome and Firefox. TypeScript is getting ported to Rust, twice.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XwxK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XwxK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XwxK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XwxK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XwxK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!XwxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!XwxK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XwxK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XwxK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XwxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddb8428-5198-481d-8379-c5be6630b1b1_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dcEG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dcEG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dcEG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dcEG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dcEG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!dcEG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TrustedRouter: Your app. Your models. Your privacy.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TrustedRouter: Your app. Your models. Your privacy." title="TrustedRouter: Your app. Your models. Your privacy." srcset="https://substackcdn.com/image/fetch/$s_!dcEG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dcEG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dcEG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dcEG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91d1d49e-399e-4138-92e5-1bdcbdab57e9_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://trustedrouter.com/?utm_source=thisweekinreact&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=primary_20261014&amp;utm_content=privacy_with_proof">TrustedRouter: Your app. Your models. Your privacy.</a></strong></p><p>Your React app deserves the model that fits the job. TrustedRouter gives your backend hundreds of models through one OpenAI-compatible API. Keep your OpenAI SDK, add your key, and change the base URL.</p><p>Choose providers by price, speed, and privacy. Set a minimum privacy level and select confidential routes for sensitive requests. The router runs in attested confidential compute, with <a href="https://trustedrouter.com/trust?utm_source=thisweekinreact&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=primary_20261014&amp;utm_content=verify_privacy">public evidence you can verify</a>.</p><p>Open source, with automatic provider failover. <a href="https://trustedrouter.com/?utm_source=thisweekinreact&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=primary_20261014&amp;utm_content=body_cta">Get your API key and try your first request.</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2R35!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2R35!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2R35!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2R35!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2R35!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!2R35!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg" width="1000" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack Start 1.0&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack Start 1.0" title="TanStack Start 1.0" srcset="https://substackcdn.com/image/fetch/$s_!2R35!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2R35!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2R35!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2R35!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c75087-7d32-43c8-9d9c-77894e11927c_1000x563.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://tanstack.com/blog/tanstack-start-1-0">TanStack Start 1.0</a></strong></p><p>The full-stack framework is officially stable and production-ready, supporting both React and Solid. It has already been used on millions of apps during its beta/RC phase. As its &#120143; <a href="https://x.com/tan_stack/status/2110022759338422327">launch video</a> puts it: &#8220;Feels like building a SPA. With the whole server behind you&#8221;.</p><ul><li><p><strong>Client-first:</strong> SPA-style routing, state and caching, with server rendering, streaming and typed server functions.</p></li><li><p><strong>Type-safe end to end:</strong> route params, search params, loader data and server function inputs are all typed, keeping changes consistent for both humans and agents. Type checking speed has been thoroughly optimized.</p></li><li><p><strong>Agent-ready:</strong> packages ship TanStack Intent skills, so agents can learn Start&#8217;s APIs and best practices.</p></li><li><p><strong>RSC is opt-in:</strong> supported, but the team removed it from tanstack.com because it made the codebase harder to reason about.</p></li><li><p><strong>Deploy anywhere</strong> with Vite and Nitro. Rsbuild is also supported.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://dub.sh/3jnUg5C">Lingui - React i18n macros now compile natively in Vite, 2.5x faster than SWC and nearly 30x faster than Babel</a></p></li><li><p>&#128172; <a href="https://github.com/reactjs/rfcs/pull/284">React RFC - React work counters</a> - Suggests improving the production observability of React by exposing metrics such as number of re-renders, setState calls or commits. I like the idea of giving metrics for agents to hill-climb and optimize against.</p></li><li><p>&#128064; <a href="https://github.com/mobxjs/mobx/pull/4735">MobX PR - MobX React plugin</a> - An upcoming bundler plugin will help MobX and the React Compiler coexist. Wraps components in <code>observer()</code>, adds <code>"use no memo"</code> directives, turns <code>async</code> methods into MobX flows.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/99628">Next.js PR - </a><code>eslint-config-next</code><a href="https://github.com/vercel/next.js/pull/99628"> supports ESLint 10</a> - <code>eslint-plugin-react</code> <a href="https://github.com/jsx-eslint/eslint-plugin-react/pull/4022">still doesn&#8217;t support ESLint 10</a>, so Next.js 16.5 canary patches it in place. Next.js users can finally upgrade.</p></li><li><p>&#128272; <a href="https://nextjs.org/blog/upcoming-nextjs-security-update-october-2026">Next.js - Upcoming security update</a> - Planned for October 14: 2 critical and 1 high severity vulnerabilities in upstream dependencies.</p></li><li><p>&#128220; <a href="https://jimmyhmiller.com/what-does-the-react-compiler-even-do">Can we Make React Faster using the React Compiler?</a> - Explains what the compiler outputs, how it works, and then prototypes various optimizations: component inlining, Million.js-style blocks, Solid-like list selection, automatic context and Zustand selectors...</p></li><li><p>&#128220; <a href="https://mattrothenberg.com/notes/classname-considered-harmful/">className Considered Harmful</a> - How design systems drift when components accept <code>className</code>, and how popular design systems restrict it. Why not a <code>DANGEROUS_className</code> prop &#129300;.</p></li><li><p>&#128220; <a href="https://bra31k.dev/en/blog/same-bytes-17-percent-faster">How we made a 9 MB WebAssembly module feel faster without removing a single byte</a> - A chain of suspending components delayed the loading of a large WASM file. Preloading it made the first canvas render 15-19% faster.</p></li><li><p>&#128220; <a href="https://julesblom.com/writing/react-visual-notation">A visual notation for React&#8217;s parent and owner trees</a> - A diagram format for showing component structure, ownership, and context at a glance.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/debugging-suspense-with-the-react-suspense-panel">Debugging Suspense with the React Suspense Panel</a> - A practical tour of the new React DevTools 8.0 Suspense tab.</p></li><li><p>&#128184; <a href="https://sentry.io/resources/201-session-replays/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=replay-fy27q3-sessionreplayworkshop&amp;utm_content=newsletter-react-link-register">Sentry - Stop scrubbing replays. Learn the sampling, filters, and React hooks that find the right session, live on Nov 5th. Save your spot</a></p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-22-0">React Aria 1.22 - New Sheet component, virtual-keyboard-aware overlays</a> - The new swipeable <a href="https://react-aria.adobe.com/blog/sheet">Sheet component</a> uses no JS touch handlers, only CSS scroll snapping and view timelines.</p></li><li><p>&#128230; <a href="https://github.com/vercel/satori/releases">Satori 0.36 &#8594; 0.55 - Converts JSX/HTML and CSS to SVG</a> - Lots of releases this week, notably switching its layout engine from Yoga to Taffy, unlocking many new features like CSS grid and more.</p></li><li><p>&#128230; <a href="https://github.com/storybookjs/vitest-plugin-rsc/releases/tag/v0.3.0">Vitest Plugin RSC 0.3 - Run Next.js App Router apps in Vitest Browser Mode</a> - Lets you test the full RSC pipeline (server render, hydration, Server Actions) of a component or a whole route. Requires Next.js 16.4+.</p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-9-0">Base UI 1.9 - Filterable Menu, faster Select/Combobox/Menu, improved Drawer gestures</a></p></li><li><p>&#128230; <a href="https://github.com/styled-components/styled-components/releases/tag/styled-components%406.6.0">Styled Components 6.6 - </a><code>StyledComponent</code><a href="https://github.com/styled-components/styled-components/releases/tag/styled-components%406.6.0"> type for </a><code>isolatedDeclarations</code><a href="https://github.com/styled-components/styled-components/releases/tag/styled-components%406.6.0">, faster type-checking, RSC global styles fix</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.90.0">React Hook Form 7.90 - Many bug fixes and perf improvements</a></p></li><li><p>&#128230; <a href="https://astryx.atmeta.com/blog/astryx-v0-7-0">Astryx 0.7 - Easier form styling, better mobile and touch support, spacing in rem</a></p></li><li><p>&#128230; <a href="https://github.com/cloudflare/vinext/releases/tag/vinext%401.1.0">Vinext 1.1 - Next.js parity fixes, stale-while-revalidate for </a><code>"use cache"</code></p></li><li><p>&#128230; <a href="https://remocn.studio/">Remocn Studio 1.0 - A macOS app where your coding agent makes Remotion videos</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=paQbukUXE8w">Ankita Kulkarni - Next.js 16.4 Is Built for Agents (Here&#8217;s Why)</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/0c8a4fc2">This Month in React - September 2026 - React 19.3, a eulogy to software engineering?</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j_Aa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j_Aa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j_Aa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j_Aa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j_Aa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!j_Aa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!j_Aa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j_Aa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j_Aa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j_Aa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc96deb84-cff0-4be2-943c-d0db39a7b8a8_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hyIq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hyIq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hyIq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hyIq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hyIq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hyIq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Your agent writes code. Wallaby helps it catch bugs&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Your agent writes code. Wallaby helps it catch bugs" title="Your agent writes code. Wallaby helps it catch bugs" srcset="https://substackcdn.com/image/fetch/$s_!hyIq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hyIq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hyIq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hyIq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23349ae5-9bac-4e93-8b50-d56fcda4b1ae_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://wallabyjs.com/blog/wallaby-for-coding-agents.html?referrer=ThisWeekInReactOct26">Your agent writes code. Wallaby helps it catch bugs</a></strong></p><p>Put your coding agent to work on the unit tests you&#8217;ve been meaning to fix. Help it find missed edge cases, strengthen weak assertions, and remove redundant or outdated tests and assertions.</p><p><a href="https://wallabyjs.com/blog/wallaby-for-coding-agents.html?referrer=ThisWeekInReactOct26">Wallaby for Coding Agents</a> &#129302; gives your agent live feedback on how the code actually behaves. Use <code>/wallaby improve</code> to strengthen existing tests and <code>/wallaby write</code> to write new ones like an expert developer using Wallaby.</p><p>Works with your existing JavaScript, TypeScript, and Python tests in Codex, Claude Code, Cursor, GitHub Copilot, and more. <strong>Free for everyone during the beta.</strong></p><p><a href="https://wallabyjs.com/?referrer=ThisWeekInReactOct26">&#10145;&#65039; Upgrade your testing workflow</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-oct14">PostHog - 10,000 PRs a month is easy: How devex is evolving at PostHog</a></p></li><li><p>&#128064; <a href="https://github.com/necolas/react-native-web/discussions/2872">Expo to maintain React Native Web, moving to React Foundation</a></p></li><li><p>&#128064; <a href="https://github.com/react/react-native/pull/58664">RNTester moves to native UITabBarController for iPhone Duo support</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/your-skills-need-an-evaluation-mechanism">Your skills need an evaluation mechanism</a> - Direct invocation doesn&#8217;t prove discovery. Evals must test normal prompts and traces.</p></li><li><p>&#128220; <a href="https://www.dainemawer.com/shared-typescript-nextjs-expo-monorepo">Sharing a TypeScript Domain Layer Between Next.js and Expo</a> - Share types, validation schemas and thin API client. Keep navigation, UI, storage and session handling app-local.</p></li><li><p>&#128220; <a href="https://shift.infinite.red/you-dont-need-a-rewrite-expo-s-new-brownfield-react-native-story-c072b4e971dd">You Don&#8217;t Need a Rewrite: Expo&#8217;s New Brownfield React Native Story</a> - Brownfield has historically been hard, but things changed with Expo SDK 54. Covers myths vs. realities.</p></li><li><p>&#128184; <a href="https://maestro.dev/blog/maestro-mcp-for-ai-coding-agents?utm_source=this-week-in-react">Maestro MCP - Open-source MCP server for mobile UI testing with AI agents</a></p></li><li><p>&#128230; <a href="https://github.com/wcandillon/react-native-skia/releases">Skia 3.1 &#8594; 3.4 - New snapshot API, shared WebGPU instance via Dawn, tvOS and Mac Catalyst support</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.1.0">RNTL 14.1 - </a><code>fireEvent.layout</code><a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.1.0">, </a><code>userEvent.pullToRefresh</code><a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.1.0">, </a><code>userEvent.accessibilityAction</code><a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.1.0">, RN 0.88 support</a></p></li><li><p>&#128230; <a href="https://tamagui.dev/blog/version-three">Tamagui 3 - New C++ native runtime, Rust compiler, Strict DOM, flat style props, Tailwind syntax</a></p></li><li><p>&#128230; <a href="https://onestack.dev/">One 2.0 - All-in-one RN framework, Bun for cross-platform, Rust bundler, SwiftUI and Compose generated</a></p></li><li><p>&#128230; <a href="https://github.com/gmi-software/react-native-better-pdf">Better PDF 1.0 - PDFKit and PdfRenderer, Native viewer on Nitro Views, no WebView or JS in scroll path</a> - 91ms for 1,000 pages, 8x faster than react-native-pdf on large docs per author benchmark.</p></li><li><p>&#128230; <a href="https://github.com/chrispader/expo-native-variants">Expo Native Variants - Generate Xcode schemes and Android flavors using an Expo config plugin in one prebuild</a></p></li><li><p>&#128230; <a href="https://github.com/mahdidavoodi7/react-native-wifi-aware">WiFi Aware - Peer-to-peer discovery and high-bandwidth data over Wi-Fi Aware</a></p></li><li><p>&#128230; <a href="https://github.com/gronxb/hot-updater/releases/tag/v1.0.0">Hot Updater 1.0 - Shared release catalog, insights, remote config, plugins</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.30.0">Sentry 8.30 - Cellular generation in connection type, Hermes Expo trace fixes</a></p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/react-native-nano-icons-1-0-0/">Nano Icons 1.0 - Hot reload Metro plugin, native tab bar symbols, animatable size and color</a></p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/react-native-screens-4-29-0/">Screens 4.29 - iOS Tabs move to UITab API, search tab, sidebar placement, custom icons</a> - Pairs well with Nano Icons.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.28.0">Argent 0.28 - iOS launch arguments, flows over a link, failed-step screenshots</a></p></li><li><p>&#128230; <a href="https://expo.dev/changelog/native-crash-reporting-in-eas-observe">Expo Observe - Native crash reporting on Android and iOS, no setup, AI handoff</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v2.5.0">Rozenite 2.5 - Lynx project detection, XHR-first network capture, Redux action filters, agent grammar v3</a></p></li><li><p>&#128230; <a href="https://github.com/nandorojo/galeria/releases/tag/v3.1.0">Galeria 3.1 - Photo and video galleries on iOS, Android and web</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=dj6fhEwXZ6I">Callstack - Ten Agents Waiting for Input: Tzvetan Mikov on AI Coding and Hermes</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-375-rnr-explains-ota-updates">RNR 375 - RNR Explains: EAS Update</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/whatwg/html/pull/13063">HTML PR - AsyncContext integration</a> - Still TC39 stage 2, this exciting feature is actively worked on, in particular its integration with web platform APIs.</p></li><li><p>&#128227; <a href="https://deno.com/blog/cloudflare">Deno is joining Cloudflare</a> - The Deno team is joining to work on the Workers and toward making the Durable Objects programming model self-hostable. The Deno runtime and Deno Deploy will be sunset.</p></li><li><p>&#128220; <a href="https://lea.verou.me/blog/2026/icons/">The best way to use icons in Web UIs</a> - Using icons as CSS design tokens, inserted and tweaked with pseudo-elements, masks, and style queries.</p></li><li><p>&#128220; <a href="https://alfy.blog/2026/10/09/iframe-that-finally-fit-their-content.html">Iframes that finally fit their content</a> - Chrome 154 ships <code>frame-sizing: content-height</code>. Iframes can now adjust their size without the <code>postMessage</code> + <code>ResizeObserver</code> dance.</p></li><li><p>&#128220; JPEG XL finally lands in <a href="https://tonisagrista.com/blog/2026/chrome-jpegxl/">Chrome 155</a> and <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/158">Firefox 158</a>. Safari already has partial support.</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.4.3">Bun 1.4.3 - </a><code>bun check</code><a href="https://bun.com/blog/bun-v1.4.3"> type checker, 67% lower idle CPU in servers, </a><code>Bun.FetchSession</code><a href="https://bun.com/blog/bun-v1.4.3">, faster </a><code>JSON.parse</code> - Includes a port of typescript-go running 3-6x faster. No emit, no LSP. Coming next: &#120143; <code>bun lint</code><a href="https://x.com/jiahan_c/status/2109561168822251634"> with 1,000+ built-in rules</a> and &#120143; <code>bun fmt</code><a href="https://x.com/bunjavascript/status/2109861465100632567">, a 320x faster Prettier alternative</a>.</p></li><li><p>&#128230; <a href="https://github.com/pingdotgg/ts-rust">tsc-rs - Rust port of the TypeScript 7 compiler, type checker, and LSP</a> - Theo&#8217;s agent-driven port of TS, with the Effect language service diagnostics built in.</p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.64.0">Playwright 1.64 - WebMCP testing APIs, better videos (custom fps, CSS-styled actions, VP9), </a><code>--shuffle</code><a href="https://github.com/microsoft/playwright/releases/tag/v1.64.0">, </a><code>locator.within()</code></p></li><li><p>&#128230; <a href="https://pnpm.io/blog?type=releases">pnpm 12.11 &#8594; 12.13 - Agent skills linking, remote cache for task results and builds</a></p></li><li><p>&#128230; <a href="https://github.com/QwikDev/partytown/releases/tag/v1.0.0">Partytown 1.0 - Run third-party scripts in a web worker, now stable</a></p></li><li><p>&#128230; <a href="https://webkit.org/blog/18420/release-notes-for-safari-technology-preview-254/">Safari Technology Preview 254 - </a><code>calc-size()</code><a href="https://webkit.org/blog/18420/release-notes-for-safari-technology-preview-254/">, </a><code>interpolate-size</code><a href="https://webkit.org/blog/18420/release-notes-for-safari-technology-preview-254/">, CSS linked parameters, and more</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGlV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!qGlV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3658c67e-fd9b-4363-b39c-b8a6a76090b8_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-dOJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-dOJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-dOJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-dOJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-dOJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-dOJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg" width="1000" height="815" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:815,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;\&quot;Centered\&quot; content on Duo is fascinating&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="&quot;Centered&quot; content on Duo is fascinating" title="&quot;Centered&quot; content on Duo is fascinating" srcset="https://substackcdn.com/image/fetch/$s_!-dOJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-dOJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-dOJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-dOJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F480c3de5-9251-427c-9934-1b316bfac8e2_1000x815.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bILJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bILJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bILJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bILJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bILJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!bILJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg" width="796" height="1222" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1222,&quot;width&quot;:796,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How it feels to get better at AI coding&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How it feels to get better at AI coding" title="How it feels to get better at AI coding" srcset="https://substackcdn.com/image/fetch/$s_!bILJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bILJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bILJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bILJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b12b2b-2119-4130-983d-ed37afeb90a9_796x1222.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 300]]></title><description><![CDATA[Next.js, TanStack, React Foundation, Compiler, Ink, Streamdown, Shaders | Skia, Live Activities, Lucent, Voltra, Apex, Coinbase, Stim Desktop, Unistyles | TC39, e2e, Effect, Remix, h3, SvelteKit, Type]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-300</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-300</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 09 Oct 2026 12:44:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!q3Hd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>Wow, 300 issues already! Time flies, and thanks for reading along &#128591;</p><p>It&#8217;s a big week, with major releases from the Next.js and TanStack teams. We also put the spotlight on recent React Foundation activity.</p><p>On mobile, Skia 3.0 is out! Shopify and Coinbase both recently announced moving away from React Native, a trend worth watching. Callstack officially launched an AI model specialized in React Native.</p><p>There are other exciting releases to dig into, including e2e, Effect v4, and Remix v3.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Opj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Opj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2Opj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2Opj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2Opj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Opj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!2Opj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2Opj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2Opj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2Opj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14db3fcd-9a1f-4fac-8f8d-6d0596a2ecd4_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/TkDodo">Dominik Dorfmeister</a></strong><a href="https://twitter.com/TkDodo">Web Developer - React-Query maintainer</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VGtL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VGtL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VGtL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VGtL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VGtL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!VGtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg" width="1456" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Fewer findings. Only real risks.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Fewer findings. Only real risks." title="Fewer findings. Only real risks." srcset="https://substackcdn.com/image/fetch/$s_!VGtL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VGtL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VGtL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VGtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad189e06-4bb0-40e0-b666-0944d755be86_1920x1090.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://coderabbit.link/ad-twir-003">Fewer findings. Only real risks.</a></strong></p><p>AI-generated code can introduce vulnerabilities that are easy to miss in a pull request. <strong>CodeRabbit Security</strong> continuously reviews your codebase for complex bugs and security risks, using full-codebase context to follow data flows, dependencies, and patterns beyond the latest diff.</p><p><a href="https://coderabbit.link/ad-twir-003">Run CodeRabbit Security on your own repositories today</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q3Hd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q3Hd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q3Hd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q3Hd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q3Hd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!q3Hd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Next.js 16.4&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Next.js 16.4" title="Next.js 16.4" srcset="https://substackcdn.com/image/fetch/$s_!q3Hd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q3Hd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q3Hd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q3Hd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e871444-0ca8-4453-aefd-4f070b15c84f_2400x1256.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://nextjs.org/blog/next-16-4">Next.js 16.4</a></strong></p><p>Cache Components are reaching maturity and are now recommended for every Next.js app. The new programming model is enabled by default in <code>create-next-app</code>, and will become the default in v17. Partial Prefetching is now considered part of the model.</p><p>Alongside this milestone, this release introduces:</p><ul><li><p>Static guarantees: <code>export const ensureStatic</code> fails the build if dynamic content sneaks into a route.</p></li><li><p>Prefetching control: <code>await navigation()</code> excludes content from a prefetch.</p></li><li><p>Agent-guided upgrades and feedback.</p></li><li><p>React 19.3: stable View Transitions, Fragment Refs, <code>browser()</code> API.</p></li><li><p>Many DX, Turbopack, bundle size and React Compiler improvements.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lf4T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lf4T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lf4T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lf4T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lf4T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lf4T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg" width="1000" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack Charts 1.0&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack Charts 1.0" title="TanStack Charts 1.0" srcset="https://substackcdn.com/image/fetch/$s_!lf4T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lf4T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lf4T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lf4T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffdf8b39-ea70-4273-baf1-7d8fe4a9fc28_1000x563.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://tanstack.com/blog/tanstack-charts-1-0">TanStack Charts 1.0</a></strong></p><p>The new TanStack charting library is officially stable. Small bundles, fast updates, composable, type-safe. Similar to other TanStack libraries, it comes with a framework-agnostic core and a <a href="https://tanstack.com/charts/latest/docs/framework/react/adapter">React Adapter</a>.</p><p>Speaking of TanStack, see also &#120143; <a href="https://x.com/tan_stack/status/2105549976025915676">TanStack Markdown + Highlight 1.0</a>: a tiny, fast Markdown renderer for docs and AI streams, with its companion syntax highlighter. Framework-agnostic, comes with a <code>&lt;Markdown&gt;</code> component.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p><strong>React Foundation news</strong></p><p>We haven&#8217;t heard much of the React Foundation since the <a href="https://thisweekinreact.com/newsletter/285#react">launch of its website</a> in June, but that is likely to change in light of recent activity:</p><ul><li><p>&#128038; <a href="https://x.com/sethwebster/status/2105422444529963495">Barbara Markiewicz joined the React Foundation as our Director of Community</a> - Formerly at Callstack, she organized events such as React Conf and React Universe Conf.</p></li><li><p>&#128197; <a href="https://www.react.foundation/summit">React Foundation Contributors Summit - 10&#8211;12 Nov 2026, London</a> - A React Foundation gathering is scheduled next month at Meta&#8217;s King&#8217;s Cross office in London. Invite-only, but ecosystem contributors can self-apply.</p></li><li><p>&#128197; <a href="https://reactghana.react.foundation/">React Conf Ghana - 4&#8211;5 Nov 2026, Accra</a> - As far as I know, it&#8217;s the first React conference officially organized by the React Foundation.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://www.meticulous.ai/blog/lessons-from-a-decade">Testing Frontend - Lessons from over a million lines of TypeScript at Palantir - Skip component tests and let Meticulous do the rest</a></p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/97393">Next.js PR - </a><code>unstable_paramMatching</code><a href="https://github.com/vercel/next.js/pull/97393"> API - Configure matching separately from build-time prerenders</a></p></li><li><p>&#128272; <a href="https://tanstack.com/blog/tanstack-start-security-update-cve-2026-102989">TanStack Start security update: CVE-2026-102989</a> - Fixing a 9.3 XSS vulnerability.</p></li><li><p>&#128220; <a href="https://jjenzz.com/making-react-context-cheap/">Making React Context Cheap with React Compiler</a> - How to work around the lack of context selectors in React in various ways. Benchmarking 5,000 <code>&lt;input type=&#8221;radio&#8221;&gt;</code> connected to the same state, showing that the React Compiler already achieves benefits similar to context selectors.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/reacts-new-browser-api-rendering-components-only-in-the-browser">React&#8217;s New browser API: Rendering Components Only in the Browser</a></p></li><li><p>&#128230; <a href="https://github.com/vadimdemedes/ink/releases/tag/v8.0.0">Ink 8.0 - React CLI renderer - React 19.3+, scrollable Box views, any Node stream for stdio, many rendering fixes</a></p></li><li><p>&#128230; <a href="https://github.com/vercel/streamdown/releases/tag/streamdown%402.7.0">Streamdown 2.7 - AI Markdown streaming renderer - Faster, incremental code highlighting, block reuse, non-blocking Mermaid</a></p></li><li><p>&#128230; <a href="https://github.com/JoviDeCroock/stableref/releases/tag/v0.2.0">stableref 0.2 - Type-level referential stability for React/Preact - Export branded </a><code>useSyncExternalStore</code></p></li><li><p>&#128230; <a href="https://github.com/posva/medula">Medula - Headless devtools for agents, based on Devframes, React and Next.js support</a></p></li><li><p>&#128230; <a href="https://shaders.com/updates/shaders-is-open-source">Shaders - WebGPU effects as components for React, Vue, Svelte, Solid and JavaScript</a></p></li><li><p>&#128230; <a href="https://github.com/pmndrs/klipp">Klipp - Camera toolkit for the web, comes with React Three Fiber bindings</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0bfr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0bfr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0bfr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0bfr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0bfr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0bfr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!0bfr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0bfr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0bfr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0bfr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35cade5-0de1-468c-b543-12729bb03d76_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Mjr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Mjr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5Mjr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5Mjr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5Mjr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Mjr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How Sentry debugs its own AI agents (live, Oct 14)&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How Sentry debugs its own AI agents (live, Oct 14)" title="How Sentry debugs its own AI agents (live, Oct 14)" srcset="https://substackcdn.com/image/fetch/$s_!5Mjr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5Mjr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5Mjr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5Mjr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446f61d-c118-4b15-8983-6f133e1af9d5_1200x628.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://sentry.io/resources/agent-tracing-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=agenttracing-fy27q3-agenttracingseries&amp;utm_content=newsletter-secondary-workshop-2-register">How Sentry debugs its own AI agents (live, Oct 14)</a></strong></p><p>Your AI feature works in the demo. In prod, users get weird answers and you can&#8217;t tell which step broke.</p><p>On <strong>October 14</strong>, Ryan and Serge show how Sentry engineers debug the agents behind Sentry&#8217;s own AI features, with real production traces. &#128269; You&#8217;ll see:<br>&#9989; How they instrument and trace their agents<br>&#9989; How <strong>user frustration</strong> signals point to broken runs<br>&#9989; How to find failures when there are too many traces to read one by one</p><p><a href="https://sentry.io/resources/agent-tracing-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=agenttracing-fy27q3-agenttracingseries&amp;utm_content=newsletter-secondary-workshop-2-register">&#128073; </a><strong><a href="https://sentry.io/resources/agent-tracing-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=agenttracing-fy27q3-agenttracingseries&amp;utm_content=newsletter-secondary-workshop-2-register">Save your spot</a></strong></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LZez!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LZez!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LZez!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LZez!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LZez!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!LZez!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg" width="1337" height="752" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:752,&quot;width&quot;:1337,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Skia 3.0&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Skia 3.0" title="Skia 3.0" srcset="https://substackcdn.com/image/fetch/$s_!LZez!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LZez!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LZez!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LZez!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5466f198-601d-4baa-93eb-346c454cc2b7_1337x752.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#127909; <strong><a href="https://www.youtube.com/watch?v=L-PNQi1nBSA">React Native Skia 3.0 - Hello Graphite</a></strong></p><p>William Candillon just shipped the biggest release of React Native Skia to date!</p><p>Version 3.0 is rebuilt on <strong>Skia Graphite</strong>, Skia&#8217;s new backend for modern GPU APIs. The old OpenGL-centric design came with stability and performance pains. Graphite fixes both. And because its design is symmetric with WebGPU, Skia and the rest of the web ecosystem can now run together on the same GPU.</p><p>Here&#8217;s what that brings:</p><ul><li><p><strong>Multi-threading by default</strong> - A Skia drawing can be created on any dedicated thread. Only presenting the work runs on the UI thread.</p></li><li><p><strong>Symmetric with WebGPU</strong> - React Native Skia and React Native WebGPU share the same WebGPU instance.</p></li><li><p><strong>Zero-copy Three.js interop</strong> - A Three.js scene can be used as a regular Skia image with Skia effects on top, and Skia can draw onto Three.js scenes.</p></li><li><p><strong>Video &amp; camera on GPU</strong> - <code>importExternalTexture</code> brings video and camera feeds into Skia zero-copy, easy on the battery.</p></li><li><p><strong>Lottie on WebGPU</strong> - Customizable Lottie animations, now with video imports.</p></li><li><p><strong>Android platform work</strong> - An experimental CanvasView (API 29+) and view snapshotting over WebGPU.</p></li></ul><p>The release is mostly backward compatible with v2, except for the system requirements: Android minSDK is now 26, and OpenGL is no longer supported (Vulkan only).</p><p>Shopify will keep <a href="https://x.com/mustafa01ali/status/2107530860555608339">sponsoring the project until the end of the year</a>, despite migrating its apps away from React Native.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-oct7">PostHog - Why we rebuilt our data warehouse on DuckDB over ClickHouse</a></p></li><li><p>&#128038; <a href="https://x.com/mustafa01ali/status/2105705415111835745">Coinbase is going native too</a> - After last week&#8217;s announcement from Shopify, this time it&#8217;s Coinbase announcing it&#8217;s migrating away from React Native. We have seen a few devs here and there reporting that today developing 2 native apps and keeping them in sync is becoming easier. Let&#8217;s see how this trend evolves!</p></li><li><p>&#128220; <a href="https://newsletter.pragmaticengineer.com/p/shopify-native-mobile">Why has Shopify dropped React Native?</a> - A deep dive into the decision process about moving away from RN, and why migration to the New Architecture was not enough.</p></li><li><p>&#128220; <a href="https://www.lucent-lang.dev/blog/native-views/">Native views in TypeScript: SwiftUI and Jetpack Compose from Lucent</a> - React Native renders through a host tree; Lucent compiles the JSX away entirely.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/live-activities-with-expo-end-to-end-client-and-backend">Live Activities with Expo, End-to-End: Client and Backend</a> - A missing manual on how to implement Live Activities, its gotchas, including backend.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/introducing-mobile-dev-full-mobile-dev-tooling-right-in-your-codex-app">Introducing Mobile Dev: full mobile dev tooling right in your Codex app</a> - An agent supervision tooling with Simulator, Instruments, logcat, and Metro, all in one place.</p></li><li><p>&#128184; <a href="https://patch.codemagic.io/?utm_source=newsletter&amp;utm_medium=referral&amp;utm_campaign=twir">Codemagic Patch - Self-hosted OTA updates, complete with fingerprinting, release metrics and online dashboard</a></p></li><li><p>&#128230; <a href="https://stim.appandflow.com/docs/desktop">Stim Desktop 0.1 - Watch and steer your agents&#8217; React Native work: live devices, replay, logs, build cache stats</a></p></li><li><p>&#128230; <a href="https://github.com/JoaoPauloCMarra/react-native-nitro-markdown/releases/tag/v0.14.0">Nitro Markdown 0.14 - RaTeX math rendering now optional dependency, RN 0.77 floor, streaming/StrictMode fixes</a></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-2-11-0">Maestro CLI 2.11 - Android 17 support, video scrubbing fixes, YAML validation changes</a></p></li><li><p>&#128230; <a href="https://github.com/jpudysz/react-native-unistyles/releases/tag/v3.5.0">Unistyles 3.5.0 - Theme propagation fixes, reload memory leaks, frozen screens no longer blocking JS</a></p></li><li><p>&#128230; <a href="https://reactnativefeel.com/deploy">React Native Deploy - EAS-compatible builds on GitHub Actions runners, free for public repos</a></p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/react-native-enriched-markdown-1-1-0/">React Native Enriched Markdown 1.1 - Notion-like input shortcuts, native video rendering, GitHub admonitions, nestable block quotes, </a><code>numberOfLines</code><a href="https://swmansion.com/changelog/react-native-enriched-markdown-1-1-0/">, and more</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.29.0">Sentry React Native 8.29 - Swift Package Manager integration</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v2.4.0">Voltra 2.4 - Android improvements, native modifiers for SwiftUI and Jetpack Glance</a></p></li><li><p>&#128230; <a href="https://github.com/shergin/baton">Baton - Relay GraphQL client for SwiftUI and Compose</a></p></li><li><p>&#128230; <a href="https://github.com/DorianMazur/react-native-screen-choreography/releases/tag/v0.7.0">Screen Choreography 0.7 - Hybrid transition handoff, transition preparation overlay, .0</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.8.0">Nitro Fetch 1.8 - Support request priority, support </a><code>formData()</code><a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.8.0"> for urlencoded Request/Responsed</a></p></li><li><p>&#129302; <a href="https://www.callstack.com/blog/apex-agetic-coding-for-mobile-and-web-spcialied-in-react">Apex - Agentic coding model specialized in React - Now generally available</a> - Callstack coding agent shines for React Native and Next.js development.</p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-374-building-dreaming-language-learning-with-react-native">RNR 374 - Building &#8220;Dreaming: Language Learning&#8221; with React Native</a></p></li></ul><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/microsoft/TypeScript/issues/63703">TypeScript 7.1 - Iteration Plan - Support for LSP, Content Mapper, Emit APIs, and more</a> - The beta is delayed but should come out soon. This should unlock support for <a href="https://github.com/typescript-eslint/typescript-eslint/issues/10940#issuecomment-5900712238">TS7 in TypeScript-ESLint</a>.</p></li><li><p>&#128064; <a href="https://bsky.app/profile/robpalmer.bsky.social/post/3mwshmpvhak24">TC39 - 116th meeting outcome</a> - JS proposals progressing include Composites, new Iterator methods, <code>export defer</code>, JSON parse options, and more.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/articles/the-remix-way">The Remix Way</a> - Pragmatic feedback after rebuilding a personal blog and 10 other apps on Remix v3 over 6 months.</p></li><li><p>&#128220; <a href="https://charpeni.com/blog/enforcing-best-practices-with-jev-as-a-linter">Enforcing Best Practices with Jev as a Linter</a> - Turns plain-English best practices into Oxlint rules using Jev.</p></li><li><p>&#128230; <a href="https://github.com/tester-army/e2e">e2e - Next-generation agentic end-to-end testing framework for web and mobile apps</a> - This lets you define actions and assertions in plain language, that you can interleave with more classic deterministic APIs. Model responses are cached so repeated runs are fast and inexpensive. The engine seems quite flexible, it can probably adapt to any UI. Interesting idea: it should help make tests more portable and less fragile, not relying on selectors or accessibility roles.</p></li><li><p>&#128230; <a href="https://effect.website/blog/releases/effect/40">Effect 4.0 - Fully rebuilt, dependency-free core, long-term support</a> - Effect is gaining momentum as a way to make your TypeScript code more robust, providing additional guardrails for humans and AI agents. Up to 5x smaller bundles now make it even more compelling for client-side code. See also the now-official <a href="https://effect.website/docs/v4/api/atom-react">Effect Atom React</a> bindings for state management.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog">pnpm 12.9 &amp; 12.10 - experimental &#8216;loaded&#8217; linker, resolution settings in lockfile, StackBlitz WebContainers support, per-registry concurrency, faster caching, security fixes</a></p></li><li><p>&#128230; <a href="https://h3.dev/blog/v2">h3 2.0 - Minimal HTTP server framework for high performance, portability and composability</a></p></li><li><p>&#128230; <a href="https://svelte.dev/blog/sveltekit-3-is-here">SvelteKit 3.0 - Svelte meta-framework for rapidly developing robust, performant web applications</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=TaKBQnYm9tM">Remix Jam 2026</a> - Conference announcing the first stable release of Remix v3.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9luh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!9luh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!9luh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e304c8-5d87-4f16-88b4-2210ab28e9a6_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cBh9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cBh9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cBh9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cBh9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cBh9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!cBh9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg" width="1164" height="458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:1164,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!cBh9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cBh9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cBh9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cBh9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d0c1a0e-197c-4a59-8415-085be7ce161e_1164x458.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n8lH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n8lH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!n8lH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!n8lH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!n8lH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n8lH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg" width="832" height="1394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1394,&quot;width&quot;:832,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!n8lH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!n8lH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!n8lH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!n8lH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a34a367-c47e-4d4b-8191-f37fbe3fc064_832x1394.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 299]]></title><description><![CDATA[Panda, Vinext, Next.js, Preact, Design Systems, RTK | Variable font, Activity Result, Lynx, Lucent, macOS, Plain Text, Navigation, Angular Native, Re.Pack | TC39, Composites, WebSkills, MSW, upm, pnp]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-299</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-299</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Mon, 05 Oct 2026 13:47:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NKo7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week we have 2 major releases in the React ecosystem: Panda CSS v2 and Vinext v1.</p><p>On the mobile side, RN is getting support for variable font and Android Activity Result. Lynx v4 is out. Lucent is a new way to write native modules.</p><p>I&#8217;m particularly excited about the TC39 meeting happening right now. Many proposals progressed, including my favorite one: Composites moved to stage 2!</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6zLY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6zLY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6zLY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6zLY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6zLY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!6zLY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!6zLY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6zLY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6zLY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6zLY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7570a32c-4ab6-42c2-9036-9c5d02bd9d7d_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/jherr">Jack Herrington</a></strong><a href="https://twitter.com/jherr">Principal Engineer - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7BgP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7BgP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7BgP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7BgP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7BgP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!7BgP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The React framework for MCP Apps&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The React framework for MCP Apps" title="The React framework for MCP Apps" srcset="https://substackcdn.com/image/fetch/$s_!7BgP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7BgP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7BgP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7BgP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54532485-b055-4859-810d-86b3b9d78024_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.skybridge.tech/?utm_source=ThisWeekInReact&amp;utm_medium=newsletter">The React framework for MCP Apps</a></strong></p><p>MCP apps let you display interactive UI directly inside AI assistants like ChatGPT or Claude. Use the Skybridge framework to build your MCP app from a single React codebase and reach every platform.</p><p>Type-safe end to end, hot reload, a local emulator for ChatGPT and Claude, and useful ecommerce &amp; travel templates to start from.<br>Agent ready, live in 5 seconds &amp; trusted by teams at PGA of America and Datadog. 100K+ npm downloads a month.<br><strong>npm create skybridge</strong> &#183; <a href="https://www.skybridge.tech/">Read the docs</a> &#183; <a href="https://github.com/alpic-ai/skybridge">Star on GitHub</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NKo7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NKo7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NKo7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NKo7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NKo7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!NKo7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Panda CSS 2.0 - Same styling API, a new engine underneath&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Panda CSS 2.0 - Same styling API, a new engine underneath" title="Panda CSS 2.0 - Same styling API, a new engine underneath" srcset="https://substackcdn.com/image/fetch/$s_!NKo7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NKo7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NKo7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NKo7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd4d7a1c-817d-4f2c-9628-a2d7b6748298_1200x630.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://panda-css.com/blog/panda-css-v2">Panda CSS 2.0 - Same styling API, a new engine underneath</a></strong></p><p>This new major version of the type-safe, build-time CSS-in-JS library is the biggest update since launch. Here&#8217;s what you need to know:</p><ul><li><p>The CSS authoring experience doesn&#8217;t change much.</p></li><li><p>The compiler has been rewritten in Rust on top of Oxc.</p></li><li><p>DX and builds get dramatically faster, and output better CSS.</p></li><li><p>With source transforms, Panda integrates with the bundler so that <code>css()</code>, style props, recipes and patterns are compiled to plain class strings at build time. <a href="https://panda-css.com/blog/zero-runtime-all-the-way-down">The styling runtime disappears from your bundle</a>, not just the style-insertion logic.</p></li><li><p>You get many new features to play with: a <a href="https://panda-css.com/blog/typography-preset">typography preset</a>, publishing your Panda design system and <a href="https://panda-css.com/blog/see-your-design-system">visualize it in Studio</a>, new CSS functions, a better CLI, an official ESLint plugin, and more</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jlNO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jlNO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jlNO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jlNO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jlNO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jlNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Vinext 1.0 - Next.js applications, powered by Vite&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Vinext 1.0 - Next.js applications, powered by Vite" title="Vinext 1.0 - Next.js applications, powered by Vite" srcset="https://substackcdn.com/image/fetch/$s_!jlNO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jlNO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jlNO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jlNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d91ccc-cd32-4ef5-a6ec-f0da7544e01a_1200x628.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://blog.cloudflare.com/vinext-nextjs-on-vite/">Vinext 1.0 - Next.js applications, powered by Vite</a></strong></p><p>Cloudflare&#8217;s Vite-based reimplementation of Next.js goes stable, supports both App and Pages Router and claims 99%+ compatibility with the Next.js test suite (minus Cache Components). They also have a different opinion of how ISR should work.</p><p>What started as a one-off slopfork experiment is now becoming an AI-driven software factory able to keep up with new features landing in the official Next.js implementation. Interesting time!</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-sept30">PostHog - I wrote a 70x faster SQL parser while barely looking at the code</a></p></li><li><p>&#128272; <a href="https://nextjs.org/blog/september-2026-security-release">Next.js September Security - 16.3.8 and 15.5.27</a> - New security releases, covering 1 critical, 2 high, 5 medium vulnerabilities.</p></li><li><p>&#128467;&#65039; <a href="https://reactsummit.us/?utm_source=thisweekinreact">React Summit US</a> - &#127482;&#127480; New York &#8211; Nov 17 &amp; 20. Join the creator of React Query, the Executive Director of the React Foundation, and other amazing speakers to dive into the React ecosystem. Save 10% on your ticket with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/">GitHub - Improving site performance by shipping more CSS</a> - The multi-year story of an incremental migration from styled-components to CSS modules.</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/rebuilding-react-routers-global-hooks-in-nextjs/">Rebuilding React Router&#8217;s Global Hooks in Next.js</a> - Explains how Next.js and React Router chose to manage state differently. Next.js has no <code>useNavigation()</code> or <code>useBlocker()</code> but you can rebuild them with a Context provider.</p></li><li><p>&#128220; <a href="https://vitonsky.net/blog/2026/09/18/design-system/">Props Are Not a Design System</a> - Style props and Tailwind class walls are just inline styles in disguise. Use named variants and modifiers instead.</p></li><li><p>&#128220; <a href="https://claude.dev/blog/how-we-made-claude-ai-faster/">How we made claude.ai 3x faster in two weeks</a> - Practical AI-driven perf work on a real React codebase. For example, their client-side app now renders a static composer so users can type before React even initializes. React commit counts, among many other metrics, serve as deterministic benchmarks for agents.</p></li><li><p>&#128220; <a href="https://tannerlinsley.com/posts/ai-open-source-and-the-long-road-to-tanstack-charts">AI, Open Source, and the Long Road to TanStack Charts</a> - Recap of an X Space with Tanner Linsley. Not directly actionable, but interesting to see how he built a new charting library with AI in less than a week, reusing years of experience with Chart.js, react-charts, and Observable Plot.</p></li><li><p>&#128220; <a href="https://nitayneeman.com/blog/how-to-sync-a-design-system-with-claude-design/">How to Sync a Design System with Claude Design</a></p></li><li><p>&#128230; <a href="https://preactjs.com/blog/preact-11/">Preact 11.0 - ESM-only, TS 5.1+, Hydration 2.0 with streaming SSR, refs as props, Object.is hook deps, React compat improvements</a> - The first major in 6+ years, shipping necessary breaking changes to move the project forward.</p></li><li><p>&#128230; <a href="https://react-resizable-panels.vercel.app/examples/grid-basics">React Resizable Panels 4.14 - Grid layout components</a></p></li><li><p>&#128230; <a href="https://github.com/reduxjs/redux-toolkit/releases/tag/v2.13.0">Redux Toolkit 2.13 - TypeScript 7 support, long list of bug fixes, new unified docs site</a></p></li><li><p>&#128230; <a href="https://github.com/oxc-project/oxc/releases/tag/oxlint_v1.86.0">Oxlint 1.86 - </a><code>only-export-components</code><a href="https://github.com/oxc-project/oxc/releases/tag/oxlint_v1.86.0"> now supports compound component, 2 React Compiler fixes</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=eFFH_4aD6Ig">James Quick - Vinext 1.0 - A New Alternative to Next.js</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pdkD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pdkD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pdkD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pdkD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pdkD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!pdkD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!pdkD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pdkD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pdkD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pdkD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffda25bfc-7d2d-4c19-af45-a642f3b85648_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/Baconbrix">Evan Bacon</a></strong><a href="https://twitter.com/Baconbrix">Engineering Manager - Expo</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-A-w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-A-w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-A-w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-A-w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-A-w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-A-w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Margelo &#8211; High-Performance React Native Engineering&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Margelo &#8211; High-Performance React Native Engineering" title="Margelo &#8211; High-Performance React Native Engineering" srcset="https://substackcdn.com/image/fetch/$s_!-A-w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-A-w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-A-w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-A-w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb434c577-b1af-44c9-97fa-4b2629a7669b_5000x2500.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://margelo.com/">Margelo &#8211; High-Performance React Native Engineering</a></strong></p><p>Margelo builds and maintains some of React Native&#8217;s most widely used <strong>open-source</strong> technologies, with 441M+ downloads across our projects. We&#8217;re the team behind <strong>VisionCamera, react-native-mmkv</strong> and <strong>Nitro Modules</strong>. Chances are high that you&#8217;re already running some of our code.</p><p>Performance is at the core of what we build. We work deep in the stack, from JSI and C++ to Swift, Kotlin and React Native&#8217;s New Architecture. We bring that expertise to companies too. At Discord we helped tackle performance bottlenecks in its New Architecture migration. Among other improvements, we reduced the Android app&#8217;s crash rate by 36% and jank frame rate by 26%, bringing jank back to regular levels.</p><p>Want to see how? <a href="https://margelo.com/blog/margelo-discord-react-native-performance">Read the technical deep dive on our blog</a> and learn more about what we do.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://deploypulse.io/">DeployPulse - Hosted OTA updates for React Native. A drop-in replacement for CodePush and EAS Update.</a></p></li><li><p>&#128214; <a href="https://reactnative.dev/docs/next/text-style-props#fontvariationsettings">React Native docs - </a><code>fontVariationSettings</code><a href="https://reactnative.dev/docs/next/text-style-props#fontvariationsettings"> - Variable font support</a> - RN 0.88 will support configuring variation axes of a variable font.</p></li><li><p>&#128220; <a href="https://www.matinzd.dev/blog/activity-result-api-for-react-native-modules/">React Native Modules Cannot Use Android&#8217;s Activity Result API</a> - Modules load after the Activity starts, so the modern API was unusable from native code. Fix is coming in RN 0.89. No manual setup of <code>MainActivity</code> steps needed.</p></li><li><p>&#128220; <a href="https://afonsojramos.me/blog/super-calendar/">Shipping super-calendar</a> - A story about building a performant solution for RN and web. Virtualized rendering of visible dates only, and Reanimated shared values to skip re-renders.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/5-react-native-enriched-html-use-cases-you-might-not-know-about/">5 react-native-enriched-html Use Cases You Might Not Know About</a> - More than a rich text editor: text processing like the emoji picker runs fully native, avoiding JS-side FPS drops on low-end devices.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/agentic-ci-for-expo-apps-with-testerarmy">Agentic CI for Expo apps with TesterArmy</a> - Code output outpaced review capacity, so merges ship with low confidence. Testing like a real user using agents restores it.</p></li><li><p>&#128184; <a href="https://maestro.dev/blog/mobile-ui-testing-with-coding-agents?utm_source=this-week-in-react">Maestro MCP - A practical guide to mobile UI testing with coding agents</a></p></li><li><p>&#128230; <a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation%2Fcore%407.23.0">React Navigation 7.23 - Add </a><code>tabBarRepeatedPressBehavior</code> - Defines the behavior when pressing an already-focused tab. Can scroll content to top and/or pop nested stack screens.</p></li><li><p>&#128230; <a href="https://lynxjs.org/next/blog/lynx-4-0">Lynx 4.0 - Foldables, Media Queries, Liquid Glass &amp; Blur, WebView, ReactLynx improvements, Generative UI</a></p></li><li><p>&#128230; <a href="https://github.com/Fausto95/lucent">Lucent - Write native modules in TypeScript, compiled to C++ and called through JSI</a></p></li><li><p>&#128230; <a href="https://github.com/microsoft/react-native-macos/releases/tag/react-native-macos%400.83.0">React Native macO 0.83</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/appduct">Appduct - Expose app tools to agents and tests, no debug menus in the binary</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-sqlite/releases/tag/v10.0.0">Nitro SQLite 10 - Independent database handles, reusable prepared statements, macOS support</a></p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/releases/tag/v3.6.0">Legend List 3.6 - Add </a><code>viewPositionFallback</code><a href="https://github.com/LegendApp/legend-list/releases/tag/v3.6.0"> for oversized list items</a></p></li><li><p>&#128230; <a href="https://github.com/ng-native/ng-native">Angular Native - Build native iOS and Android apps with Angular, built and shipped with Expo</a></p></li><li><p>&#128230; <a href="https://github.com/bhyoo99/react-native-nitro-rtmp">Nitro RTMP - Live streaming as a VisionCamera 5 output</a></p></li><li><p>&#128230; <a href="https://github.com/mdjastrzebski/react-native-plain-text/releases/tag/v0.9.0">Plain Text 0.9 - Faster, drop-in remplacement for Text component, proper hyphenation, writingDirection</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/repack/releases/tag/%40callstack/repack%405.4.0">Re.Pack 5.4 - Lazy per-platform Rspack builds, unified commands entry point, RN 0.87 support</a></p></li><li><p>&#128230; <a href="https://www.reactvision.xyz/updates/viroreact-3-0-0-five-platforms-one-codebase/">ViroReact 3.0 - visionOS, Web AR, co-location multiplayer, Studio and MCP tooling</a></p></li><li><p>&#128230; <a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.13.0">Skia 2.13 - Legacy architecture support removed, </a><code>android.surfaceType</code><a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.13.0"> to select the backing view, SPM support</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.28.0">Sentry 8.28 - Native breadcrumb off-switches, PII accessibility identifier opt-out, MetricKit raw payloads</a></p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/releases/tag/v3.5.0">Legend List 3.5 - scrollElement to share an ancestor scrollbar on web, less layout work for single-column lists</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.26.0">Argent 0.26 - iPhone Duo simulator support, clearer simulator-server exit errors, Xcode Device Hub for booted simulators</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.21.15">Agent Device 0.21.15 - iOS 27 SDK and Xcode 27 support, visionOS simulators, richer Android accessibility snapshots</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128038; <a href="https://x.com/search?q=from%3Arobpalmer2%20ECMAScript%20excitement&amp;src=typed_query&amp;f=live">TC39 meeting live updates - Progress for Composites, Iterator methods, export defer, and more</a> - Among many other interesting JS proposals, my favorite one progressed! Composites are objects compared by value instead of identity, using interning. This is kind-of the &#8220;new version&#8221; of the former Records &amp; Tuples proposal.</p></li><li><p>&#128064; <a href="https://github.com/kevinmoch/web-skill">WebSkills</a> - A Huawei contributor recently pitched this at a W3C seminar, and W3C could incubate the project for a future standardization. Agent Skills, stored in the browser, running scripts in Web Worker sandboxes. Very early, but this could complete WebMCP and On-Device AI.</p></li><li><p>&#128220; <a href="https://adventures.nodeland.dev/archive/optimizing-objects-with-null-prototypes/">Optimizing objects with null prototypes</a> - Using null-prototype objects in hot paths can be a perf bottleneck for V8. Matteo works on Node.js WebStream optimisations, and just changing how those objects are created led to significant perf improvements.</p></li><li><p>&#128220; <a href="https://pepelsbey.dev/articles/svg-link-params/">CSS linked parameters - One SVG, nine posters</a> - Upcoming CSS feature to style an <code>&lt;img&gt;</code> SVG directly from the page CSS. Can be used today as a progressive enhancement.</p></li><li><p>&#128220; <a href="https://kettanaito.com/blog/electron-to-pwa-and-back-again">Electron to PWA: There and Back Again</a> - PWA still can&#8217;t deliver basic desktop app expectations.</p></li><li><p>&#128230; <a href="https://voidzero.dev/posts/announcing-vite-plus-1-0">Vite+ 1.0 - A single </a><code>vp</code><a href="https://voidzero.dev/posts/announcing-vite-plus-1-0"> command to manage your Node.js runtime, package manager, and frontend toolchain</a></p></li><li><p>&#128230; <a href="https://upm.sh/">upm - A fast, tiny package manager for the npm registry</a> - Written in TypeScript, yet as fast as Rust alternatives.</p></li><li><p>&#128230; <a href="https://mswjs.io/blog/introducing-msw-3.0">Mock Service Worker 3.0 - Smaller, ESM-only, granular entrypoints, GraphQL subscriptions, Network API, socket-level Node.js interception</a> - There&#8217;s also a <a href="https://mswjs.io/guides/integrations/react-native">new package to integrate with React Native</a>.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/12.7">pnpm 12.7 - node shim follows </a><code>.nvmrc</code><a href="https://pnpm.io/blog/releases/12.7">, install </a><code>--allow-build</code><a href="https://pnpm.io/blog/releases/12.7"> flag, wait for published packages to become available</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FOb5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FOb5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97a567bb-b439-4826-9b9a-66d015d1daaa_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rlTp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rlTp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rlTp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rlTp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rlTp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!rlTp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg" width="966" height="1396" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1396,&quot;width&quot;:966,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!rlTp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rlTp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rlTp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rlTp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52be7a6a-2752-497a-bf12-22bb3020ad9e_966x1396.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZtBV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZtBV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZtBV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZtBV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZtBV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZtBV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg" width="1456" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!ZtBV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZtBV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZtBV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZtBV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd443bea-729f-49d8-a438-a333eb3f5c77_1470x428.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 298]]></title><description><![CDATA[Astro, Redux, img, Hotkeys, R3F, Next.js, AI, Redact | Reanimated, Worklets, Helix, Screens, SecondaryRuntime, Arrangement View, View Shot | TC39, Node, pnpm, Turborepo, jsdom, responsive iframe]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-298</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-298</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 25 Sep 2026 12:57:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d5f110ee-844e-42cf-afa2-ec4a644aeb18_3000x1400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week is rather quiet on the web side. Astro&#8217;s React integration keeps ramping up. Redux is working on significant performance improvements for large apps.</p><p>On mobile, we still have a steady flow of interesting releases. Reanimated enabled its new layout engine by default. Shopify presented Helix, its internal tool to move away from RN. Xcode project format is finally moving to JSON!</p><p>We asked on &#120143;: <a href="https://x.com/sebastienlorber/status/2101990551457263880">do average devs still care about React?</a><br>Thanks to everyone who answered our existential question!<br>If fewer devs care about implementation details and React, <strong>what&#8217;s the future of this newsletter</strong>? &#129335;&#8205;&#9794;&#65039;<br>Reply by email and tell us how we can best serve you in this new AI-driven world.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hA4o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hA4o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hA4o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hA4o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hA4o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hA4o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!hA4o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hA4o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hA4o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hA4o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0658ff7-0807-4a0b-9d05-ad1e5e15de02_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Gap!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Gap!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6Gap!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6Gap!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6Gap!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Gap!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;PlanetScale: The database that gets faster as you sleep&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="PlanetScale: The database that gets faster as you sleep" title="PlanetScale: The database that gets faster as you sleep" srcset="https://substackcdn.com/image/fetch/$s_!6Gap!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6Gap!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6Gap!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6Gap!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51965729-f513-437c-aa46-5792cdf27bf1_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://planetscale.com/?utm_source=this_week_in_react&amp;utm_medium=email&amp;utm_campaign=2026_q3_this_week_in_react&amp;utm_content=slot_1">PlanetScale: The database that gets faster as you sleep</a></strong></p><p>Agents ship React features faster than ever. They also ship unindexed queries, N+1s, and schema decisions made at 2am by a model that will never get paged.</p><p>Fortunately, agents can <em>fix</em> database problems too. They just need production data, and that&#8217;s what the PlanetScale MCP server gives them. Hook up an agent, and the loop looks like this:</p><ul><li><p>PlanetScale flags a slow query</p></li><li><p>The agent traces it back to the code in your repo</p></li><li><p>The agent opens a PR with the fix</p></li><li><p>You review and merge</p></li></ul><p>Run it once, or put it on a schedule.</p><p>Underneath it all: the fastest, most scalable cloud Postgres and MySQL, with options like PlanetScale Metal when you need peak performance. Fast databases, fast React apps.</p><p><strong><a href="https://planetscale.com/docs/connect/self-improving-database/?utm_source=this_week_in_react&amp;utm_medium=email&amp;utm_campaign=2026_q3_this_week_in_react&amp;utm_content=slot_1">Try the self-improving database</a></strong></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128064; <a href="https://react.dev/reference/react-dom/components/img">React docs - New </a><code>&lt;img&gt;</code><a href="https://react.dev/reference/react-dom/components/img"> API ref page</a> - The humble image component does more than just displaying images. It also generates preload hints during SSR by default, and integrates nicely with <code>&lt;ViewTransition&gt;</code> animations.</p></li><li><p>&#128064; <a href="https://github.com/react/react/pull/37636">React Flight PR - Server References for arbitrary object types</a> - Experimental Flight protocol feature, enabling Server References to point to an object and not just a function.</p></li><li><p>&#128272; <a href="https://nextjs.org/blog/nextjs-security-update-september-22-2026">Next.js 16.3.6 - Security Update</a> - Fixing a critical remote code execution vulnerability for those using <code>ImageResponse</code> with the Node runtime with dynamic user-controlled SVG inputs.</p></li><li><p>&#128467;&#65039; <a href="https://reactadvanced.com/?utm_source=thisweekinreact">React Advanced London</a> - &#127468;&#127463; London - 23 &amp; 26 Oct. Last call for London&#8217;s most in-depth React conference! Two days, 50+ advanced sessions, next to Big Ben. Don&#8217;t miss it&#8212;get 10% off with code &#8220;TWIR.</p></li><li><p>&#128220; <a href="https://brookslybrand.com/posts/do-frameworks-matter-anymore/">Do Frameworks Matter Anymore?</a> - If LLMs are great at React but nobody reads the <code>.tsx</code> files anymore, why even use an abstraction? Will the industry stick with React forever, or is there room for platform primitives (Web Components) and new ideas (Remix 3)? Kinda related to my existential crisis. &#128518;</p></li><li><p>&#128220; <a href="https://hackernoon.com/react-activity-when-a-render-no-longer-guarantees-an-effect">React Activity: When A Render No Longer Guarantees an Effect</a> - Blindly replacing conditional rendering with <code>&lt;Activity&gt;</code> can expose subtle bugs in legacy code relying on the render/Effect/cleanup sequence.</p></li><li><p>&#128220; <a href="https://tj-zhang.com/blog/frontend-for-systems-engineers/">Frontend for systems engineers</a> - Explains React through familiar systems concepts</p></li><li><p>&#128230; <a href="https://docs.astro.build/en/guides/integrations-guide/react/#upgrading-the-react-integration-to-v700">Astro React 7.0 - Replaces Babel with Oxc, upgrades to Vite Plugin React v6</a> - It now has opt-in support for the React Compiler through Oxc experimental support.</p></li><li><p>&#128230; <a href="https://github.com/reduxjs/react-redux/releases/tag/v9.4.0-alpha.0">React Redux 9.4 alpha - </a><code>useSignalSelector()</code><a href="https://github.com/reduxjs/react-redux/releases/tag/v9.4.0-alpha.0"> hook, </a><code>&lt;SignalProvider&gt;</code><a href="https://github.com/reduxjs/react-redux/releases/tag/v9.4.0-alpha.0"> component, </a><code>react-redux/signals</code><a href="https://github.com/reduxjs/react-redux/releases/tag/v9.4.0-alpha.0"> entrypoint</a> - Drop-in optimization for large apps with thousands of connected components. Opt-in, but +7kB gzip. A proxy tracks selector state access, so only affected selectors re-run on dispatch.</p></li><li><p>&#128230; <a href="http://releases/">Redact 0.1 - Add React 19.3 APIs, improve runtime compatibility, keep sync rendering contract</a>- TanStack&#8217;s lightweight, synchronous reimplementation of React is now on GitHub and ships its first minor.</p></li><li><p>&#128230; <a href="https://github.com/pmndrs/react-three-fiber/releases/tag/v9.8.0">React Three Fiber 9.8 - Support for React 19.3, roots configured synchronously, Strict Mode fixed</a> - For 3D enthusiasts, Poimandres also released <a href="https://github.com/pmndrs/glyph">Glyph</a>, a GPU-first typography engine with R3F bindings.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/hotkeys/releases/tag/%40tanstack%2Freact-hotkeys%400.11.0">TanStack React Hotkeys 0.11 - Improved physical key support, recorder validation, conflict detection, cross-layout fixes</a></p></li><li><p>&#128230; <a href="https://www.react-simple-maps.io/">React Simple Maps 5.0 - Composable SVG map charts for data visualization in React</a></p></li><li><p>&#128230; <a href="https://bsky.app/profile/bvaughn.me/post/3mvxpohs3vs2n">React Resizable Panels 4.13 - Deferred panel resizing, panel expand/collapse threshold</a></p></li><li><p>&#128230; <a href="https://github.com/BetterTyped/react-zoom-pan-pinch/releases/tag/v4.2.0">react-zoom-pan-pinch 4.2 - Zooming, panning, pinching images and html elements, the easy way</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fQ6x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fQ6x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fQ6x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fQ6x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fQ6x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!fQ6x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!fQ6x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fQ6x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fQ6x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fQ6x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ef7618-005a-4886-adb2-e108ebdd47d3_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/jherr">Jack Herrington</a></strong><a href="https://twitter.com/jherr">Principal Engineer - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ixGt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ixGt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ixGt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ixGt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ixGt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ixGt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg" width="1456" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Your first React Native OTA can be a diff&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Your first React Native OTA can be a diff" title="Your first React Native OTA can be a diff" srcset="https://substackcdn.com/image/fetch/$s_!ixGt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ixGt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ixGt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ixGt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55ce86e-5f1f-4506-a33e-758ee768c473_3182x1502.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://revopush.org/react-native-ota-payloads-binary-diffs?utm_source=this_week_in_react">Your first React Native OTA can be a diff</a></strong></p><p><a href="https://revopush.org/">Revopush OTA</a> reuses the hermes bundle and assets already in your IPA and APK.</p><p>Even the first OTA after a native release can contain only the changes.</p><p>In one production release, an 18 Mb full package became <strong>100 to 500 Kb</strong> patches.</p><p>After the switch, the team released more often. Update downloads increased, yet egress fell &#128176;.</p><ul><li><p>SDK compatible with React Native and Expo</p></li><li><p>Binary diff updates from the first OTA release</p></li><li><p>Enterprise-grade security, with SOC 2 Type II</p></li><li><p>Advanced release analytics</p></li></ul><p><a href="https://revopush.org/react-native-ota-payloads-binary-diffs?utm_source=this_week_in_react">See the production results</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-sept23">build mode - How much can you delegate to agents?</a></p></li><li><p>&#128064; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1023">React Native RFC - Secondary JavaScript runtimes in React Native</a> - Worklet maintainer requesting a first-class C++ API to create secondary Hermes runtimes. This should help make the integration with libraries such as Reanimated/Worklets more robust, address debugging/inspector/HMR pain points, and more.</p></li><li><p>&#128220; <a href="https://shopify.engineering/helix">Shopify Helix - The internal tool powering our native migration</a> - Agents are powerful, but getting consistent results is difficult. Their solution needed tooling and guardrails.</p></li><li><p>&#128220; <a href="https://lynxjs.org/next/blog/reactlynx-instant-first-frame-rendering">Deep Dive into ReactLynx: From Background Rendering to Instant First-Frame Rendering</a> - Start of the series to answer how Lynx runs React on two threads, enables IFR and Main Thread Script.</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/2026-09-19-the-kmp-ios-scaling-problem-rust-uniffi-fixes/">The KMP-on-iOS Scaling Problem That Rust UniFFI Fixes</a> - A follow-up to last week&#8217;s KMP post and its challenge of scaling on iOS and how Rust&#8217;s UniFFI fixes it.</p></li><li><p>&#128220; <a href="https://x.com/ryanlanciaux/status/2098434962915573971">React Native in an Industry That&#8217;s Changing</a> - A look into how working with agents changes the decision process on where to draw the line between native and cross-platform.</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/2026-09-18-shared-business-logic-in-rust/">What Does Shared Business Logic in Rust Look Like on iOS &amp; Android?</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/exploring-jev-for-mobile-qa-with-agent-device">Exploring Jev for AI-Driven QA with agent-device</a></p></li><li><p>&#128184; <a href="https://patch.codemagic.io/?utm_source=newsletter&amp;utm_medium=referral&amp;utm_campaign=twir">Codemagic Patch - Self-hosted OTA updates, complete with fingerprinting, release metrics and online dashboard</a></p></li><li><p>&#128230; <a href="https://developer.apple.com/documentation/xcode/updating-your-xcode-project-configuration-file-format">Xcode 27.2 beta - JSON project format </a><code>.xcproj</code> - A new JSON format that&#8217;s more human-readable, editable by coding agents, and merge-friendly. Already the default for new projects.</p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/reanimated-4-7-0/">Reanimated 4.7 - New layout animations engine by default, animated </a><code>backgroundImage</code><a href="https://swmansion.com/changelog/reanimated-4-7-0/">, more Android CSS transitions</a></p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/worklets-0-13-0/">Worklets 0.13 - Networking module for Bundle Mode runtimes, OXC Babel plugin port, SPM support</a></p></li><li><p>&#128230; <a href="https://swmansion.com/changelog/react-native-screens-5-0-0-alpha-3/">Screens 5.0 alpha 3 - Stack v5 header customization on Android and iOS, FormSheet stacking, SPM support</a></p></li><li><p>&#128230; <a href="https://github.com/rbayuokt/expo-infinite-media">Expo Infinite Media - Native paged media feed, </a><code>AVFoundation</code><a href="https://github.com/rbayuokt/expo-infinite-media"> on iOS, </a><code>Media3</code><a href="https://github.com/rbayuokt/expo-infinite-media"> on Android</a></p></li><li><p>&#128230; <a href="https://github.com/AmatoGiulio/react-native-numeric-text">Numeric Text - SwiftUI&#8217;s </a><code>numericText</code><a href="https://github.com/AmatoGiulio/react-native-numeric-text"> on iOS, frame-measured native renderer on Android</a></p></li><li><p>&#128230; <a href="https://github.com/adnxy/react-native-secure-webview">Secure Webview - Explicit origin allowlists. Native navigation enforcement. Blocked redirects. Deep-link protection. Fail-closed by default.</a> - Built for security-critical flows like payments, OAuth, authentication, and 3-D Secure.</p></li><li><p>&#128230; <a href="https://github.com/DorianMazur/react-native-screen-choreography/releases/tag/v0.6.0">Screen Choreography 0.6 - Declarative Enter/Exit reveals, duration-based springs, interactive gesture lifecycle</a></p></li><li><p>&#128230; <a href="https://github.com/gre/react-native-view-shot/releases/tag/v6.0.0">View Shot 6.0 - RN 0.80+ required, 0.87 Strict TypeScript API support, </a><code>html2canvas-pro</code><a href="https://github.com/gre/react-native-view-shot/releases/tag/v6.0.0"> optional on web</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-sqlite/releases/tag/v9.8.0">Nitro SQLite 9.8 - iOS Application Support storage, performance mode, thread safety</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.27.0">Sentry 8.27 - Session Replay runtime controls, per-class masking, iOS hang workaround</a></p></li><li><p>&#128230; <a href="https://github.com/mdjastrzebski/test-renderer/releases/tag/v1.3.0">Test Renderer 1.3 - React 19.3 support</a></p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/releases/tag/v3.4.0">Legend List 3.4 - Scroll readiness callback, end-following fixes, direction-aware row preparation</a></p></li><li><p>&#128230; <a href="https://github.com/thiagobrez/react-native-arrangement-view">Arrangement View 0.1 - Adaptive split/overlay panes and hinge observation for foldables, early iPhone Duo support, Android coming soon</a></p></li><li><p>&#128230; <a href="https://github.com/ifeoluwak/react-native-skia-layout">Skia Layout - Flexbox layouts for React Native Skia powered by Yoga</a></p></li><li><p>&#128230; <a href="https://pulsar.swmansion.com/studio">Pulsar Studio - Visual editor for custom haptic patterns, timeline design, audio and Lottie generation</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/enriched-markdown/blob/main/packages/enriched-markdown-ios/README.md">Enriched Markdown iOS 0.3 - LaTeX math, spoilers, highlights, GitHub alerts, better VoiceOver</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.21.12">Agent Device 0.21.12 - Foldable simulator posing, recording contact sheets, Maestro permissions</a></p></li><li><p>&#128230; <a href="https://github.com/delacournz/delacour-ui">Delacour UI - shadcn-style component kit for RN: Uniwind styling, Reanimated interaction, Pulsar haptics</a></p></li><li><p>&#129302; <a href="https://apex.callstack.com/">Apex - Callstack&#8217;s React Native coding model</a> - Based on Gemma 4, fine-tuned with SFT + GRPO on curated RN ecosystem data. Will be launched soon.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=mK6QKSyPCvk">Beto - What&#8217;s new in Expo SDK 58</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=MUFlnOXi-o4">Expo - Introduction to agentic self-healing apps</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/tc39/agendas/blob/main/2026/09.md">TC39 - Agenda for the 116th meeting</a> - Happening next Tuesday. Many Iterator proposals will likely progress to stage 4. I&#8217;m particularly excited to see if Composites will progress to stage 2!</p></li><li><p>&#128230; <a href="https://www.bram.us/2026/09/23/responsive-iframes/">Chrome 154 - Responsive iframe resizing</a> - Iframes can now resize themselves based on the size of their embedded document &#129327;. Haven&#8217;t all widget/extension authors dreamed of this for years, as an alternative to <code>postMessage()</code>?</p></li><li><p>&#128230; <a href="https://blogs.windows.com/msedgedev/2026/09/21/new-in-edge-for-developers-create-better-components-and-make-your-site-agent-ready/">Edge 151-153</a> - My favorite newly-supported features are WebMCP (origin trial) and OpaqueRange to highlight in inputs/textarea (see my <a href="https://x.com/sebastienlorber/status/2099883816718323949">syntax-highlighted textarea demo</a>).</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/12.6">pnpm 12.6 - Automatic dedupe, automatic type installation, </a><code>file:/link</code><a href="https://pnpm.io/blog/releases/12.6"> catalogs, and more</a> - You may not need to run <code>pnpm dedupe</code> as part of your CI anymore! And wtf we had to figure out manually whether a lib has bundled types or is using DefinitelyTyped? Not anymore!</p></li><li><p>&#128230; <a href="https://turborepo.dev/blog/2-11">Turborepo 2.11 - Native support for Rust/Python/Go, faster startup, nub/aube support</a> - It&#8217;s interesting to see that both Turborepo and pnpm have become polyglot tools lately. Maybe the start of a new trend that AI now enables?</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog">Node.js 26.9- &amp; 26.10 - Web Workers support, VFS improvements, enable </a><code>ffi</code><a href="https://nodejs.org/en/blog">, add </a><code>bench</code><a href="https://nodejs.org/en/blog">, </a><code>debounce/throttle</code> - Native support for throttle/debounce surprised me, RIP Lodash &#128516;</p></li><li><p>&#128230; <a href="https://github.com/jsdom/jsdom/releases/tag/v30.1.0">jsdom 30.1 - Major performance, memory, and correctness improvements</a></p></li><li><p>&#128230; <a href="https://rstest.rs/blog/announcing-0-12">Rstest 0.12 - Playwright E2E testing, Module Federation testing, faster jsdom tests, new JS API</a></p></li><li><p>&#128230; <a href="https://github.com/trpc/trpc/releases/tag/v11.19.0">tRPC 11.19 - Better request cancellation, TanStack Query </a><code>skipToken</code><a href="https://github.com/trpc/trpc/releases/tag/v11.19.0"> fix</a></p></li><li><p>&#128230; <a href="https://eslint.org/blog/2026/09/eslint-v10.11.0-released/">ESLint 10.11 - Perf improvements: 20-25% faster initialization, faster rule execution</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!GYL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F990ce79e-90b7-4123-a571-6a1ed0f08301_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Zks!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Zks!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Zks!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Zks!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Zks!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Zks!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg" width="1030" height="1592" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1592,&quot;width&quot;:1030,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!4Zks!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Zks!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Zks!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Zks!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b8f3c7-df7e-45af-b9d8-7cb70c4a7ba0_1030x1592.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p>]]></content:encoded></item><item><title><![CDATA[This Week In React 297]]></title><description><![CDATA[DevTools, Motion, Apollo, React Router, Hook Form, shadcn lint | Shopify, Expo 58 beta, ExecuTorch, Screenmap, Voltra, SPM, Stim, Lynx, Metro, AI | pnpm, oj, Zod, Devframe, Safari, Webpack]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-297</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-297</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 18 Sep 2026 08:10:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YVyB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>Following the React v19.3 release, DevTools v8 is now officially published. Motion shipped a ViewTransition wrapper. React Router optimized re-renders. Apollo Client finally has custom scalars.</p><p>On mobile, we have a lot of releases. RN 0.88 will use React v19.3. Shopify is moving away from React Native!</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!68L2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!68L2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!68L2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!68L2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!68L2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!68L2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!68L2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!68L2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!68L2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!68L2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9371194-50dc-4b13-951b-38d27aa825c3_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FB4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FB4Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FB4Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FB4Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FB4Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FB4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Live Workshop Series: Debugging AI Agents&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Live Workshop Series: Debugging AI Agents" title="Live Workshop Series: Debugging AI Agents" srcset="https://substackcdn.com/image/fetch/$s_!FB4Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FB4Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FB4Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FB4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11dcb370-417a-41fa-9ff2-d7de74152044_2566x1446.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://sentry.io/resources/agent-tracing-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=agenttracing-fy27q3-agenttracingseries&amp;utm_content=newsletter-primary-workshop-series-register">Live Workshop Series: Debugging AI Agents</a></strong></p><p>Your agent returns something odd. Was it the prompt, a tool call that timed out, or output your code could not parse? Without traces, you are guessing.</p><p>On <strong>October 7</strong>, Serge from Sentry instruments three agents with <a href="https://sentry.io/product/tracing/ai-agent/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=agenttracing-fy27q3-evergreen&amp;utm_content=newsletter-primary-product-learnmore">Agent Tracing</a>: a chatbot in an e-commerce store, a custom Slack agent, and a GitHub Action that reviews PRs. You&#8217;ll see bad tool calls, unexpected output, and token spend per run.</p><p>On <strong>October 14</strong>, Ryan and Serge show how Sentry engineers debug their own agents and find the failures worth investigating across large volumes of production traces.</p><p>Both sessions are free. <strong><a href="https://sentry.io/resources/agent-tracing-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=agenttracing-fy27q3-agenttracingseries&amp;utm_content=newsletter-primary-workshop-series-register">Register for the series</a></strong>.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-sept16">build mode - 2030-shaped software</a></p></li><li><p>&#128064; <a href="https://chromewebstore.google.com/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en">React DevTools 8.0 on the Chrome Web Store</a> - If you use Chrome, you probably got the new version automatically. You should now see a new <code>Elements &gt; &#9883;&#65039;React Element</code> pane when inspecting elements in Chrome DevTools, and also a new top-level <code>&#9883;&#65039;Suspense</code> tab.</p></li><li><p>&#128064; <a href="https://github.com/facebook/stylex/pull/1865">StyleX RFC - Add compile-time CSS enums and exhaustive matching</a></p></li><li><p>&#128220; <a href="https://ondrejvelisek.github.io/the-cost-of-abstraction-for-humans-and-ai-agents/">The Cost of Abstraction for Humans and AI Agents</a> - The author created the same React app with different levels of abstraction, then measured the cost of editing each app with Sonnet 5. He estimates that an over-abstracted codebase costs 30% more in AI agent bill and time. Also includes 6 abstraction patterns often seen in React codebases that you can probably inline.</p></li><li><p>&#128220; <a href="https://www.nikhilsnayak.dev/blog/react-server-functions">React Server Functions Are More Than Mutations</a> - An interactive exploration of using Server Functions for reads via HTTP QUERY, then streaming values, while working on an Effect-based RSC framework.</p></li><li><p>&#128220; <a href="https://www.brenelz.com/posts/solidjs-its-the-little-things/">SolidJS, It&#8217;s the Little Things</a> - Walks through 6 small Solid 2.0 DX details, from <code>isPending()</code> to optimistic stores, each compared side by side with the React equivalent.</p></li><li><p>&#128220; <a href="https://dev.to/subito/from-1256ms-to-96ms-fixing-inp-in-a-massive-react-dropdown-16l7">Fixing INP in a Massive React Dropdown</a> - Opening a MultiSelect with ~1,200 options mounted at once blocks the main thread. Since all rows share the same height, a custom 90-line virtualization hook is enough to bring INP from 1,256ms down to 96ms.</p></li><li><p>&#128220; <a href="https://tsrx.dev/blog/removing-lazy-destructuring">TSRX - Removing lazy destructuring</a> - Preparing for v1.0, TSRX dropped its <code>&amp;{}</code> destructuring syntax. This reflects its positioning as a JSX extension, rather than a new language that humans and LLMs would have to learn.</p></li><li><p>&#128176; <a href="https://fandf.co/4gEhH4E">The&#8239;Amazon Developer Hackathon:&#8239;Win up to $40k for&#8239;the&#8239;Fire TV&#8239;track!&#8239;8&#8239;weeks&#8239;to&#8239;build and explore new&#8239;agentic&#8239;tools. Register now!</a></p></li><li><p>&#128230; <a href="https://motion.dev/docs/react-animate-view">Motion 13.4 - New </a><code>&lt;AnimateView&gt;</code><a href="https://motion.dev/docs/react-animate-view"> component</a> - Wraps React&#8217;s <code>&lt;ViewTransition&gt;</code>, adding support for spring support, dynamic targets, animation controls, and a simple props API. Interesting to see the lib pushing back on React docs&#8217; claims about View Transition performance compared to layout animations.</p></li><li><p>&#128230; <a href="https://github.com/shadcn-ui/lint">shadcn lint - An agent-first linter for Tailwind design systems</a> - Since <code>className</code> is just a string, design system rules are hard to enforce with types. This ESLint/Oxlint plugin lets you define per-component rules and emit actionable errors to guide your agents.</p></li><li><p>&#128230; <a href="https://github.com/oxc-project/oxc/releases/tag/apps_v1.83.0">Oxlint 1.83 - Update lint rules for React 19.3</a> - This fixes false-positive lint errors you may get by adopting React 19.3 features such as Fragment refs or newly supported DOM props.</p></li><li><p>&#128230; <a href="https://reactrouter.com/changelog#v840">React Router 8.4 - Fewer re-renders, faster route matching (unstable)</a> - The internal router state has been split into 4 contexts, so hooks like <code>useLocation()</code> will re-render less.</p></li><li><p>&#128230; <a href="https://www.apollographql.com/blog/whats-new-in-apollo-client-4-3">Apollo Client 4.3 - Custom scalars, type-safety improvements</a> - The GraphQL client finally ships built-in custom scalar support, its most requested feature: parse/serialize values like <code>Date</code> in one place</p></li><li><p>&#128230; <a href="https://react-hook-form.com/docs/useformstate/errormessage">React Hook Form 7.88 - Built-in </a><code>&lt;ErrorMessage&gt;</code><a href="https://react-hook-form.com/docs/useformstate/errormessage"> component</a> - This lets you render one or many validation error messages for a given field.</p></li><li><p>&#128230; <a href="https://astryx.atmeta.com/blog/astryx-v0-6-0">Astryx 0.6 - Responsive theme rules, adaptable selection, reworked Neutral palette</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gScH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gScH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gScH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gScH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gScH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gScH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!gScH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gScH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gScH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gScH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0e422f-79e4-425b-9658-6f52b7d25fdb_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Su2b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Su2b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Su2b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Su2b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Su2b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Su2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg" width="1456" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Your first React Native OTA can be a diff&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Your first React Native OTA can be a diff" title="Your first React Native OTA can be a diff" srcset="https://substackcdn.com/image/fetch/$s_!Su2b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Su2b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Su2b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Su2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd856e2fb-0190-434f-b8dd-ce666077b089_3182x1502.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://revopush.org/react-native-ota-payloads-binary-diffs?utm_source=this_week_in_react">Your first React Native OTA can be a diff</a></strong></p><p><a href="https://revopush.org/">Revopush OTA</a> reuses the hermes bundle and assets already in your IPA and APK.</p><p>Even the first OTA after a native release can contain only the changes.</p><p>In one production release, an 18 Mb full package became <strong>100 to 500 Kb</strong> patches.</p><p>After the switch, the team released more often. Update downloads increased, yet egress fell &#128176;.</p><ul><li><p>SDK compatible with React Native and Expo</p></li><li><p>Binary diff updates from the first OTA release</p></li><li><p>Enterprise-grade security, with SOC 2 Type II</p></li><li><p>Advanced release analytics</p></li></ul><p><a href="https://revopush.org/react-native-ota-payloads-binary-diffs?utm_source=this_week_in_react">See the production results</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YVyB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YVyB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YVyB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YVyB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YVyB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!YVyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Shopify is moving away from React Native to native&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Shopify is moving away from React Native to native" title="Shopify is moving away from React Native to native" srcset="https://substackcdn.com/image/fetch/$s_!YVyB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YVyB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YVyB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YVyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb30859b-ed45-42ac-9305-5a14fd76640d_1800x1005.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://shopify.engineering/back-to-native">Shopify is moving away from React Native to native</a></strong></p><p>An unexpected announcement from Shopify shook the React Native ecosystem. They&#8217;re moving away from React Native to native Swift and Kotlin!</p><p>So what&#8217;s their reason? Not because RN failed, but because coding agents changed the economics. Building twice no longer costs twice.</p><p>They <a href="https://shopify.engineering/shop-app-migration">started with a 12-week case study to migrate their flagship Shop app</a> to native with 6 engineers, leading to the following improvements:</p><ul><li><p>improve startup time - iOS startup 3200ms &#8594; 2466ms (-23%), Android 4433ms &#8594; 2233ms (-50%)</p></li><li><p>session stability - 99.5% &#8594; 99.95% (10x reduction)</p></li><li><p>runtime performance on Android - 120 FPS on a Pixel device</p></li></ul><p>It&#8217;s important to note that the app was &#120143; <a href="https://x.com/jamonholmgren/status/2098235125419135339">not using the New Architecture</a>, which was built to fix those problems.</p><p>Does it mean <a href="https://codewithbeto.dev/blog/is-react-native-dead-shopify-native">React Native is dead</a>? Does not seem so. A shared application and UI layer remains useful, and React Native still has major benefits such as Over-The-Air updates and good foundations for server-driven UI, useful for the agentic era.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://crisp.chat/?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=crisp_q3_nl&amp;utm_content=16sep26">Crisp - Customize your in-app support experience with our React Native SDK and flexible integration options</a></p></li><li><p>&#128064; <a href="https://github.com/react/react-native/releases/tag/v0.88.0-rc.1">React Native 0.88 RC.1 cherry-picked React 19.3 - Stable ViewTransition, Fragment refs, browser(), Trusted Types</a> - This upgrade doesn&#8217;t look like a major change for RN devs on its own, but ViewTransitions and Fragment refs are React core features and may become supported on the RN side? &#129323;</p></li><li><p>&#128220; <a href="https://expo.dev/blog/build-ios-apps-on-windows-with-cloud-simulators">You don&#8217;t need a Mac to develop iOS apps anymore</a> - EAS runs iOS simulators in the cloud, letting you test and build apps from any OS or browser. Android is also supported.</p></li><li><p>&#128220; <a href="https://shift.infinite.red/legend-state-the-fastest-react-state-library-youre-probably-not-using-e791171a61b7">Legend State: The Fastest React State Library You&#8217;re Probably Not Using</a> - React&#8217;s built-in state management can often be a source of performance problems. State managers such as Legend State help reduce re-renders thanks to <code>observables</code>.</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/2026-09-14-how-kmp-with-swiftui-scales-on-ios/">How Does KMP with SwiftUI Scale on iOS?</a> - Sharing logic in Kotlin sounds ideal. The problem? iOS consumes one static framework. Does this cause a full rebuild on every change? Fortunately, no, but there&#8217;s still a cost.</p></li><li><p>&#128220; <a href="https://codewithbeto.dev/blog/is-your-app-ready-for-iphone-duo">Is Your App Ready for iPhone Duo?</a> - A new mobile form factor is coming to iOS. Taking care of screen edges, safe areas, and adaptive layout is more important than ever.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/what-it-actually-takes-to-migrate-discord-to-react-native-s-new-architecture/">What It Actually Takes to Migrate Discord to React Native&#8217;s New Architecture</a> - Migrating a complex app to the New Architecture is not just a flip of a switch. There&#8217;s a long tail of issues and assumptions that need to be taken care of.</p></li><li><p>&#128184; <a href="https://patch.codemagic.io/?utm_source=newsletter&amp;utm_medium=referral&amp;utm_campaign=twir">Codemagic Patch - The easiest way to run your own OTA update server, complete with dashboard and fingerprinting</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-executorch/releases/tag/v0.10.0">ExecuTorch 0.10 - Ground-up rewrite, TS pipelines, Core ML/MLX/Vulkan acceleration</a> - Orchestration moves to inspectable TypeScript with Core API for custom models without C++, worklets support for VisionCamera live streams, on-demand native binaries to trim bundle size, and a legacy entrypoint for gradual migration.</p></li><li><p>&#128230; <a href="https://expo.dev/changelog/sdk-58-beta">Expo SDK 58 Beta - iOS 27 support, RN 0.88 RC, Expo Modules 2.0 beta, App Intents alpha, agent CLI, Android widgets, stable Expo Router data loaders and native tabs, and more</a> - Another exciting Expo release that we&#8217;ll cover in depth once stable in 3-4 weeks!</p></li><li><p>&#128230; <a href="https://screenmap.dev/">Screenmap - Visual navigation maps for Expo / React Native apps</a> - A promising tool to add to your CI workflows: takes a screenshot of every app screen and posts a map to your mobile PRs, highlighting what has changed.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.28.0">Screens 4.28 - Android Tabs/Stack fixes, tab bar layout, and MenuItem IDs</a> - Small bugfix release, but here&#8217;s a &#120143; <a href="https://x.com/swmansion/status/2098417302026825814">sneak peek</a> of upcoming support for iPhone Duo</p></li><li><p>&#128230; <a href="https://www.swift.org/blog/swift-6.4-released/">Swift 6.4</a> - Swift Build is now the default in SPM. Improved language, Foundation, and standard library. Improved C++ and Java interoperability.</p></li><li><p>&#128230; <a href="https://github.com/react/metro/releases/tag/v0.87.1">Metro 0.87 - Scheme resolvers, babel-runtime resolution, Watcher memory cuts</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-zxing">Nitro ZXing - Barcode scanner for VisionCamera written in C++, up to 10x faster than MLKit, and 2.6x faster for live camera frames</a></p></li><li><p>&#128230; <a href="https://lynxjs.org/blog/lynx-4-0">Lynx 4.0 - AI docs for agents, generative UI using AI2UI renderer and OpenUI skill, dynamic elements, unified debug metadata, media queries</a></p></li><li><p>&#128230; <a href="https://github.com/wcandillon/react-native-webgpu/releases/tag/v0.10.0">WebGPU 0.10 - Chrome 154, SPM support, implicit device sync by default</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.3.0">Gesture Handler 3.3 - Swipeable, Drawer, ScrollView and button press fixes</a></p></li><li><p>&#128230; <a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.12.0">Skia 2.12 - SPM support, handle invalid SVG parse results</a></p></li><li><p>&#128230; <a href="https://github.com/kuatsu/react-native-boost/releases/tag/v2.0.0">Boost 2.0 - Metro plugin replaces Babel, Animated/ActivityIndicator/StyleSheet/Platform optimizers, Uniwind support</a></p></li><li><p>&#128230; <a href="https://github.com/DorianMazur/react-native-screen-choreography/releases/tag/v0.5.0">Screen Choreography 0.5 - defineTransition recipes, native forward preparation, live shared content</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/react-native-harness/releases/tag/v1.5.0">Harness 1.5 - Windows platform support, </a><code>harness ci</code><a href="https://github.com/callstackincubator/react-native-harness/releases/tag/v1.5.0"> commands, Metro config enhancer</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v2.3.0">Voltra 2.3 - Server-driven Dynamic Widgets, configurable Android widgets, experimental Dynamic Live Activities</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/radon-ide/releases/tag/v1.19.0">Radon IDE 1.19 - Share booted devices with AI agents via Argent</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.25.0">Argent 0.25 - WebView DOM in describe on Android, external device providers, script steps in flows</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.21.2">Agent Device 0.21 - scroll-until finder, in-place iOS web sign-in, Maestro evalScript, 27&#8211;40% faster iOS opens, human takeover of remote sessions</a></p></li><li><p>&#128230; <a href="https://github.com/appandflow/stim/releases">Stim 1.0 - Run several coding agents in parallel on RN apps, with build optimizations across worktrees</a></p></li><li><p>&#128230; <a href="https://github.com/FerRiv3ra/react-native-nitro-wakeword">Nitro Wakeword - On-device wake word detection for React Native, using the openWakeWord pipeline with ONNX Runtime</a></p></li><li><p>&#128230; <a href="https://github.com/luicfrr/react-native-vision-camera-face-detector/releases/tag/v2.1.0">Face Detector 2.1 - Auto-mode scaling fix for any frame/screen resolution</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.7.0">Nitro Fetch 1.7 - Fix reject aborted requests when native finishes before cancel, multipart encoding, React Query/RTK examples</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=0A4aehDmOXk">Code with Beto - How Marc Rousavy Turned Open Source Into a &#8364;20M+ Agency</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-373-real-life-react-native-mark-goldstein">RNR 373 - Real Life React Native: Chime</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://nubjs.com/blog/phantom-dependencies-package-extensions">De-phantoming the npm ecosystem</a> - Using Nub to find phantom (undeclared) dependencies in the top 10k npm packages.</p></li><li><p>&#128220; <a href="https://blog.master.dev/new-things-you-should-know-about-html-here-in-mid-2026/">New Things You Should Know About HTML Here in Mid 2026</a> - Good overview of modern HTML from Chris Coyier.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/12.4">pnpm 12.4 - Support for Rust and Python dependencies, new </a><code>pnpm pipeline</code><a href="https://pnpm.io/blog/releases/12.4"> task runner</a> - Bold move: pnpm expands beyond JS and can now install Cargo crates and PyPI packages alongside npm deps. The ability to run cached task graphs makes it a lightweight Turborepo/Nx alternative.</p></li><li><p>&#128230; <a href="https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes">Safari 27 - Fix top-level await, </a><code>import defer</code><a href="https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes">, customizable </a><code>&lt;select&gt;</code><a href="https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes">, </a><code>ariaNotify()</code><a href="https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes">, CSS improvements, </a><code>ReadableStream</code><a href="https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes"> improvements, MCP server, JSPI, and more</a> - Major release! The ES module loader has been entirely rewritten, <a href="https://webkit.org/blog/18227/fixing-top-level-await-in-safari/">fixing long-standing top-level await</a> bugs. JSPI (JavaScript Promise Integration for WebAssembly) is now available in all major browsers: an important primitive letting synchronous code compiled to Wasm (C++, Rust&#8230;) call async JS APIs. You can now <a href="https://developer.apple.com/documentation/safari-developer-tools/connecting-an-ai-agent-to-safari">connect your AI agent to Safari</a> through the new MCP server.</p></li><li><p>&#128230; <a href="https://philipwalton.com/articles/modern-web-types/">Modern Web Types</a> - TIL TypeScript only types DOM APIs shipped in 2+ browser engines. This lib lowers the threshold to 1 engine, letting you use the newest APIs as progressive enhancements without losing type-safety.</p></li><li><p>&#128230; <a href="https://rapha.land/introducing-oj/">oj - The Vite dev server reimplemented in Rust</a> - This alternative offers different trade-offs. Will <a href="https://lovable.dev/blog/faster-previews-oj">soon power the Lovable sandbox previews</a>, resulting in 4x better memory usage and 2x faster cold starts.</p></li><li><p>&#128230; <a href="https://devfra.me/posts/pluggable-extensible-playful-devtools">Devframe - Framework for building pluggable, extensible, and playful DevTools</a> - It powers Vite DevTools and Nuxt DevTools v4, and there&#8217;s a Next.js DevTools prototype.</p></li><li><p>&#128230; <a href="https://zod.dev/blog/zod-4-6">Zod 4.6 - </a><code>z.validate()</code><a href="https://zod.dev/blog/zod-4-6">, </a><code>z.properties()</code><a href="https://zod.dev/blog/zod-4-6">, </a><code>z.iban()</code><a href="https://zod.dev/blog/zod-4-6">, </a><code>z.fromJSONSchema()</code><a href="https://zod.dev/blog/zod-4-6"> improvements</a> - The new <code>z.validate()</code> method fails fast, returns false on error, up to 35x faster than <code>z.safeParse()</code>.</p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-09-14-webpack-5-111/">Webpack 5.111 - Stable ESM output, </a><code>output.copy</code><a href="https://webpack.js.org/blog/2026-09-14-webpack-5-111/"> for static files, CSS minimizer improvements</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n4Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!n4Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88fd7603-c8b4-4ad2-97f0-facfc51d8c87_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l26C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l26C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l26C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l26C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l26C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!l26C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg" width="1000" height="736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!l26C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l26C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l26C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l26C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3751bb-6cc2-456b-95ed-17c475e7f1ad_1000x736.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kMB_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kMB_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kMB_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kMB_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kMB_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!kMB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg" width="1394" height="1378" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1378,&quot;width&quot;:1394,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!kMB_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kMB_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kMB_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kMB_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d48627b-c6ae-4770-80b6-fd687f186eac_1394x1378.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 296]]></title><description><![CDATA[React 19.3, DevTools, Next.js, cn, Maps, Effective-RSC, Vidact, uf | 0.88 RC, Expo Modules, Navigation Benchmarks, QuickJS, Goldie, ContinuedTask | Rslib, Vitest, gpu-lexer, Ata, Interop]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-296</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-296</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 11 Sep 2026 12:40:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E9W2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>We could feel it was coming, and here it is, <s>delaying</s> just in time for the newsletter! &#128519;</p><p><strong>React 19.3 is finally out</strong>, with View Transitions and Fragment Refs stable! And it looks like updated DevTools are also coming soon.</p><p>We also got a sneak peek of React Native 0.88 and Expo Modules 2.0.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uo2e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uo2e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Uo2e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Uo2e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Uo2e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uo2e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!Uo2e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Uo2e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Uo2e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Uo2e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8bf3e49-e242-4b31-ba91-7dce28c12134_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/TkDodo">Dominik Dorfmeister</a></strong><a href="https://twitter.com/TkDodo">Web Developer - React-Query maintainer</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xqtw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xqtw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xqtw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xqtw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xqtw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xqtw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Atomic CRM: A CRM You Can Fork Instead of Subscribe To&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Atomic CRM: A CRM You Can Fork Instead of Subscribe To" title="Atomic CRM: A CRM You Can Fork Instead of Subscribe To" srcset="https://substackcdn.com/image/fetch/$s_!xqtw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xqtw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xqtw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xqtw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa5b3e8a-63f5-426c-81dc-e73c7523e197_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://marmelab.com/atomic-crm/">Atomic CRM: A CRM You Can Fork Instead of Subscribe To</a></strong></p><p>You need to build a CRM? Get started with <a href="https://marmelab.com/atomic-crm/">Atomic CRM</a>, a popular open-source CRM written in React. It&#8217;s built with a stack your team already knows: Tailwind CSS, TanStack Query, react-hook-form and Supabase. Simply fork it, customize it to your business, and self-host it on your own infrastructure.</p><p>And when the customizations start piling up, delegate them: Atomic CRM ships with a harness of 7 agentic subagents for automated workflow execution.</p><p><a href="https://github.com/marmelab/atomic-crm">Fork Atomic CRM now</a> to keep full control of your data and code.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E9W2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E9W2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E9W2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E9W2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E9W2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!E9W2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React 19.3&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React 19.3" title="React 19.3" srcset="https://substackcdn.com/image/fetch/$s_!E9W2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E9W2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E9W2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E9W2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dddc71b-ab00-4551-bb2d-12f445c21957_1200x630.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://react.dev/blog/2026/09/09/react-19-3">React 19.3</a></strong></p><p>The new minor version of React is finally out, and it&#8217;s a great one!</p><p>If you read us regularly, we already disclosed everything &#128519;, but here&#8217;s a reminder of the highlights:</p><ul><li><p><strong>View Transitions</strong>: now stable! Also including the <code>addTransitionType</code> API that lets you customize the animation directly from the code triggering it.</p></li><li><p><strong>Fragment Refs</strong>: now stable! This lets you get a ref of a <code>&lt;Fragment&gt;</code> and manipulate its underlying children DOM nodes. A quite useful feature unlocking new composition patterns that were previously difficult or requiring a wrapper DOM node.</p></li><li><p><code>use(browser())</code>: a first-class API to opt out a subtree of server-side rendering, replacing patterns based on <code>typeof window</code> and <code>useEffect</code>.</p></li><li><p>Trusted Types: security feature to use in conjunction with Content-Security-Policy to prevent XSS attacks.</p></li><li><p>RSC can render <code>&lt;Context&gt;</code>: no need to create a wrapper <code>&lt;ContextProvider&gt;</code> component anymore.</p></li></ul><p>Make sure to read that blog post because it contains interactive examples worth taking a look at, in particular to understand View Transitions and Fragment Refs.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://sentry.io/cookbook/custom-metrics-dashboard-alerts-nextjs/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q3-cookbook&amp;utm_content=newsletter-react-link-nextjs-metrics-dashboard-trysentry">Sentry - How to wire a custom metric into a Next.js app, chart it, and alert on it. Learn how.</a></p></li><li><p>&#128064; <a href="https://github.com/react/react/blob/main/packages/react-devtools/CHANGELOG.md#800">React DevTools 8.0 - Suspense Tab enabled, React Element panel, remove Timeline profiler in favor of Performance tracks, display dimmed Activity subtree</a> - The v8 changelog is already merged and gives a sneak peek. Not published yet on npm or extension stores.</p></li><li><p>&#128064; <a href="https://github.com/react/react/tree/main/packages/react-devtools-cdt-mcp">React DevTools CDT MCP</a> - Speaking of DevTools, the React team is also experimenting with a new package, recently published to npm. It&#8217;s not an MCP server, but lets Chrome DevTools discover/register/expose React tools useful for agents to understand and profile your app at runtime.</p></li><li><p>&#128064; <a href="https://github.com/reactjs/react.dev/pull/8632">React.dev PR - Document missing SSR and hydration options</a> - Adding the missing API ref documentation for SSR options such as <code>formState</code>, <code>importMap</code>, <code>maxHeadersLength</code>.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/97232">Next.js PR - Upgrade web-vitals to v6 and report soft navigations</a> - <code>useReportWebVitals()</code> will soon report SPA soft navigations, recently included in Core Web Vitals.</p></li><li><p>&#128220; <a href="https://blog.master.dev/react-now-rusted-all-the-way-out/">React Now Rusted All The Way Out</a> - An overview of the React Compiler in Rust landing in Vite, reporting a 17x speedup over the Babel version, and giving an alternative solution for React Router framework mode users.</p></li><li><p>&#128220; <a href="https://maxleiter.com/blog/thank-u-next">Replacing Next.js with a vibe-coded &#8220;framework&#8221;</a> - Replacing Next.js on a personal site with a 5k-line framework Claude architected. Still React/MDX on the server, Preact islands on the client, with 99% less JS shipped. This shows meta-frameworks could eventually die out: their knowledge can be distilled into skills instead, and custom frameworks can be created on demand.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/turbopack-chunking">Next.js - How Turbopack chunks your JavaScript</a> - Explains the trade-offs behind code splitting strategies and the heuristics used to minimize both download size and request count. Next.js 16.3 comes with experimental options to optimize chunking and fine-tune heuristics based on your site access patterns.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/how-we-closed-1500-github-issues">Next.js- How we closed 1,500 GitHub issues in one month</a> - No React lesson here: they built an agent to analyze backlog issues to help maintainers close thousands of issues with confidence.</p></li><li><p>&#128184; <a href="https://www.cloudways.com/en/prepathon.php?utm_source=weekinreact&amp;utm_medium=newsletter&amp;utm_campaign=Prepathon&amp;utm_content=Community">Prepathon by Cloudways - Virtual Event - Sep 22 &amp; 23 - Two days of sessions and hands-on activities on AI-assisted building, modern deployment, and what&#8217;s actually working for developers shipping fast right now. Free to join from anywhere in the world. Register now to save your spot.</a></p></li><li><p>&#128230; <a href="https://github.com/visgl/react-google-maps/releases/tag/v1.10.0">React Google Maps 1.10 - New new 3d components</a> - The library completed its existing Google Maps 3D support with declarative components for GLB models, HTML markers, polylines, polygons, terrain flattening, and circular paths. A demo is worth a thousand words, so check this <a href="https://visgl.github.io/react-google-maps/examples/map-3d-markers">3D Maps Markers demo</a> to see fancy 3D markers, including an animated Model3D Balloon.</p></li><li><p>&#128230; <a href="https://github.com/shadcn-ui/cn">cn - A new engine for Tailwind class merging and conflict resolution</a> - Claims to be 30x faster than tailwind-merge + clsx with the same APIs. Already integrated in <a href="https://github.com/shadcn-ui/ui/releases/tag/shadcn%404.21.0">shadcn 4.21</a>. Use <code>npx shadcn migrate cn</code> to migrate. Faster, but 26 KB minified; can be reduced with <code>cn build</code>.</p></li><li><p>&#128230; <a href="https://www.nikhilsnayak.dev/blog/introducing-effective-rsc">Effective RSC - An experimental, Effect-native React Server Components framework for Bun</a> - Ideas are worth taking a look at. RSC pages are <code>Effect.fn()</code> functions with Schema-decoded route params. Effect unlocks various benefits for RSCs, such as type-safe dependency injection and error handling, or request abortion propagation.</p></li><li><p>&#128230; <a href="https://www.vidact.dev/">Vidact - Compiles React code to direct DOM operations</a> - In beta, supporting a growing subset of React 19. Components run only once when they mount.</p></li><li><p>&#128230; <a href="https://docs.uniflowed.dev/">uf - Unified Toolchain for Flow and React</a> - A Rust-based toolchain comparable to Vite+, improving DX for React and Flow. The author&#8217;s arguments are worth reading: Flow is a more precise type system than TypeScript for describing React code.</p></li><li><p>&#128230; <a href="https://github.com/huozhi/devjar">DevJar 1.0 - React live code playgrounds</a> - An interesting alternative to CodeSandbox to embed interactive React-based experiences on your site.</p></li><li><p>&#128230; <a href="https://bamboocss.com/docs/overview/getting-started">Bamboo CSS - Zero-runtime CSS-in-JS</a> - A Vite compiler erases the runtime, prunes unused tokens, and fails the build on invalid tokens.</p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-8-0">Base UI 1.8 - Improves mount perf for Menu/Popover, </a><code>Combobox.createItems()</code><a href="https://base-ui.com/react/overview/releases/v1-8-0"> API, Avatar lazy-loading</a></p></li><li><p>&#128230; <a href="https://github.com/rstackjs/rsbuild-plugin-react-router/releases/tag/rsbuild-plugin-react-router%400.6.0">Rsbuild Plugin React Router 0.6 - Support React Router 8 and its RSC mode</a></p></li><li><p>&#128230; <a href="https://github.com/storybookjs/storybook/releases/tag/v10.6.0">Storybook 10.6 - TanStack / NextJS-Vite framework fixes, CLI bindings for agent tools/skills, performance improvements</a></p></li><li><p>&#128230; <a href="https://github.com/bvaughn/react-window/releases/tag/2.3.0">React Window 2.3 - New optional </a><code>rowKey/columnKey</code><a href="https://github.com/bvaughn/react-window/releases/tag/2.3.0"> props</a></p></li><li><p>&#128230; <a href="https://github.com/pmndrs/jotai/releases/tag/v3.0.0">Jotai 3.0 - Modernized ESM-only package, removing deprecated APIs</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wR3L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wR3L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wR3L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wR3L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wR3L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!wR3L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!wR3L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wR3L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wR3L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wR3L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4660b91-fe36-40e7-a5c0-ea7048ecc3c0_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i_Ly!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i_Ly!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i_Ly!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i_Ly!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i_Ly!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!i_Ly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Build Custom Forms and Surveys in React&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Build Custom Forms and Surveys in React" title="Build Custom Forms and Surveys in React" srcset="https://substackcdn.com/image/fetch/$s_!i_Ly!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i_Ly!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i_Ly!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i_Ly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba4b4072-5e55-4f42-bb51-67d334c7de70_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://surveyjs.io/?utm_source=this-week-in-react&amp;utm_medium=email">Build Custom Forms and Surveys in React</a></strong></p><p><a href="https://surveyjs.io/?utm_source=this-week-in-react&amp;utm_medium=email">SurveyJS</a> is a set of UI libraries for building, rendering, and analyzing forms and surveys directly inside your React application. Create everything from simple registration forms to complex surveys and multi-step wizards, connect your forms to any backend, and match them to your existing design system with custom themes or <em>style adapters for Bootstrap, shadcn/ui, and Material UI</em>.</p><p>&#8226; Embed a drag-and-drop form builder for business users<br>&#8226; Update forms without shipping a new release<br>&#8226; Reuse one JSON schema across the builder, renderer, PDF exports, and analytics</p><p>Developers control the architecture. Business teams manage forms. Your company retains full control over the UI and user data. &#128640;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-sept9">build mode - Stop being the code review bottleneck</a></p></li><li><p>&#128064; <a href="https://github.com/react/react-native/releases/tag/v0.88.0-rc.0">RN 0.88 RC - SwiftPM tooling, DevTools screenshots, ArrayBuffer in TurboModules, Babel Platform inlining improvement, iOS SceneDelegate lifecycle</a> - A sneak peek of the upcoming version from its changelog. Set up SwiftPM via <code>npx react-native spm</code>. Opt-in flags to drop legacy module/component interop will become the default later. Improved <code>Platform.OS/select()</code> inlining unlocks more platform-specific dead code elimination, around &#120143; <a href="https://x.com/tell_me_mur/status/2097352229833379960">17.7KB on iOS and 19.6KB on Android</a><strong>.</strong></p></li><li><p>&#128227; <a href="https://expo.dev/changelog/expo-go-57-login">Expo Go - Login is now required to run projects</a> - iOS-only for now. Will also be applied to Android later.</p></li><li><p>&#128202; <a href="https://andrei-calazans.com/posts/2026-06-05-state-of-rn-navigation/">React Native Navigation Benchmarks</a> - Benchmarks the same app rebuilt 4x with different routers, covering cold start, RAM, FPS, and JS measurements. Android tests highlight the most common RN bottleneck.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/an-early-look-at-expo-modules-2-0">An early look at Expo Modules 2.0</a> - Modules become plain annotated Swift/Kotlin with no <code>definition()</code> DSL to learn. Sync calls run 2.5-5.6x faster than 1.0 on the same SDK and beat TurboModules in the Expo chart. Experimental, iOS-only. Android in progress.</p></li><li><p>&#128184; <a href="https://patch.codemagic.io/?utm_source=newsletter&amp;utm_medium=referral&amp;utm_campaign=twir">Codemagic Patch - The easiest way to run your own OTA update server, including dashboard and fingerprinting</a></p></li><li><p>&#128230; <a href="https://github.com/react-native-quickjs/quickjs">RN QuickJS alpha - Hermes-compatible JSI runtime</a> - An alternative to Hermes. A tiny (~1.5MB) JavaScript engine that compiles to small bytecode bundles for faster startup, with a compatibility layer so most Hermes-dependent libs like Reanimated keep working without changes.</p></li><li><p>&#128230; <a href="https://github.com/kacperkapusciak/goldie">Goldie - App Store screenshot generator for coding agents and humans</a> - Useful framework-agnostic mobile tool. Argent replays flows; Goldie prepares store-compliant screenshots and preview videos.</p></li><li><p>&#128230; <a href="https://github.com/mahdidavoodi7/react-native-continued-task">RN Continued Task - Background tasks that keep running after your app is backgrounded</a> - One typed API over iOS 26 <code>BGContinuedProcessingTask</code> (Live Activity) + Android <code>WorkManager</code> foreground service, via Nitro. Useful for long-running user-initiated tasks like large exports, uploads, or encoding.</p></li><li><p>&#128230; <a href="https://github.com/kuatsu/react-native-boost/releases/tag/v1.7.0">Boost 1.7 - Image optimizer now default, RN 0.86 support</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v2.4.0">Rozenite 2.4 - Auto-inject Lynx runtime, one endpoint for debug targets</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.25.0">Sentry 8.25 - Feature flag info on native crashes, app.start vitals propagation</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.24.0">Argent 0.24 - Physical iOS device support</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.12.0">Uniwind 1.12 - Drop-shadow filter</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-streamdown/releases/tag/0.3.0">Streamdown 0.3 - Worklets 0.10 support</a></p></li><li><p>&#128230; <a href="https://github.com/steve228uk/metro-mcp/releases/tag/v0.15.0">Metro MCP 0.15 - MCP SDK v2, safer CDP reconnects pinned to same app, Hermes eval, Appium test gen</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.21.0">Agent-Device 0.21 - Human takeovers in remote sessions, faster iOS Simulator opens, install size halved</a></p></li><li><p>&#128230; <a href="https://github.com/lynx-family/lynx-stack/releases/tag/@lynx-js/react@0.126.0">ReactLynx 0.126 - Now on Preact 11, 14% faster background renders, use() support</a></p></li><li><p>&#128230; <a href="https://github.com/DorianMazur/react-native-screen-choreography">Screen Choreography 0.4 - Shared-element transitions for Expo Router</a></p></li><li><p>&#127897;&#65039; <a href="https://www.callstack.com/podcasts/running-ai-in-the-browser-with-transformers-js">React Universe on Air - Running AI in the Browser With Transformers.js</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128499;&#65039; <a href="https://web.dev/blog/interop-2027-proposals">Interop 2027 - Submit and vote for your favorite proposals</a></p></li><li><p>&#128220; <a href="https://altinmert.co/blog/running-zod-schemas-on-simdjson/">Running zod Schemas on simdjson</a> - Combining zod with ata, a JSON Schema engine using simdjson native core, and the benefits this brings.</p></li><li><p>&#128220; <a href="https://blog.gaborkoos.com/posts/2026-09-08-Half-Past-Fetch/">Half Past Fetch</a> - <code>await fetch()</code> only waits for the headers, not the actual body, and other interesting details.</p></li><li><p>&#128220; <a href="https://www.solidjs.com/blog/async-solid-one-graph-two-machines">Async Solid - 3-part series: reads, writes, and network</a></p></li><li><p>&#128230; <a href="https://gpu-lexer.vercel.app/">gpu-lexer - Language-agnostic WebGPU syntax highlighter</a> - Crazy idea! Highlighting is not based on language grammars but on a small AI model trained for this purpose.</p></li><li><p>&#128230; <a href="https://rslib.rs/blog/v1-0">Rslib 1.0 - Multiple output formats, multi-framework support, bundled or bundleless, style/asset support, and more</a> - Looks like an interesting tool, in particular for publishing a component library across many frameworks.</p></li><li><p>&#128230; <a href="https://vitest.dev/blog/vitest-5">Vitest 5.0 - Perf improvements, </a><code>vi.when</code><a href="https://vitest.dev/blog/vitest-5">, Trace View in Browser Mode, benchmarking API, better defaults, and more</a></p></li><li><p>&#128230; <a href="https://four.htmx.org/docs/whats-new-in-htmx-4">htmx 4.0 - fetch() replaces XHR, explicit inheritance, swaps all HTTP responses, and other breaking changes</a></p></li><li><p>&#128230; <a href="https://trilon.io/blog/nestjs-12-is-now-available">NestJS 12.0 - ESM-first, Rspack replacing webpack, Standard Schema validation, observability SDK</a></p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.63.0">Playwright 1.63 - Test locks, Locator improvements, aria/screen snapshots in traces, and more</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2Rr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!I2Rr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82a8c789-3bf6-472f-ae79-dab96ca55be5_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gudJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gudJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gudJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gudJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gudJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gudJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg" width="1000" height="347" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:347,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!gudJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gudJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gudJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gudJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3fe30fe-0b4a-4ae2-9373-44491c08861a_1000x347.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 295]]></title><description><![CDATA[StyleX, browser(), Next.js, React Compiler, Vite, Bun, Astryx, Formisch, React-Aria, TanStack | C++ API, Margelo, Observe, Reanimated, Teleport, Nitro, Screen Transitions | Zod, pnpm, vgpu, Remi]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-295</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-295</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Sun, 06 Sep 2026 19:35:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Kt6H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>Back from our summer break, we&#8217;ll cover news from the last two weeks.</p><p>React v19.3 is getting closer. The React Compiler in Rust is now available in Vite and Bun. CSS-in-JS is set to make a comeback.</p><p>On the mobile side, React Native keeps refining its public API surface, an important step toward v1.0. Callstack acquired Margelo.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uTkI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uTkI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uTkI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uTkI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uTkI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!uTkI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;William Candillon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="William Candillon" title="William Candillon" srcset="https://substackcdn.com/image/fetch/$s_!uTkI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uTkI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uTkI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uTkI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99fb033d-2c3f-465f-ac0d-2784cecbf9d3_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/wcandillon">William Candillon</a></strong><a href="https://twitter.com/wcandillon">React-Native animations expert - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iULL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iULL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iULL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iULL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iULL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!iULL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;PlanetScale: The database that gets faster as you sleep&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="PlanetScale: The database that gets faster as you sleep" title="PlanetScale: The database that gets faster as you sleep" srcset="https://substackcdn.com/image/fetch/$s_!iULL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!iULL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!iULL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!iULL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af5ad5a-2142-438a-9f9b-48344d7d3cd4_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://planetscale.com/?utm_source=this_week_in_react&amp;utm_medium=email&amp;utm_campaign=2026_q3_this_week_in_react&amp;utm_content=slot_1">PlanetScale: The database that gets faster as you sleep</a></strong></p><p>Agents ship React features faster than ever. They also ship unindexed queries, N+1s, and schema decisions made at 2am by a model that will never get paged.</p><p>Fortunately, agents can <em>fix</em> database problems too. They just need production data, and that&#8217;s what the PlanetScale MCP server gives them. Hook up an agent, and the loop looks like this:</p><ul><li><p>PlanetScale flags a slow query</p></li><li><p>The agent traces it back to the code in your repo</p></li><li><p>The agent opens a PR with the fix</p></li><li><p>You review and merge</p></li></ul><p>Run it once, or put it on a schedule.</p><p>Underneath it all: the fastest, most scalable cloud Postgres and MySQL, with options like PlanetScale Metal when you need peak performance. Fast databases, fast React apps.</p><p><strong><a href="https://planetscale.com/docs/connect/self-improving-database/?utm_source=this_week_in_react&amp;utm_medium=email&amp;utm_campaign=2026_q3_this_week_in_react&amp;utm_content=slot_1">Try the self-improving database</a></strong></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kt6H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kt6H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 424w, https://substackcdn.com/image/fetch/$s_!Kt6H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 848w, https://substackcdn.com/image/fetch/$s_!Kt6H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 1272w, https://substackcdn.com/image/fetch/$s_!Kt6H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kt6H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png" width="1034" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1034,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;stylex social card&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="stylex social card" title="stylex social card" srcset="https://substackcdn.com/image/fetch/$s_!Kt6H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 424w, https://substackcdn.com/image/fetch/$s_!Kt6H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 848w, https://substackcdn.com/image/fetch/$s_!Kt6H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 1272w, https://substackcdn.com/image/fetch/$s_!Kt6H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F901c3cd0-e0fe-4419-a339-98a1516ddd6b_1034x548.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://stylexjs.com/">StyleX</a>, the atomic CSS-in-JS library from Meta, has been all the rage on X recently. This probably follows the &#120143; <a href="https://x.com/poteto/status/2089227731305464150">Cursor migration from Tailwind to StyleX</a>. Or maybe it&#8217;s related to Meta open-sourcing <a href="https://astryx.atmeta.com/">Astryx</a>, the extensible, agent-friendly design system built on top and powering thousands of their apps for years.</p><p>Anyway, we already covered all that, so here are the recent resources to check out:</p><ul><li><p>&#128220; <a href="https://linear.app/now/styling-linear-for-the-future-stylex">Styling Linear for the future with StyleX</a> - Linear completed its styled-components to StyleX migration. They don&#8217;t explicitly mention Tailwind but still highlight where StyleX does better: strong type-safe constraints, deterministic and performant merging of styles, styling-at-a-distance deliberately hard.</p></li><li><p>&#128220; <a href="https://flaviocopes.com/stylex/">A deep dive into StyleX</a> - Hands-on introduction and opinionated conclusion: Tailwind&#8217;s terse syntax is better for humans, while StyleX&#8217;s stronger constraints are better for agents.</p></li><li><p>&#128230; <a href="https://github.com/aidenybai/tailwind-stylex">Tailwind-StyleX - Use Tailwind&#8217;s default design tokens directly in StyleX</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/1035/why-everyone-is-moving-to-stylex">Syntax.fm - Why everyone is moving to Stylex?</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://dub.sh/dyFMVkR">Lingui - New agent skills teach your AI agent to ship production-ready React i18n in one prompt</a></p></li><li><p>&#128064; <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/pull/75429">React Types PR - Types for React 19.3</a> - We already had a hint of what&#8217;s coming in the last issue. This DefinitelyTyped PR is still a draft but cautiously confirms the upcoming highlights. A new React DOM <code>browser()</code> API is coming. <code>&lt;ViewTransition&gt;</code> and <code>&lt;Fragment ref&gt;</code> will be stable for React DOM usage, designed to be extended by other platform/renderers, with React Native support likely coming later.</p></li><li><p>&#128214; <a href="https://react.dev/reference/react-dom/browser">React DOM Docs - New </a><code>use(browser(reason))</code><a href="https://react.dev/reference/react-dom/browser"> API</a> - This new API coming in v19.3 lets you mark a component as browser-only during server rendering. Must be called from a Client Component, within a Suspense boundary. There&#8217;s also a new <code>onBrowserBailout()</code> server API introduced for reporting.</p></li><li><p>&#128214; <a href="https://vercel.com/kb/guide/deploy-a-tanstack-start-app-to-vercel">How to Deploy a TanStack Start app to Vercel</a> - TanStack and Vercel are teaming up to make Vercel a first-class home for TanStack Start, leveraging the Nitro Vite plugin.</p></li><li><p>&#128272; <a href="https://nextjs.org/blog/august-2026-security-release">Next.js August 2026 Security Release</a> - v16.3.3 and v15.5.24 now available, fixing critical severity vulnerabilities.</p></li><li><p>&#128467;&#65039; <a href="https://reactadvanced.com/?utm_source=thisweekinreact">React Advanced London</a> - &#127468;&#127463; London - 23 &amp; 26 Oct. 40+ talks and 5+ hands-on workshops on modern React &amp; AI tooling for React devs. A great place to catch up with the community - all inside London&#8217;s historic ex-brewery. Save 10% on your ticket with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://sigh.dev/posts/making-react-testing-library-faster/">Making React Testing Library Tests 43% Faster</a> - The story of using Codex to find performance gains in RTL <code>getByRole()</code> and landing fixes upstream in jsdom.</p></li><li><p>&#128220; <a href="https://tendto.github.io/en/posts/ssg-for-react-with-vite/">SSG for React with Vite</a> - Argues SSG should be the default over CSR and shows how to implement that with a tiny Vite plugin.</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-sept2">build mode - We used context engineering to 5x conversion and 2x activation</a></p></li><li><p>&#128230; <a href="https://github.com/vitejs/vite-plugin-react/releases/tag/plugin-react%406.1.0">Vite Plugin React 6.1 - New </a><code>{compiler: true}</code><a href="https://github.com/vitejs/vite-plugin-react/releases/tag/plugin-react%406.1.0"> option to use the Oxc React Compiler</a> - After landing in Oxlint, the faster Oxc Rust-based React Compiler comes to Vite through a new optional <code>oxc-transform-react</code> package. More than 10x faster than the Babel plugin!</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.4">Bun 1.4</a> - The Rust rewrite is ready, alongside so many other things that the blog post probably takes hours to read, so we&#8217;ll focus on the React-related updates only. Built-in support for the React Compiler in Rust. A new <code>Bun.markdown.react()</code> turns Markdown into a React Element, supporting component substitution. Node.js compatibility improvements, Next.js 16 compatibility, reduced memory usage.</p></li><li><p>&#128230; <a href="https://formisch.dev/blog/formisch-v1/">Formisch 1.0 - Schema-first, framework-agnostic form library</a> - The form library coming from the Valibot ecosystem supports React and React Native. Includes migration guides from React Hook Form, Formik, and TanStack Form.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/query/releases/tag/release-2026-08-22-1856">TanStack Query 5.102 - Simplify Query Methods</a> - An important release for TanStack Query that finally implemented its RFC to merge 6 former imperative query methods under only 2 unified APIs: <code>query()</code> and <code>infiniteQuery()</code>.</p></li><li><p>&#128230; <a href="https://github.com/remorses/gpuix">GPUIX - React renderer for Zed&#8217;s GPUI</a> - A new performant alternative to Electron with no WebView to build GPU-accelerated desktop apps.</p></li><li><p>&#128230; <a href="https://github.com/vercel/satori/releases">Satori 0.29+ - </a><code>corner-shape</code><a href="https://github.com/vercel/satori/releases">, </a><code>backdrop-filter</code><a href="https://github.com/vercel/satori/releases">, HarfBuzz text shaping, and more</a> - This popular tool widely used to generate OpenGraph images received many interesting updates lately, soon available in Next.js <code>ImageResponse</code> API.</p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-21-0">React Aria 1.21 - NavigationTree component, Menu async loading</a></p></li><li><p>&#128230; <a href="https://astryx.atmeta.com/blog/astryx-v0-5-0">Astryx 0.5 - 30 locales, one Escape key, and bottom sheets in core</a></p></li><li><p>&#128230; <a href="https://waku.gg/blog/waku-v1-rc">Waku 1.0 RC - Public API fixed, type-safe and instant navigation</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/charts/releases/tag/v0.16.0">TanStack Charts 0.16 - Officially in alpha, ready to be field-tested</a></p></li><li><p>&#128230; <a href="https://nuqs.dev/docs/changelog#v2.10.0">Nuqs 2.10 - The React SPA adapter is now SSR-compatible for Astro, Inertia, Fastify</a></p></li><li><p>&#128230; <a href="https://github.com/fuma-nama/fumapress/releases/tag/fumapress%401.0.0">Fumapress 1.0 - Waku-based content site generator</a></p></li><li><p>&#128230; <a href="https://github.com/TrySound/rifm/releases/tag/v1.0.0">React Input Format &amp; Mask 1.0 - Hook/component for building formatted/masked inputs</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases#release-v7.86.0">React Hook Form 7.86 &amp; 7.87 - Typesafe </a><code>getErrors()</code><a href="https://github.com/react-hook-form/react-hook-form/releases#release-v7.86.0">, trigger </a><code>shouldTouch</code><a href="https://github.com/react-hook-form/react-hook-form/releases#release-v7.86.0">, opaque type registry</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/f48613c6">This Month in React - Release candidate season; is that an asteroid hitting web educators?</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_zGU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_zGU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_zGU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_zGU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_zGU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!_zGU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!_zGU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_zGU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_zGU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_zGU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4007669-8fbb-4807-aec5-bdbb738a7bc3_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/TkDodo">Dominik Dorfmeister</a></strong><a href="https://twitter.com/TkDodo">Web Developer - React-Query maintainer</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zS6b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zS6b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zS6b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zS6b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zS6b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!zS6b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Where test runners stop, Wallaby starts&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Where test runners stop, Wallaby starts" title="Where test runners stop, Wallaby starts" srcset="https://substackcdn.com/image/fetch/$s_!zS6b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zS6b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zS6b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zS6b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63c5f722-be84-44bb-bab7-79837eb5e679_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://wallabyjs.com/?referrer=ThisWeekInReactSep26">Where test runners stop, Wallaby starts</a></strong></p><p>A passing test tells an agent how the run ended, not whether the code behaved as intended. Wallaby turns your JavaScript, TypeScript, and Python tests into a live runtime model the agent can inspect throughout the task.</p><p>Wallaby keeps results and coverage current as files change. With the <a href="https://wallabyjs.com/whatsnew/cli.html?referrer=ThisWeekInReactSep26">Wallaby CLI for coding agents</a> &#129302;, agents can find tests covering a line, inspect branch coverage, follow one test&#8217;s execution path, and query runtime values in its exact context, without temporary logs or digging through terminal output.</p><p>Use Wallaby with Codex, Claude Code, GitHub Copilot, Cursor, Windsurf, and other agents locally, in containers, or in the cloud. <strong>Wallaby for coding agents is free for everyone during the beta.</strong></p><p><a href="https://wallabyjs.com/?referrer=ThisWeekInReactSep26">&#10145;&#65039; Upgrade your testing workflow</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><p><strong><a href="https://github.com/react-native-community/discussions-and-proposals/pull/1018">React Native RFC - Reducing the C/C++ public API</a></strong></p><p>React Native 1.0 is still on the horizon, but to respect Semantic Versioning, it first needs to clearly define its public API surface. Following the work on stable JS/TS and Java/Kotlin APIs, it&#8217;s now the turn of the C++ APIs to be clarified.</p><p>Until now, there has been no clear distinction between public and private C++ APIs. As a result, community libraries and frameworks sometimes depend on APIs that were never intended to be public. This can cause libraries to break when upgrading React Native, or force the core team to preserve backward compatibility for internal APIs to avoid breaking the ecosystem.</p><p>This RFC introduces a new three-tier visibility model for C++ APIs:</p><ul><li><p><strong>Public:</strong> Stable within major versions, safe for libraries to depend on, and exposed through a single umbrella header.</p></li><li><p><strong>Framework:</strong> Stable within minor versions. Regular usage emits a suppressible warning.</p></li><li><p><strong>Private:</strong> No stability guarantees. Regular usage emits a suppressible error.</p></li></ul><p>There&#8217;s existing tooling to take a snapshot of existing C++ APIs, that it will be adapted to take into accoun this new visibility model. All this will greatly help stabilize the C++ APIs and ensure React Native doesn&#8217;t ship unintended breaking changes.</p><p>Work is already in progress to apply this visibility model to all C++ APIs. This will be rolled out gradually, first opt-in through a <code>RN_STRICT_API</code> build flag, then opt-out after a grace period, giving time for the public API consumers to migrate to the new umbrella headers. Most APIs have already been categorized, so if your library depends on private or framework APIs, now is probably a good time to chime in.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://crisp.chat/?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=crisp_q3_nl&amp;utm_content=2sep26">Crisp - React Native chat SDK with TypeScript, push notifications, event listeners and Helpdesk integration</a></p></li><li><p>&#128227; <a href="https://margelo.com/blog/margelo-joins-callstack">Margelo Joins Callstack to Advance High-Performance React Native Engineering</a> - 2 major and complementary React Native consulting companies joining forces. Congrats to Mike, Marc, and all others.</p></li><li><p>&#128227; <a href="https://expo.dev/blog/introducing-observe">EAS Observe - Performance monitoring for Expo apps, now generally available</a></p></li><li><p>&#128227; <a href="https://www.openiap.dev/docs/updates/announcements#2026-08-19-amazon-fireos-vega">OpenIAP - Now backed by Amazon Developer, bringing IAP to Fire OS and Vega OS</a></p></li><li><p>&#128064; <a href="https://github.com/react/react-native/pull/57723">React Native PR - ResizeObserver</a> - A Web API spec-compliant implementation has been recently merged, but still behind a flag. More capable than <code>onLayout</code>.</p></li><li><p>&#128214; <a href="https://github.com/stephanww/rn-dev-security-guide">The React Native Developer&#8217;s Security Guide</a> - How to secure the developer&#8217;s workstation, toolchain, repository, and CI.</p></li><li><p>&#128467;&#65039; <a href="https://reactnativeconnection.io/?utm_source=thisweekinreact.com">React Native Connection</a> - &#127467;&#127479; Paris - 24 Sept. Last call to grab your ticket and join the React Native community in Paris! Get a 15% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://margelo.com/blog/speeding-up-expensifys-networking-with-nitro-fetch">Speeding up Expensify&#8217;s networking with NitroFetch</a> - Prefetching on the native side, before the JS bundle is even loaded, reduced startup time by at least 15%.</p></li><li><p>&#128220; <a href="https://margelo.com/blog/building-a-3d-ai-avatar-in-react-native">Building a 3D AI assistant using React Native and GPT-Realtime</a> - How to use <code>react-native-filament</code> to render 3D characters and sync its animations with AI responses.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/pasting-images-into-textinput-should-not-be-this-hard">Pasting images into TextInput should not be this hard</a> - Pasting an image into a chat input is surprisingly hard. Wrapping <code>TextInput</code> turned out to be the best decision to avoid reimplementing well-known behaviors and APIs.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/react-native-gesture-handler-s-touchable-the-button-we-wish-we-had-sooner/">Gesture Handler&#8217;s Touchable: The Button We Wish We Had Sooner</a> - The old nice button components are deprecated and replaced with the new Touchable component. Per-state scale, opacity, and underlay with custom transition times. Hover support on mobile via mouse and pencil, all without writing a single animation.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/working-with-the-react-native-super-app-showcase-repository">Working With the React Native Super App Showcase Repository</a> - How to work with super apps with non-trivial examples. App lifecycle, federation setup, monorepo management.</p></li><li><p>&#128220; <a href="https://ospfranco.com/concurrent-engines-crash/">React Native Bridgeless, race conditions with concurrent JS runtimes</a> - New Architecture changes how a reload instantiates a new runtime when doing an OTA update. This caused the query to run on the wrong thread, resulting in a crash.</p></li><li><p>&#128184; <a href="https://configcat.com/blog/ab-testing-react-native-apps-with-feature-flags/?utm_source=thisweekinreact_newsletter&amp;utm_medium=sponsor&amp;utm_campaign=reactnative_202609">ConfigCat - Run A/B Tests in React Native Apps with Feature Flags and Amplitude</a></p></li><li><p>&#128230; <a href="https://gtkx.dev/blog/gtkx-1-4">GTKX - React Navigation on Linux rendered by native libadwaita widgets</a> - The platform-agnostic core of React Navigation now renders to GNOME. Interesting signal for where navigation abstractions can go.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/4.6.0">Reanimated 4.6 - CSS lifecycle callbacks on native, contrastColor, RN 0.87 support</a></p></li><li><p>&#128230; <a href="https://kirillzyusko.github.io/react-native-teleport/blog/1-2-0-android-fast-reparenting">Teleport 1.2 - Fast reparenting on Android, no more empty frames</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/nitro/releases/tag/v0.37.0">Nitro 0.37 - Props move into core via C++ templates, immutable View prop snapshots</a></p></li><li><p>&#128230; <a href="https://screen-transitions.esjr.org/migrating-from-v3">Screen Transitions 4.0 - React 19.2 Activity, Reanimated 4, and a v3 migration guide</a></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-2-9-0">Maestro CLI 2.9 - Test light and dark mode in one flow, Android WebView inspection</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.11.0">Uniwind 1.11 - Filter support on iOS and RN 0.87, scoped variables</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.21.0">Argent 0.21 - Shake tool for simulators and emulators, profiler fixes</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v2.3.0">Rozenite 2.3 - Lynx support, agent tooling, and plugin testing utilities</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.20.10">Agent Device 0.20.10 - AI SDK and MCP integrations, improved iOS snapshots, better Android visibility and gestures, Web hover automation</a></p></li><li><p>&#128230; <a href="https://github.com/henrypldev/react-native-nitro-mlx/releases/tag/v0.6.0">Nitro MLX 0.6 - Turn-scoped inference on iOS, simplify agent chat experience, normalize LLM generation outcomes, configurable TTS</a></p></li><li><p>&#129302; <a href="https://expo.dev/services/simulators">Expo Cloud Simulators - Agents that reproduce TestFlight feedback, fix bugs, and open PRs</a></p></li><li><p>&#129302; <a href="https://x.com/rough__sea/status/2091755677974983025">Dactyl - Vibe coding platform for native apps that simulates SwiftUI in your browser</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-371-rnr-explains-pan-responder">RNR 371 - PanResponder and the anatomy of RN gestures</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-372-looking-back-on-chain-react-2026">RNR 372 - Looking back on Chain React 2026</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://www.bram.us/2026/08/20/the-future-of-css-target-multiple-classes-with-the-class-prefix-selector/">CSS - Class Prefix Selector</a> - Not implemented anywhere yet, but CSS will support <code>.prefix-*</code> selectors, letting you target multiple CSS classes at once.</p></li><li><p>&#128064; <a href="https://bsky.app/profile/did:plc:hxmev3uady7j4litwnr5fzbg/post/3muk7eu23w22b">HTML Spec PR - Out-of-order streaming</a> - This exciting feature is already in Chrome/Edge and has been</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/12.0">pnpm 12.0 - Rust rewrite, project-aware global bins, registry revisions, and more</a> - The upgrade from v11 seems easy, leading to significantly faster installs.</p></li><li><p>&#128230; <a href="https://zod.dev/blog/zod-4-5">Zod 4.5 - Ahead-of-time schema compilation, method memoization, new parsing features</a> - Precompiled schemas parse 3-9x faster. Significant schema memory footprint improvements!</p></li><li><p>&#128230; <a href="https://vgpu.sh/">vgpu - WebGPU library, designed for agents</a> - The creative library Vercel developed to ship performant shaders. Agents can verify their work with a CLI, even in sandboxes without a GPU.</p></li><li><p>&#128230; <a href="https://remix.run/blog/remix-3-release-candidate">Remix 3.0 RC - Full-stack, single dependency, composable JS framework based on web primitives</a> - I t&#8217;s time for the team to freeze feature development and commit to SemVer.</p></li><li><p>&#128230; <a href="https://rspack.rs/blog/announcing-2-2">Rspack 2.2 - Performance, HMR and </a><code>import.meta</code><a href="https://rspack.rs/blog/announcing-2-2"> improvements, Browserslist Baseline targets</a></p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-08-29-webpack-5-110/">Webpack 5.110 - Performance Hints, built-in CSS/HTML minification, native CSS recommended</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.8.0">Node.js 26.8 - Built-in ZIP archive support, REPL inline syntax highlighting</a></p></li><li><p>&#128230; <a href="https://github.com/jestjs/jest/releases/tag/v30.5.0">Jest 30.5 - </a><code>whenCalledWith()</code><a href="https://github.com/jestjs/jest/releases/tag/v30.5.0">, describe-level retries, new file watcher, perf and ESM fixes</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd60a167-0f4b-4193-b634-a78685b7c990_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JXe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!JXe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd60a167-0f4b-4193-b634-a78685b7c990_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GH1Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GH1Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GH1Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GH1Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GH1Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GH1Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg" width="1000" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!GH1Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GH1Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GH1Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GH1Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa152ccb5-011b-4cbe-8469-40522f7cd936_1000x820.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 294]]></title><description><![CDATA[React Compiler, TanStack, Next.js, GTKX, Effect, shadcn, Preact, Unhead, RHF | RN 0.87, Screens, RNGH, Worklets, Skia, Tuft, Enriched Markdown, Pager View, Firebase | Node, Astro, pnpm, Vitest, Solid,]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-294</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-294</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 21 Aug 2026 12:52:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f7ba0a9a-d233-4065-b0ae-47b0847beee3_3000x1400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here!</p><p>Back after a little break to cover news from the last two weeks. A lot is going on, apparently not everyone is on holiday because we still have many interesting releases, including many RCs from upcoming major versions.</p><p>The native React Compiler rollout continues. React v19.3 seems around the corner. Plenty of TanStack Router/Start and Next.js content.</p><p>React Native 0.87 is now out, paving the way for v1.0.</p><p>&#127965;&#65039; We&#8217;ll be taking another break next week. See you in September. &#128075;</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1LoS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1LoS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1LoS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1LoS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1LoS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1LoS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mike Grabowski&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!1LoS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1LoS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1LoS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1LoS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7517900-93fb-49a1-86a1-c0bf24f2b092_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/grabbou">Mike Grabowski</a></strong><a href="https://twitter.com/grabbou">CTO and founder - Callstack</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fjRN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fjRN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fjRN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fjRN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fjRN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!fjRN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg" width="1430" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1430,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;From 57 bugs to 1, thanks to Seer&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="From 57 bugs to 1, thanks to Seer" title="From 57 bugs to 1, thanks to Seer" srcset="https://substackcdn.com/image/fetch/$s_!fjRN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fjRN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fjRN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fjRN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd06516-5db5-4301-a817-4b530fc1fdf2_1430x715.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://blog.sentry.io/57-bugs-to-1/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q3-evergreen&amp;utm_content=newsletter-first-sponsor-dan-mindru-blog-learnmore">From 57 bugs to 1, thanks to Seer</a></strong></p><p>True story. Dan Mindru got a GitHub notification at the dentist, skimmed a green PR he hadn&#8217;t written, and hit merge before his name was called. That was one of 57 bugs in his backlog. He&#8217;s down to 1 now, and his system sorts every production bug into three tiers:<br>&#128526; <strong>Friendly</strong>: the null check, the off-by-one, the layout that breaks on mobile. The PR is waiting when you wake up.<br>&#128548; <strong>Grumpy</strong>: stale state after a websocket reconnect, optimistic UI that never rolls back. Seer can root-cause these, but it can&#8217;t run your tests. Something else has to.<br>&#129304; <strong>Punk</strong>: five-year-old prod data, one customer&#8217;s flag combo. Still yours, sorry.</p><p><a href="https://blog.sentry.io/57-bugs-to-1/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q3-evergreen&amp;utm_content=newsletter-first-sponsor-dan-mindru-blog-learnmore">Read the post &#8594;</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><p><strong>The React Compiler rollout</strong></p><p>The rollout of the Rust-based compiler continues:</p><ul><li><p><a href="https://oxc.rs/blog/2026-08-18-react-compiler-support">Oxlint 1.79 just added support</a>. The new <code>oxc-transform-react</code> package also unlocks automatic memoization and will soon be supported in <code>@vitejs/plugin-react</code> (<a href="https://github.com/vitejs/vite-plugin-react/pull/1419">PR</a> already merged). Along the way, they made many improvements to performance and behavior over the original Rust port and even found bugs in the Babel version.</p></li><li><p><a href="https://github.com/biomejs/biome/releases/tag/%40biomejs%2Fbiome%402.5.8">Biome 2.5.8</a> is out with a new <code>useReactCompiler</code> nursery/experimental rule, although it&#8217;s an initial version and there&#8217;s <a href="https://github.com/biomejs/biome/issues/10974">remaining work</a> to be done such as splitting the rule into many smaller ones.</p></li><li><p><a href="https://github.com/oven-sh/bun/issues/24356#issuecomment-5276435139">Bun 1.4 will include React Compiler support</a> through <code>--react-compiler</code> and <code>Bun.build({reactCompiler: true})</code>.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-aug19">build mode - Why we&#8217;re bullish on loops</a></p></li><li><p>&#128064; <a href="https://github.com/react/react/pull/37290">React PR - Enable parallel transitions flag everywhere</a> - Parallel transitions are already used in production at Meta, and are likely to come in v19.3 for both React and React Native.</p></li><li><p>&#128064; <a href="https://github.com/TanStack/router/discussions/8087">TanStack Router reimplemented</a> - Prominent Node.js contributor Yagiz Nizipli reimplemented TanStack Router APIs, claiming a drop-in replacement up to 19x faster. Tanner Linsley answers.</p></li><li><p>&#128172; Next.js team - <a href="https://www.reddit.com/r/nextjs/comments/1vnlcsk/were_the_nextjs_team_ask_us_anything/">Ask us anything on Reddit</a> and <a href="https://x.com/timneutkens/status/2090068164860117058">Ask us anything on X</a>- Apart from the many Next.js-related discussions, happy to hear that Fragment refs and ViewTransition will be stable in React 19.3! Also gives a preview of upcoming features such as granular prerendering and new data fetching primitives.</p></li><li><p>&#128172; <a href="https://github.com/remix-run/react-router/discussions/15371">React Router - Changes planned for v9</a> - This discussion will keep track of what&#8217;s coming in the next major, scheduled for mid-2027.</p></li><li><p>&#128038; <a href="https://x.com/poteto/status/2089227731305464150">Cursor completed its migration from Solid (v1) to React and StyleX</a> - In practice, signal-based approaches created perf footguns. Their new product &#8220;Bot&#8221; forbids the direct usage of <code>useEffect</code>.</p></li><li><p>&#128467;&#65039; <a href="https://reactsummit.us/?utm_source=thisweekinreact">React Summit US</a> - &#127482;&#127480; New York - 17 &amp; 20 Nov. Incredible lineup announced featuring Kent C. Dodds, Shaundai Person, Ken Wheeler, Tanner Linsley, and Seth Webster! Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://julesblom.com/writing/hoistable-svg-defs-ii">Impersonating the DOM</a> - A quite interesting lib design technique used by React Aria. <code>createPortal(children, fakeDocument)</code> lets you eavesdrop on the reconciler operations and get access to the rendered children. This pattern lets you do various things, such as hoisting/deduplicating SVG <code>&lt;defs&gt;</code>.</p></li><li><p>&#128220; <a href="https://lovable.dev/blog/how-we-migrated-lovable-dev-away-from-nextjs">How Lovable.dev moved from Next.js to TanStack Start</a> - Lovable builds and hosts primarily TanStack Start apps, so they decided to adopt the framework for their flagship app to dogfood their own platform and turn it into a typical Lovable app. This describes the incremental migration approach: making the code framework-agnostic, using agents, migrating related routes together, and ensuring both frameworks can run simultaneously. The migration brought better DX/AX and simpler abstractions, but TanStack Start requires more bundler customization.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/making-v0-navigations-instant">Making Navigations Instant in v0</a> - Next.js 16.3 now supports pre-rendering dynamic content at runtime, making navigation feel instantaneous. Assert this behavior with a new Playwright <code>instant()</code> helper, and let your AI agents fix the failing tests with the provided skill.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/reliable-query-prefetching-with-tanstack-router">Reliable Query Prefetching with TanStack Router</a> - Reliable prefetching requires using the same query options in the route loader prefetches and component queries, which may diverge at scale. Put query options in Route Context to keep them in sync.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-router-navigation-lanes">Inside a TanStack Router Navigation</a> - Explains the lifecycle of a navigation and how edge cases are handled, such as using a transaction and private lane system to handle race conditions.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/building-app-like-experiences-with-nextjs-16-3">Building App-like Experiences with Next.js 16.3</a> - A nice overview of all the cutting-edge Next.js features useful to build modern web apps, illustrated through 4 open source app demos.</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/coordinating-optimistic-updates-in-nextjs/">Coordinating Optimistic Updates in Next.js</a> - Use <code>useActionState</code> and <code>useOptimistic</code> to coordinate overlapping transitions with an Action queue, a reducer, and optimistic state with automatic rollbacks. Not so easy to wire, but this pattern can be learned once and applied in many places.</p></li><li><p>&#128220; <a href="https://next-intl.dev/blog/nextjs-root-params">Using </a><code>next/root-params</code><a href="https://next-intl.dev/blog/nextjs-root-params"> in Next.js 16.3</a> - A game-changer for <code>next-intl</code>, that can now read a <code>[locale]</code> param of a root layout in all Server Components.</p></li><li><p>&#128184; <a href="https://trustedrouter.com/openai-compatible-llm-api?utm_source=thisweekinreact&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=react_link_20260819&amp;utm_content=react_link_every_model">TrustedRouter - Add every AI model to your React app through one OpenAI-compatible API with automatic failover and no prompt or output logs</a></p></li><li><p>&#128230; <a href="https://compiled.run/oxc-tsrx">OXC for TSRX - Parse, lint, format </a><code>.tsrx</code><a href="https://compiled.run/oxc-tsrx"> files with Oxc</a> - This promising spiritual successor to JSX now has a fast Rust-based toolchain.</p></li><li><p>&#128230; <a href="https://gtkx.dev/blog/gtkx-1-0">GTKX 1.0 - The React framework for Linux, declarative layer on top of GTK4</a></p></li><li><p>&#128230; <a href="https://github.com/unjs/unhead/releases/tag/v3.3.0">Unhead 3.3 - Framework-agnostic </a><code>&lt;head&gt;</code><a href="https://github.com/unjs/unhead/releases/tag/v3.3.0"> component - Support </a><code>&lt;Fragment&gt;</code><a href="https://github.com/unjs/unhead/releases/tag/v3.3.0">, various React fixes</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/astryx/releases">Astryx 0.3 &amp; 0.4 - Meta&#8217;s fully customizable design system based on StyleX</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.85.0">React-Hook-Form 7.85 - Support React </a><code>&lt;Activity&gt;</code></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-08-questionnaire">shadcn React 0.3 - New </a><code>&lt;Questionnaire&gt;</code><a href="https://ui.shadcn.com/docs/changelog/2026-08-questionnaire"> component for multi-step question flows</a></p></li><li><p>&#128230; <a href="https://www.bengubler.com/posts/2026-08-14-introducing-fig-ui-runtime">Fig - A small TypeScript UI runtime based on React Fiber.</a></p></li><li><p>&#128230; <a href="https://github.com/rshono/rshono">Rshono - Minimalist web framework based on Hono, Rspack and React Server Components</a></p></li><li><p>&#128230; <a href="https://github.com/huozhi/sugar-high/releases/tag/v2.0.0">Sugar High 2.0 - Lightweight, composable syntax highlighter with React bindings</a></p></li><li><p>&#128230; <a href="https://tanstack.com/blog/announcing-tanstack-form-v2-alpha">TanStack Form 2.0 alpha - Redesigned APIs, new validation pipeline, performance and type-safety improvements</a></p></li><li><p>&#128230; <a href="https://github.com/preactjs/preact/releases/tag/11.0.0-rc.0">Preact 11.0 RC - </a><code>use()</code><a href="https://github.com/preactjs/preact/releases/tag/11.0.0-rc.0">, </a><code>createPortal()</code><a href="https://github.com/preactjs/preact/releases/tag/11.0.0-rc.0">, </a><code>useEffectEvent()</code><a href="https://github.com/preactjs/preact/releases/tag/11.0.0-rc.0">, and more</a></p></li><li><p>&#128230; <a href="https://thoughtbot.com/blog/humid-1-0-react-server-side-rendering-in-rails-can-be-easy">Humid 1.0 - React server-side rendering in Rails using V8 / mini_racer</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=397MsJf8HGg">Lucas Barake - The state library that made me drop Zustand</a> - Effect v4 is <a href="https://www.effect.website/blog/releases/effect/40-rc">now in RC</a>, comes with a reactive Atom implementation including first-class React bindings.</p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/55d1846a">This Month in React - July 2026 - React-alikes, governance, and state management</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-RJT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-RJT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-RJT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-RJT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-RJT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-RJT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;William Candillon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="William Candillon" title="William Candillon" srcset="https://substackcdn.com/image/fetch/$s_!-RJT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-RJT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-RJT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-RJT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ddc625-a159-469a-ad53-e54a85d2c62d_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/wcandillon">William Candillon</a></strong><a href="https://twitter.com/wcandillon">React-Native animations expert - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S-Kh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S-Kh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S-Kh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S-Kh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S-Kh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!S-Kh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;New Speakers &amp; Pre-Conference Workshop&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="New Speakers &amp; Pre-Conference Workshop" title="New Speakers &amp; Pre-Conference Workshop" srcset="https://substackcdn.com/image/fetch/$s_!S-Kh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S-Kh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S-Kh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S-Kh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd990c49e-c9eb-4911-9bad-ae6b71ebe787_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.agent.sh/?utm_campaign=agent&amp;utm_source=twir&amp;utm_medium=email=utm_content=aug19">New Speakers &amp; Pre-Conference Workshop</a></strong></p><p><strong>Carl Ross</strong> (<strong>OpenAI)</strong> and <strong>Nick Miller</strong> (<strong>Cursor)</strong> have recently joined the lineup, alongside other top AI engineers from <strong>Google</strong>, <strong>Meta</strong>, <strong>Amazon</strong>, <strong>Expo</strong> and other tech giants.</p><p>Agenda is now almost full with talks covering 4 main angles:</p><ul><li><p>Vibe Coding</p></li><li><p>Agentic Engineering Fundamentals</p></li><li><p>Orchestration &amp; Multi-Agent Systems</p></li><li><p>Adoption &amp; Case Studies</p></li></ul><p>The last few spots are still available for the free workshop hosted by Amazon on September 16: <em><strong>Build Your Own Software (re)Factory</strong></em>. First come, first served! Book your spot at <a href="https://www.agent.sh/workshop?utm_campaign=agent&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=program">agent.sh/workshop.</a></p><p>Join Agent Conf in Warsaw on September 17&#8211;18 to get better at coding with AI agents.</p><p>Conference tickets are available at <a href="https://www.agent.sh/">agent.sh</a>.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><p><strong><a href="https://reactnative.dev/blog/2026/08/11/react-native-0.87">React Native 0.87</a></strong></p><p>Like clockwork, React Native 0.87 is out! It&#8217;s the biggest step towards RN 1.0 in a long time, coming with intentional breaking changes, so it deserves more than a routine upgrade note.</p><ul><li><p><strong>Strict TypeScript API by default</strong>: Types are generated automatically from source and scoped to the package&#8217;s root, so internal file changes are no longer breaking changes. Dedicated <code>*Instance</code> types (e.g. <code>ViewInstance</code>, <code>TextInputInstance</code>) improve <code>ref</code> typing of built-in components, and doc comments now flow straight into your IDE. Alex Hunt <a href="https://x.com/huntie/status/2087221384422592629">goes into detail</a> about the work that went into this: compatibility fixes for Tailwind, Uniwind, and Expo Web, plus an upstream TypeScript fix for hidden <code>Libraries/</code> subpaths.</p></li><li><p><strong>Faster, leaner Metro</strong>: Source map generation is now 2x faster and uses half of the memory. Support for TypeScript and ESM config files.<br><strong>Experimental Swift Package Manager support for iOS</strong>: Opt-in and additive: Xcode is enough &#8212; no Ruby, no Bundler, no CocoaPods. CocoaPods remains the default path.</p></li><li><p><strong>Android Gradle Plugin (AGP) v9</strong>: First RN release to support AGP 9, with recommended opt-outs for built-in Kotlin and the new DSL until AGP 10.x.</p></li><li><p><strong>API surface cleanup</strong>: Many deprecated APIs have been removed, including flagship ones like <code>InteractionManager</code>. New APIs are marked as deprecated and scheduled to be removed later. <code>AbortController</code> is now complete and <code>backgroundImage: linear-gradient/radial-gradient</code> is now stable.</p></li><li><p><strong>New requirements</strong>: The minimum toolchain requirements is now Node.js 22, AGP 9, and Kotlin 2.0+.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://crisp.chat/?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=crisp_q3_nl&amp;utm_content=19aug26">Crisp - Add in-app customer support to your React Native or Expo app in just a few lines of code</a></p></li><li><p>&#128214; <a href="https://github.com/react/react-native-website/pull/5111">RN docs - Strict TypeScript API guide updated for 0.87: ref types, setup-env, FAQs</a></p></li><li><p>&#128467;&#65039; <a href="https://reactnativeconnection.io/?utm_source=thisweekinreact.com">React Native Connection</a> - &#127467;&#127479; Paris - 24 Sept. Deep dive into mobile development with top-tier experts from Expo, Software Mansion and Callstack. Regular ticket window closing August 31. Save 15% on your ticket with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://margelo.com/blog/fitting-RAG-in-your-pocket">Fitting RAG in Your Pocket: Local Retrieval in React Native</a> - How to build on-device data retrieval for your apps using <code>@react-native-ai/llama</code> and native vector search with <code>nitro-sqlite</code> + <code>sqlite-vec</code></p></li><li><p>&#128220; <a href="https://swmansion.com/blog/the-memory-hermes-cant-see-stale-shadow-nodes-in-react-native/">The Memory Hermes Can&#8217;t See: Stale Shadow Nodes in React Native</a> - Recent Hermes V1 memory regression triggered additional experiments that surfaced a fascinating finding about the Shadow Tree. Unmounting views causes the React component and the objects attached to it to still exist in memory, which can only be cleaned up by GC run.</p></li><li><p>&#128220; <a href="https://shopify.engineering/mobile-e2e-testing">How we raised mobile end-to-end test stability to 98%</a> - Shopify stopped patching their Appium E2E suite to fix flaky tests with an opinionated wrapper. They moved away from testing implementation details with TestIDs to using computer vision.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-build-a-resilient-activity-tracker-with-expo">How to build a resilient activity tracker with Expo</a> - Build an Expo app with sessions that survive backgrounding, app kills, and crashes.</p></li><li><p>&#128220; <a href="https://margelo.com/blog/react-native-barcode-scanner">Scanning Barcodes in React Native Apps: The Complete Guide (2026)</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/fable-5-vs-gpt-5-6-sol-expo-apps">Fable 5 vs GPT-5.6 Sol: I spent $2,000 and 2 billion tokens to find out who wins</a></p></li><li><p>&#128220; <a href="https://swmansion.com/blog/haptic-feedback-on-the-web-why-the-web-deliberately-refuses-to-be-as-tactile-as-native-apps/">Haptic Feedback on the Web: Why the Web Deliberately Refuses to Be as Tactile as Native Apps</a></p></li><li><p>&#128184; <a href="https://configcat.com/blog/ab-testing-react-native-apps-with-feature-flags/?utm_source=thisweekinreact_newsletter&amp;utm_medium=sponsor&amp;utm_campaign=reactnative_20260819">ConfigCat - Release React Native Features with Feature Flags, Without Redeploying</a></p></li><li><p>&#128230; <a href="https://invertase.io/blog/react-native-firebase-v26-release">Firebase 26 - New architecture foundation: TurboModules, TypeScript parity, modular API</a></p></li><li><p>&#128230; <a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.11.0">Skia 2.11 - Updates Skia engine, drive multiple animated props from one shared value</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v2.1.0">Rozenite 2.1 - Unified plugin UI, feature flags plugin, agent skills CLI</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.23.0">Sentry 8.23 - Swift pod migration</a> - Action required for RN &lt; 0.75, <code>use_modular_headers!</code> is required in the Podfile now that RNSentry ships Swift</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.27.0">Screens 4.27 - RN 0.87 support, experimental </a><code>ScrollToTopGuard</code></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-2-8-0">Maestro 2.8 - Swipe from a point inside an element, variables in permissions, screenshot tresholds, and Maestro Cloud improvements</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/enriched-markdown/releases/tag/v1.0.0">Enriched Markdown 1.0 - First stable release: block-editing input pipeline, iOS SwiftUI renderer</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-pager-view/releases/tag/v9.0.0">Pager View 9.0 - Replaces legacy pager implementation with Jetpack Compose on Android</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.2.0">Gesture Handler 3.2 - </a><code>Pressable</code><a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.2.0"> on </a><code>Touchable</code><a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.2.0">, hover callbacks, Strict TS API, AGP 9</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.12.0">Worklets 0.12 - WeakRef on worklet runtimes, Bundle Mode loading on par with RN, </a><code>enableLocking</code><a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.12.0"> option</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.6.0">Nitro Fetch 1.6 - tvOS support, shared iOS URLCache, prefetch cache fixes</a></p></li><li><p>&#128230; <a href="https://github.com/JubaKitiashvili/expo-pretext/releases/tag/v1.2.0">Expo Pretext 1.2 - Fixes Android module that never compiled, web font measurement fix</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.20.0">Argent 0.20 - Concurrent flow recordings, Chromium per launch step, MCP registry, .env secrets</a></p></li><li><p>&#128230; <a href="https://github.com/appandflow/react-native-safe-area-context/releases/tag/v5.9.0">Safe Area Context 5.9 - AGP 9 support, web resize/inset fixes</a></p></li><li><p>&#129302; <a href="https://expo.dev/services/tuft">Expo Tuft - Higher-order agent reachable from Slack/iMessage, runs on an always-on machine</a> - Technical preview of a new Expo AI product.</p></li><li><p>&#129302; <a href="https://github.com/margelo/ai-chat-demo">MargeloChat - Open-source ChatGPT-style RN AI chat app with RAG and streaming</a></p></li><li><p>&#129302; <a href="https://github.com/joshuayoes/ios-simulator-mcp/releases/tag/v2.1.0">iOS Simulator MCP 2.1 - App lifecycle tools: terminate_app, open_url, list_apps</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=eiGcqvji4nk">Callstack - Can a Specialized Model Beat Frontier Models at React Native?</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-369-rnr-explains-appregistry">RNR 369 - AppRegistry Explained</a> - Breaks down RN&#8217;s AppRegistry. What&#8217;s under the hood. From Expo and app entry points to brownfield apps and more.</p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-370-copilotkit-with-mike-ryan">RNR 370 - CopilotKit with Mike Ryan</a> - Bringing AI agents to RN apps. Breaks down of AG-UI, generative UI, shared state, and the guardrails needed for trustworthy experiences.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://portswigger.net/research/css-the-bomb-inside-your-inbox">CSS: the bomb inside your inbox</a> - Novel hacking techniques showing how CSS sanitizers in Gmail/Outlook/Fastmail can be worked around to steal tokens, hijack clicks, or keylog passwords.</p></li><li><p>&#128220; <a href="https://green.sapphi.red/blog/how-variable-mangling-works-in-oxc-minifier">How Variable Mangling Works in Oxc Minifier</a> - Replacing original variable names with shorter ones with a slot assignment algorithm.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.7.0">Node.js 26.7 - Perfetto tracing support</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-720/">Astro 7.2 - Incremental static builds, opt out of session support</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/whats-different-in-pnpm-12">pnpm 12.0 RC</a> - pnpm 12 has been rewritten in Rust and should be easy to adopt, apart from 5 things that differ.</p></li><li><p>&#128230; <a href="https://main.vitest.dev/guide/migration.html#vitest-5">Vitest 5.0 RC - Clear mocks by default, fake timers now mock Temporal, and more</a> - Stable version expected in 2-3 weeks, check the full v5 migration guide.</p></li><li><p>&#128230; <a href="https://www.solidjs.com/blog/solid-2-0-rc-the-big-reveal">Solid 2.0 RC - First-class async support, new Rust-based compiler toolchain, simpler API surface</a></p></li><li><p>&#128230; <a href="https://svelte.dev/blog/sveltekit-3-release-candidate">SvelteKit 3.0 RC - Vite 8 + Rolldown, error boundaries, validated env vars, remote functions</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099611e-900e-479b-81c2-b525d68ee955_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hvDo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!hvDo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099611e-900e-479b-81c2-b525d68ee955_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3dIK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3dIK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3dIK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3dIK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3dIK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!3dIK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg" width="1000" height="687" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:687,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!3dIK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3dIK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3dIK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3dIK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad142e02-e778-4f4b-8f85-7c3611b461d2_1000x687.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ddny!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ddny!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ddny!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ddny!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ddny!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ddny!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg" width="1000" height="867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!ddny!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ddny!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ddny!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ddny!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e6ef8d1-b74a-428c-82de-33445d1b32db_1000x867.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 293]]></title><description><![CDATA[Next.js, TanStack, browser(), React Aria, MobX, SWR, WebMCP, R3F | PlainText, Vision Camera, Gesture Handler, Expo Simulators, Firebase, Voltra, AppControlBench | Stacked PRs, Flue, Node, script]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-293</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-293</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 14 Aug 2026 12:00:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W9Fh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, Kasia and Kuba from <a href="https://swmansion.com/">Software Mansion</a> here.</p><p>This week, Next.js 16.3 officially shipped, bringing Instant Navigations to the App Router and cutting dev server RAM usage by up to 90%.</p><p>On the React Native side, a new, faster PlainText component and a deep dive into Vision Camera v5.</p><p>Across the broader dev ecosystem, GitHub stacked PRs finally entered public preview with native base retargeting and a gh-stack CLI.</p><p>Let&#8217;s dive in!</p><p><strong>&#127965;&#65039;FYI: we&#8217;re taking a break next week; see you soon!</strong></p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PF-E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PF-E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PF-E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PF-E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PF-E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!PF-E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!PF-E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PF-E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PF-E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PF-E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e444617-0af7-4826-b1eb-084cf9501791_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/Baconbrix">Evan Bacon</a></strong><a href="https://twitter.com/Baconbrix">Engineering Manager - Expo</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0fSj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0fSj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0fSj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0fSj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0fSj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0fSj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!0fSj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0fSj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0fSj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0fSj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6713081a-7796-46e2-a9cb-fa1b40bb8091_2816x1472.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q3&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W9Fh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W9Fh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W9Fh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W9Fh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W9Fh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!W9Fh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Next.js 16.3 Released: Instant Navigations &amp; 90% RAM Reduction&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Next.js 16.3 Released: Instant Navigations &amp; 90% RAM Reduction" title="Next.js 16.3 Released: Instant Navigations &amp; 90% RAM Reduction" srcset="https://substackcdn.com/image/fetch/$s_!W9Fh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W9Fh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W9Fh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W9Fh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F993c2320-cf5a-4850-ae45-ac475aec4a21_2400x1256.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://nextjs.org/blog/next-16-3">Next.js 16.3 - Instant Navigations and 90% less RAM in dev</a></strong></p><p>Next.js 16.3 officially shipped with major engine and runtime upgrades. Long dev sessions now use up to 90% less RAM. Turbopack now supports Vite-like <code>import.meta.glob()</code>, and rebuilds get faster thanks to artifact caching. SSR handles up to 22% more requests. TypeScript 7 is supported by default through a new <code>tsc</code> CLI integration. Various AI improvements include versioned docs for agents, skills, and actionable errors. There are also new APIs such as <code>catchError</code> to create custom error boundaries, and <code>next/root-params</code> useful for i18n.</p><p>The core release focuses on Instant Navigations (built on top of Cache Components) to give server-driven apps the snappy responsiveness of an SPA. This signals a clear architectural shift for Next.js: returning to a dynamic-by-default model with fully explicit, predictable caching.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!67dI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!67dI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!67dI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!67dI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!67dI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!67dI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack Table V9&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack Table V9" title="TanStack Table V9" srcset="https://substackcdn.com/image/fetch/$s_!67dI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!67dI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!67dI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!67dI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37e86963-8eba-4f9d-8da8-cacacc1ca927_1200x630.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://tanstack.com/blog/announcing-tanstack-table-v9">TanStack Table V9</a></strong></p><p>This new major version is finally here, after more than 2 years of work. It lays a new foundation for years to come, with a tree-shakable plugin architecture, state management powered by TanStack Store, new features, major performance improvements, hundreds of bug fixes, and more.</p><p>As a framework-agnostic lib, it comes with many framework-specific adapters, including new ones. The existing ones have been refreshed around a new reactivity model. For React developers specifically, it now supports React 18+, works well with the React Compiler, and unlocks more granular reads based on atoms/selectors to avoid useless re-renders.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://trustedrouter.com/openai-compatible-llm-api?utm_source=thisweekinreact&amp;utm_medium=sponsored_newsletter&amp;utm_campaign=react_link_20260805&amp;utm_content=react_link_openai_compatible">TrustedRouter - Build AI features with hundreds of models through one OpenAI-compatible API with failover and no prompt or output logs</a></p></li><li><p>&#128064; <a href="https://github.com/react/react/pull/37143">React Core PR - </a><code>browser()</code><a href="https://github.com/react/react/pull/37143"> API</a> - Exposes a client-only react-dom API to safely suspend SSR for browser-specific components, eliminating hacky server error-suppression workarounds.</p></li><li><p>&#128220; <a href="https://shubhra.dev/tutorials/react-19-useactionstate">React 19&#8217;s useActionState: Preventing Sequenced Double Submits</a> - Explains how React 19&#8217;s useActionState queue behaves and how to handle <code>isPending</code> states to prevent duplicate submits.</p></li><li><p>&#128220; <a href="https://shubhra.dev/tutorials/nextjs-16-useoptimistic-rollback-pattern">Next.js 16 useOptimistic: Fixing Rapid-Click Race Conditions &amp; Auto-Rollbacks</a> - Covers React 19 optimistic UI edge cases, demonstrating why manual rollback logic is redundant, how to prevent overlapping requests per item, and how to handle Next.js 16 cache revalidation with updateTag.</p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/visual-regression-testing-introduction-guide">Visual Regression Testing: The Most Important Test You&#8217;re Not Running</a> - demonstrates how visual regression tests catch layout and CSS bugs missed by functional tests, with setup examples for E2E test runners and component environments.</p></li><li><p>&#128220; <a href="https://granat.blog/posts/2026-07-24-react-arven/">React Arven: Optimizing React Context Performance for Complex Local State</a> - Introduces a 1.4 kB dependency-free library that uses useSyncExternalStore and stable action refs to eliminate React Context re-renders when orchestrating complex local state.</p></li><li><p>&#128220; <a href="https://boda.sh/blog/generative-ui/">Architectural Patterns for Generative UI in React</a> - Breaks down 3 approaches to letting LLMs build UI dynamically &#8212; schema-constrained output, a declarative JSON spec (A2UI/AG-UI), and open-ended sandboxed code generation</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-aug5">build mode - Stop being the code review bottleneck</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/charts">TanStack Charts pre-alpha - Minimal ~8 KiB core, framework-agnostic charting primitives on D3, with first-class React bindings</a></p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-20-0">React Aria 1.20 - Adds PreviewTrigger popovers, TokenField for inline tags, native context menus, interactive table rows, and Next.js 16 RSC collection support</a></p></li><li><p>&#128230; <a href="https://github.com/pmndrs/react-three-fiber/releases/tag/v9.7.0">React Three Fiber 9.7 - Hardens its reconciler to align with react-dom, fixing child desyncs, prop resets, and event priority</a></p></li><li><p>&#128230; <a href="https://github.com/GoogleChromeLabs/use-webmcp-tool">use-webmcp-tool - Experimental project from the Chrome team, a React abstraction for exposing client-side tools to browser AI agents via WebMCP</a></p></li><li><p>&#128230; <a href="https://github.com/mobxjs/mobx/releases/tag/mobx%407.0.0">MobX 7.0 - Drops legacy compatibility, reduces ESM bundle size while maintaining the mobx-react-lite vs mobx-react architecture</a></p></li><li><p>&#128230; <a href="https://github.com/vercel/swr/releases/tag/v2.5.0">SWR 2.5 - Adds experimental RSC data preloading to hydrate client cache without duplicate requests, plus a new </a><code>unload()</code><a href="https://github.com/vercel/swr/releases/tag/v2.5.0"> API to purge cache and abort in-flight queries</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.84.0">React Hook Form 7.84 - Enhances </a><code>&lt;Form /&gt;</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.84.0"> submit behavior, improves performance, reduces bundle size</a></p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-7-0">BaseUI 1.7 - Reduces bundle size (~3%), enhances mobile UX and </a><code>&lt;ScrollArea.Thumb&gt;</code><a href="https://base-ui.com/react/overview/releases/v1-7-0"> overscroll feedback, and bundles accessibility and bug fixes</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/astryx/releases/tag/v0.2.0">Astryx 0.2 - RTL auto-mirroring with a dedicated ESLint rule, tooltip status variant for inputs, scriptable CLI engine APIs, removed TabList orientation and CLI JSON types</a></p></li><li><p>&#128230; <a href="https://reactbits.dev/">React Bits upgrade - 27 new React components for creative developers</a></p></li><li><p>&#128230; <a href="https://github.com/styled-components/styled-components/releases/tag/styled-components%406.5.0">Styled Components 6.5 - Much faster type-checking, stricter RN styles, new CustomStyle type helper</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X2A0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X2A0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X2A0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X2A0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X2A0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!X2A0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mike Grabowski&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!X2A0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X2A0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X2A0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X2A0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b92ad92-f490-41a7-a5f1-85f5aab6337f_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/grabbou">Mike Grabowski</a></strong><a href="https://twitter.com/grabbou">CTO and founder - Callstack</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L5ud!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L5ud!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L5ud!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L5ud!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L5ud!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!L5ud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Stop Rebuilding Forms for Every Business Change&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stop Rebuilding Forms for Every Business Change" title="Stop Rebuilding Forms for Every Business Change" srcset="https://substackcdn.com/image/fetch/$s_!L5ud!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L5ud!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L5ud!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L5ud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff68c0e5f-9631-4a69-9f5a-f772e1ff41aa_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://surveyjs.io/?utm_source=this-week-in-react&amp;utm_medium=email">Stop Rebuilding Forms for Every Business Change</a></strong></p><p>Hardcoded forms create a costly cycle: every new field, workflow, validation rule or customer-specific variation becomes another development task, code review and deployment.</p><p>SurveyJS breaks that cycle. Developers <a href="https://surveyjs.io/try/reactjs">embed a JSON-powered form builder</a> and reusable form runtime into their React application once. Business teams can then create and update forms through configuration rather than application code.</p><ul><li><p>Ship new forms faster</p></li><li><p>Reduce repetitive frontend work</p></li><li><p>Launch form changes without waiting for a release cycle</p></li><li><p>Keep full control over your backend, data, security, and branding</p></li></ul><p>Your developers own the platform. Your business teams manage the forms. &#128578;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://crisp.chat/?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=crisp_q3_nl&amp;utm_content=5aug26">Crisp - Add customer support chat to your React Native app with our SDK for iOS, Android and Expo</a></p></li><li><p>&#128038; <a href="https://x.com/swmansion/status/2082488629167841415?s=20">Faster touchables in Gesture Handler coming soon</a> - RNGH&#8217;s Touchable rendered ~300ms faster than RN&#8217;s Pressable in a list with 1000 buttons in one of the benchmarks, definitely worth keeping an eye on this!</p></li><li><p>&#128064; <a href="https://expo.dev/services/simulators">Simulators for agents from Expo coming soon</a> - Expo announced a waitlist for on-demand cloud simulators. This helps AI agents build, run, and visually verify app changes.</p></li><li><p>&#128214; <a href="https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/callbacks-events/#gestureevent-callbacks">Gesture Handler Docs - New interactive docs on callbacks &amp; events</a> - You can now see the callbacks chain and get a better understanding of how they resolve.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/on-device-face-recognition-react-native">Building a Real-Time Face Recognition App in React Native with VisionCamera</a> - a full on-device pipeline built on VisionCamera&#8217;s frame processors, ONNX Runtime, and OpenCV - with real benchmarks and hard-won lessons like mirrored-frame bugs.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/migration-to-react-native-in-2026-starts-with-a-delivery-question">Migration to React Native in 2026 Starts With a Delivery Question</a>: brownfield vs. greenfield migration is a choice around how you ship. Also, a useful take on where AI agents help the port - and where they don&#8217;t.</p></li><li><p>&#128184; <a href="https://configcat.com/blog/ab-testing-react-native-apps-with-feature-flags/?utm_source=thisweekinreact_newsletter&amp;utm_medium=sponsor&amp;utm_campaign=reactnative_20260805">ConfigCat - Run A/B Tests in React Native Apps with Feature Flags and Amplitude</a></p></li><li><p>&#128230; <a href="https://github.com/mdjastrzebski/react-native-plain-text">React Native Plain Text</a> - A faster, lower memory alternative to use for simple texts, currently limited to static, single-style text. It&#8217;s faster than RN&#8217;s core `&lt;Text&gt;` component, and also outperforms the raw <code>NativeText/RCTText</code> according to &#120143; <a href="https://x.com/mdj_dev/status/2082461349196534119">the author&#8217;s benchmark</a>.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched-html/releases/tag/v1.1.0%20">Enriched HTML 1.1 - Stable web support with full feature parity</a></p></li><li><p>&#128230; <a href="https://github.com/invertase/react-native-firebase/blob/main/packages/app/CHANGELOG.md%20">React Native Firebase App 26.1 - migrated to turbo Modules, requires new architecture</a></p></li><li><p>&#128230; <a href="https://github.com/kadiraydinli/react-native-system-navigation-bar/releases/tag/v3.0.0">React Native System Navigation Bar 3.0 - Rewritten on new architecture</a></p></li><li><p>&#128230; <a href="https://github.com/sbaiahmed1/react-native-blur/releases/tag/v5.0.0">React Native Blur 5.0 - Requires new architecture and RN 0.80+, raw native components deprecated, added ref forwarding and react-native-web support</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.21.0%20">Sentry 8.21 - Improved session replay details</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.18.0">Argent 0.18 - Rotate directive for flow automation, single-element snapshot diffs, human-readable tool-server logging, CSS combinator flow selectors</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v2.2.0">Voltra 2.2 - Improved build stability, runtime props support</a></p></li><li><p>&#128230; <a href="https://github.com/RevenueCat/react-native-purchases/releases/tag/10.6.0">React Native Purchases 10.6 - Supports multipage paywalls</a></p></li><li><p>&#128230; <a href="https://github.com/appandflow/react-native-ease/releases/tag/v0.8.0">React Native Ease 0.8 - Initial velocity for spring transitions, iOS retain-cycle fix</a></p></li><li><p>&#129302; <a href="https://appcontrolbench.swmansion.com/">AppControlBench - Compare models, tools, cost, and test runs across real iOS app-control tasks</a> - AI benchmark comparing the performance of tools such as Argent and Agent-Device with various models.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=fEn-PQXBp28">Callstack - Build a React Native News Agent With Eve</a></p></li><li><p>&#127897;&#65039; <a href="https://www.callstack.com/podcasts/visioncamera-v5-with-marc-rousavy">React Universe on Air - VisionCamera V5 With Marc Rousavy</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://github.blog/changelog/2026-07-30-stacked-pull-requests-are-now-in-public-preview/">GitHub stacked PRs now in public preview</a> - Adding native PR stacking with automatic base retargeting, partial merges, and official CLI (gh-stack) integration.</p></li><li><p>&#128220; <a href="https://www.bram.us/2026/07/30/styling-the-navigation-declarative-route-and-navigation-matching-in-css/">Declarative Route and Navigation Matching in CSS</a> - A proposed W3C CSS spec that moves route-based view-transition logic out of JS.</p></li><li><p>&#128220; <a href="https://github.blog/security/supply-chain-security/disrupting-supply-chain-attacks-on-npm-and-github-actions/">Disrupting supply chain attacks on npm and GitHub Actions</a> - Summary of the changes shipped across npm and GitHub Actions in the past few months, aimed to disrupt supply chain attack techniques and limit their impact.</p></li><li><p>&#128230; <a href="https://flueframework.com/blog/flue-2/">Flue 2.0 - &#8220;React for Agents&#8221;</a> - introduces a hooks-based architecture (useModel, useTool, usePersistentState) that replaces static configuration with dynamic agents capable of swapping models and capabilities at runtime.</p></li><li><p>&#128230; <a href="https://github.com/solidjs/solid-start/discussions/2281">SolidStart 2.0 - Modernizes the foundation for building full-stack applications with Solid v1</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v24.19.0">Node 24.19 - Stabilized </a><code>stream.compose</code><a href="https://nodejs.org/en/blog/release/v24.19.0">, new TLS/TCP configuration options, </a><code>--experimental-import-text flag</code><a href="https://nodejs.org/en/blog/release/v24.19.0">, custom buffers in </a><code>fs.readFile()</code></p></li><li><p>&#128230; <a href="https://scriptc.dev/">scriptc - Compile TypeScript to tiny native binaries (no Node/V8)</a></p></li><li><p>&#128230; <a href="https://github.com/vitejs/vite/blob/v8.2.0/packages/vite/CHANGELOG.md#820-2026-07-30">Vite 8.2 - Top-level </a><code>input</code><a href="https://github.com/vitejs/vite/blob/v8.2.0/packages/vite/CHANGELOG.md#820-2026-07-30"> option (bypassing </a><code>build.rolldownOptions</code><a href="https://github.com/vitejs/vite/blob/v8.2.0/packages/vite/CHANGELOG.md#820-2026-07-30">), warns for unsupported native loader features, PostCSS config types, and dev URLs labeled by interface</a></p></li><li><p>&#128230; <a href="https://github.com/honojs/hono/releases/tag/v4.13.0">Hono 4.13 - Up to 1.25x perf gains, adds HTTP QUERY method support, a Method Not Allowed middleware, and various improvements</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.20">pnpm 11.20 - Fixes multi-registry package substitution vulnerability with registry-qualified keys</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/147953a0-dd3a-4d14-8347-94665becee45_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N82c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!N82c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!N82c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F147953a0-dd3a-4d14-8347-94665becee45_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2rhM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2rhM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2rhM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2rhM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2rhM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!2rhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg" width="1070" height="940" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1070,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!2rhM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2rhM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2rhM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2rhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb097e103-c913-4962-8a1e-0c4b73939eaf_1070x940.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 292]]></title><description><![CDATA[Octane, TanStack, StableRef, Next.js, Canvas UI, Reassure, CSS-in-JS | Workers, SafeAreaView, backgroundImage, WebGPU, VisionCamera, React Navigation, Canvas Kit, Nitro | TC39, Web Vitals, Playwright]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-292</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-292</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 31 Jul 2026 16:07:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c5r8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week we have an interesting React challenger, keeping its mental model but compiled ahead of time. Also various major announcements from the TanStack side.</p><p>On the mobile side, we have interesting RN 0.87 PRs to look at, discussions around workers / worklets, a WebGPU/Skia integration, and React Navigation 8 / Screens 5 progress.</p><p>Last week, many proposals progressed during a TC39 meeting. npm is going to scan for malware at publish time. Core Web Vitals will now measure SPA soft navigation.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6BAJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6BAJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6BAJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6BAJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6BAJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6BAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!6BAJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6BAJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6BAJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6BAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b0380-68ad-45d4-a40a-48873718d93d_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/jherr">Jack Herrington</a></strong><a href="https://twitter.com/jherr">Principal Engineer - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z6WY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z6WY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z6WY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z6WY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z6WY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!z6WY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!z6WY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z6WY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z6WY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z6WY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb70cdfe2-128f-4e73-b73b-7b9907f036f4_2816x1472.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q3&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q3&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q3&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c5r8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c5r8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c5r8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c5r8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c5r8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!c5r8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Octane &#8211; React's programming model, compiled&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Octane &#8211; React's programming model, compiled" title="Octane &#8211; React's programming model, compiled" srcset="https://substackcdn.com/image/fetch/$s_!c5r8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c5r8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c5r8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c5r8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb01eb7f-892a-43d5-b2e4-575d2f8b5557_1200x630.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://octanejs.dev/">Octane &#8211; React&#8217;s programming model, compiled</a></strong></p><p>Dominic Gannaway &#8211; former React/Svelte team member, creator of Inferno &#8211; unveiled his new project, Octane, as a successor to Inferno.</p><p>It keeps React&#8217;s programming model, but compiles Hooks, Suspense, and Actions ahead of time. It improves performance, removing the Virtual DOM and using native browser events. You don&#8217;t need to respect the rules of hooks or to maintain dependency arrays manually. You can use it with JSX/TSX, but it also supports <a href="https://tsrx.dev/">TSRX</a> to improve your developer experience.</p><p>This looks like a quite serious React challenger using the same mental model, already receiving contributions from maintainers of popular project. It comes from day 1 with integrations for libraries such as TanStack, React Three Fiber, Lynx, StyleX, NativeScript, and more.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://blog.sentry.io/logging-best-practices/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=logs-fy27q2-evergreen&amp;utm_content=newsletter-react-link-logging-blog-learnmore">Sentry - Stop logging everything. Learn what&#8217;s worth capturing and how to structure it properly.</a></p></li><li><p>&#128064; <a href="https://preview.nextjs.org/docs/app/guides/offline-support">Next.js docs preview - Offline support</a> - With <code>experimental.useOffline</code> enabled, Next.js will no longer throw when the network is down, keeping requests pending with a retry.</p></li><li><p>&#128467;&#65039; <a href="https://reactadvanced.com/?utm_source=thisweekinreact">React Advanced London</a> - &#127468;&#127463; London - 23 &amp; 26 Oct. First speakers announced: TanStack Maintainer, Engineer at Vercel, Apollo TypeScript Client maintainer &amp; more. All in a historic ex-brewery. Get 10% off with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/we-stopped-using-rsc-on-tanstack-com">TanStack - We Stopped Using RSC on</a> <a href="http://tanstack.com/">TanStack.com</a> - Tanner explains why the TanStack website adopted RSC in the first place, keeping heavy dependencies like the Shiki syntax highlighter on the server. But the maths change if the heavy libraries become smaller: it&#8217;s better to use SSR, ship a small lib once and render multiple times on the client than to render each blog post on the server and ship an RSC/Flight payload. To achieve better performance with SSR, TanStack had to introduce 2 new deliberately small projects: <a href="https://tanstack.com/blog/introducing-tanstack-markdown-and-highlight">TanStack Markdown and TanStack Highlight</a>, available in alpha. In TanStack Start, you can freely decide to use SSR or RSC when it makes sense.</p></li><li><p>&#128220; <a href="https://www.jovidecroock.com/blog/referential-stability-types/">Making Referential Stability a Type</a> - A really cool idea to tag memoized values directly in the type system with <code>Stable&lt;T&gt;</code>. With <code>stableref/react</code>, you can enforce APIs to use memoized values and get compilation errors if props or dependency array elements are not memoized.</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/experimenting-with-rsc-for-performance-and-ux-in-nextjs/">Experimenting with RSCs for Performance and UX in Next.js</a> - 3 Next.js 16.3 experiments to keep work on the server: pagination via <code>?page=</code>, a search field that keeps focus while results stream, JSX from actions.</p></li><li><p>&#128220; <a href="https://xabierlameiro.com/blog/nextjs/nextjs-memory-leak-in-production">How to find a Next.js memory leak in production</a> - 3 memory leaks in Next.js and how to spot each in heap snapshots. These have recently been fixed by Dan Abramov for v16.3.</p></li><li><p>&#128220; <a href="https://dx-styles.dev/blog/state-of-zero-runtime-css-in-js/">The state of zero-runtime CSS-in-JS, mid-2026</a> - A recent field map of compile-time CSS-in-JS covering Vanilla-Extract, Panda CSS, StyleX, next-yak, Linaria, dx-styles.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/tutorials/think-in-remix-ui-instead-of-react">How to Think in Remix UI Instead of React</a> - A pragmatic intro to Remix v3 from a React perspective. Components run once, return a render closure, and you re-render with <code>this.update()</code>. This gives you more control than React hooks, but requires more boilerplate.</p></li><li><p>&#128220; <a href="https://infrequently.org/2026/07/state-management/">The Absolute State of Management</a> - Alex Russel argues React&#8217;s state management libs don&#8217;t manage state; they only propagate it with pub/sub. Real state management needs time and ordering: CRDTs, sync engines, vector clocks.</p></li><li><p>&#128230; <a href="https://canvasui.dev/">Canvas UI - Creative components based on WebGPU and HTML-in-canvas</a> - A cool project for creative work. Framework-agnostic, coming with first-class React integration.</p></li><li><p>&#128230; <a href="https://tanstack.com/table/beta/docs/framework/react/guide/cell-selection">TanStack Table v9 beta.58 - Support Cell Selection and Keyboard Navigation</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v830">React Router 8.3 - RSC Entry Updates</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/reassure/releases/tag/reassure%401.6.0">Reassure 1.6 - Performance testing for React and React Native - Stability measures</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/astryx/releases#release-v0.1.9">Astryx 0.1.8 &amp; 0.1.9</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=2aKGR4RECj0">Jack Herrington - TanStack is Doing What?</a> - Stream announcing TanStack changes with guests. <a href="https://tanstack.com/blog/tanstack-has-a-new-look">TanStack now has a new look</a>, a design system, and a lead designer.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=B_w1xFbRvCg">Shruti Kapoor - React Debugging with Performance Tracks</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lmRV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lmRV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lmRV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lmRV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lmRV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lmRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!lmRV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lmRV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lmRV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lmRV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3606451-c23b-4c63-b659-474daabe79f7_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/Baconbrix">Evan Bacon</a></strong><a href="https://twitter.com/Baconbrix">Engineering Manager - Expo</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h5tW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h5tW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h5tW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h5tW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h5tW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!h5tW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Stop Rebuilding Forms for Every Business Change&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stop Rebuilding Forms for Every Business Change" title="Stop Rebuilding Forms for Every Business Change" srcset="https://substackcdn.com/image/fetch/$s_!h5tW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h5tW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h5tW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h5tW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff81b7bd4-1183-4e4b-8b94-528508f0eebd_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://surveyjs.io/?utm_source=this-week-in-react&amp;utm_medium=email">Stop Rebuilding Forms for Every Business Change</a></strong></p><p>Hardcoded forms create a costly cycle: every new field, workflow, validation rule or customer-specific variation becomes another development task, code review and deployment.</p><p>SurveyJS breaks that cycle. Developers <a href="https://surveyjs.io/try/reactjs">embed a JSON-powered form builder</a> and reusable form runtime into their React application once. Business teams can then create and update forms through configuration rather than application code.</p><ul><li><p>Ship new forms faster</p></li><li><p>Reduce repetitive frontend work</p></li><li><p>Launch form changes without waiting for a release cycle</p></li><li><p>Keep full control over your backend, data, security, and branding</p></li></ul><p>Your developers own the platform. Your business teams manage the forms. &#128578;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jul29">PostHog - The do&#8217;s and don&#8217;ts of minimum viable product marketing</a></p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1014">React Native RFC - CSS </a><code>calc()</code><a href="https://github.com/react-native-community/discussions-and-proposals/pull/1014"> in React Native</a> - A proposal to add a C++ implementation, so host platforms do not need to be aware of its existence. Aligns more closely with the web, avoiding <code>onLayout</code> and useless render passes.</p></li><li><p>&#128064; <a href="https://github.com/react/react-native/pull/57500">React Native PR - Add SafeAreaProvider, safe-area hooks, and SafeAreaView edges/mode</a> - 2 recent PRs show that SafeAreaView will either be removed from core, or improved to catch up with <code>react-native-safe-area-context</code> features. We are still not sure which PR will be merged; stay tuned.</p></li><li><p>&#128064; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/5.0.0-alpha.1">RN Screens 5.0 Alpha - Rewritten Stack implementation, Android based on Material Design 3</a> - The first release of an upcoming rewrite of RN Screens. The redesign of the Native Stack addresses shortcomings of the v4 model and will be an important piece for React Navigation v8.</p></li><li><p>&#128064; <a href="https://github.com/react/react-native-website/pull/5191">React Native PR - </a><code>backgroundImage</code><a href="https://github.com/react/react-native-website/pull/5191"> stable in RN 0.87</a> - linear and radial gradients will officially work without the need for 3rd-party dependencies.</p></li><li><p>&#128064; <a href="https://github.com/react-navigation/react-navigation/pull/13195">React Navigation PR - v8 will work on Web without React Native Web</a></p></li><li><p>&#128214; <a href="https://reactnavigation.org/docs/8.x/suspense/">React Navigation 8 - New docs on Suspense and pending UI</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/deferred-deep-linking-the-right-way">From Expo Router to Detour: Deferred deep linking the right way</a> - Standard deep links break at the store boundary, causing an Installation Gap when the app is not installed yet. The solution is to use deferred deep linking to capture user intent and replay it on the app&#8217;s first launch.</p></li><li><p>&#128220; <a href="https://x.com/mrousavy/status/2080675696335077457">Marc Rousavy just wanted to build react-native libraries but ended up fixing bugs in Apple/Swift compiler...</a> - A compiler bug caused iOS 16 to crash the app in production. The optimizer hoisted a weakly imported constant above its <code>#available</code> guard. Although the issue is real, it was possible to work around it, requiring an upstream compiler fix.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/app-variants-side-by-side">Install dev and production side by side with app variants</a> - A guide to setting up app variants for improved dev experience.</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/2026-07-28-mmkv-writes-worklet-serialization-cost/">Why We Did Not Move MMKV Writes to a Worklet: The Serialization Cost</a></p></li><li><p>&#128184; <a href="https://configcat.com/blog/using-feature-flags-in-react-native/?utm_source=thisweekinreact_newsletter&amp;utm_medium=sponsor&amp;utm_campaign=reactnative_202607">ConfigCat - Release React Native Features with Feature Flags, Without Redeploying</a></p></li><li><p>&#128230; <a href="https://ammarahm-ed.github.io/react-native-workers/blog/introducing-react-native-workers/">RN Workers 1.0 Alpha</a> - Separate Hermes runtimes created on a dedicated thread to enable real multithreading. Each worker has its own bundle. Communication between them is using messages via a structured-clone codec. This <a href="https://x.com/tjzeldev/status/2081673853831430226">discussion</a> explain differences with Worklets. Hermes also <a href="https://x.com/tmikov/status/2081759040087151082">supports WebWorkers</a> out of the box (unstable) that will be in a public release soon.</p></li><li><p>&#128230; <a href="https://wcandillon.github.io/react-native-webgpu/docs/integrations/react-native-skia">React Native WebGPU 0.7 - </a><code>importDevice()</code> - This lets you import the RN Skia Graphite WebGPU device. It&#8217;s the foundation for zero-copy interop between the two worlds, letting you use WebGPU textures in Skia efficiently.</p></li><li><p>&#128230; <a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.10.0">Skia 2.10 - Migrates from HostObject to JSI NativeState, requires Reanimated v4</a> - Related: Tzvetan Mikov previously explained <a href="https://x.com/tmikov/status/1820266381545468200">why the Hermes team strongly favors JSI NativeState over HostObject</a>.</p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-vision-camera/releases/tag/v5.2.0">VisionCamera 5.2 - New SkiaCamera controls (zoom, exposure, torch), stretch GPU Resizer mode</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/nitro/releases#release-v0.36.3">Nitro 0.36.2 &amp; 0.36.3 - Faster Record&lt;K,V&gt; conversion, RN 0.87 support, drops @FastNative from Sync callbacks</a></p></li><li><p>&#128230; <a href="https://www.mercuretechnologies.com/blog/expo-open-ota-v3">Expo Open OTA 3.0 - Self-hosted Expo Updates server with multi-app, rollouts, A/B testing</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.17.0">Argent 0.17 - Screen recording tools, pinch gesture, Windows support for Android and Chromium</a></p></li><li><p>&#128230; <a href="https://github.com/adithyavis/react-native-canvas-kit">Canvas Kit - A batteries-included 2D canvas framework built on RN Skia</a></p></li><li><p>&#128230; <a href="https://thoughtbot.com/blog/sign-in-with-google-for-react-native">React Native Social Auth - Sign in with Google for Android, iOS, Expo</a></p></li><li><p>&#128230; <a href="https://github.com/mdjastrzebski/react-native-memory-footprint">Memory Footprint - Measure React Native app&#8217;s memory footprint on iOS and Android</a></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-2-7-0">Maestro 2.7 - MCP tool to debug Cloud runs with your AI agent, per-flow debug artifacts</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/radon-ide/releases/tag/v1.18.0">Radon 1.18 - Send props, styles, state &amp; errors from element inspector to AI chat context</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.20.1">Agent Device 0.20.1 - Vega OS support, broader physical iOS support, secret-safe replay and recording improvements</a></p></li><li><p>&#128230; <a href="https://screen-transitions.esjr.org/changelog/updating-to-3-9">Screen Transitions 3.9 - Teleport-powered handoff and escapeClipping, simplified Boundary API, navigation zoom</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.20.0">Sentry 8.20 - iOS screenshot regression fix, Gradle Configuration Cache compatibility</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.5.3">Nitro Fetch 1.5.3 - 3x faster streaming via shared URLSession</a></p></li><li><p>&#129302; <a href="https://maestro.dev/blog/maestro-mcp-for-ai-coding-agents">Maestro CLI 2.7 - MCP for AI Coding Agents</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=3r_OHePTCcI">Expo - How to add an iOS Widget to your app</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-368-rnr-explains-fabric">RNR 368 - RNR Explains: Fabric</a> - A look into how the Fabric renderer works. How it speeds up mobile apps and unlocks concurrent React features.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#129419; <a href="https://bsky.app/profile/tc39.es/post/3mrdjr6uq2t2i">TC39 advanced </a><code>Promise.allKeyed</code><a href="https://bsky.app/profile/tc39.es/post/3mrdjr6uq2t2i">, </a><code>Error.code</code><a href="https://bsky.app/profile/tc39.es/post/3mrdjr6uq2t2i">, </a><code>Map.take</code><a href="https://bsky.app/profile/tc39.es/post/3mrdjr6uq2t2i">, RegExp Linear Matching, and more</a> - I reply and explain why I&#8217;m excited about <code>allKeyed</code>, RegExp Linear Matching, and Composites moving to an interning-based approach (getting closer to the former Records &amp; Tuples proposal).</p></li><li><p>&#128227; <a href="https://developer.chrome.com/docs/web-platform/soft-navigations">Core Web Vitals - Measuring soft navigations</a> - Measuring SPA soft navigations (page transitions with <code>history.pushState</code>) will be enabled by default in Chrome 151, and integrated into DevTools, the <code>web-vitals</code> package, Lighthouse, PageSpeed Insights, and Real User Monitoring tools.</p></li><li><p>&#128227; <a href="https://github.blog/changelog/2026-07-28-npm-publish-time-malware-scanning-and-dual-use-metadata/">GitHub - npm publish-time malware scanning and dual-use metadata</a> - Newly published packages will be automatically scanned before they become available, introducing a delay of 5-15 minutes between publishing and availability.</p></li><li><p>&#128202; <a href="https://2026.stateofcss.com/en-US">State of CSS - Survey results</a></p></li><li><p>&#128220; <a href="https://nitayneeman.com/blog/introducing-import-defer-in-ecmascript/">ECMAScript Deferred Module Evaluation with </a><code>import defer</code> - This lazy module evaluation feature is stage 3, already implemented in most tools, and close to becoming part of the standard.</p></li><li><p>&#128220; <a href="https://denodell.com/blog/your-spa-is-leaking-memory-soak-test-it">Your SPA Is Leaking Memory. Soak Test It</a> - A practical Playwright recipe to catch SPA memory leaks. Loop a user flow, read Chrome&#8217;s node/listener counts before and after, assert.</p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.62.0">Playwright 1.62 - New component testing model, AbortSignal, WebP screenshots, isolated retries</a></p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-07-24-webpack-5-109/">Webpack 5.109 - Built-in CSS, HTML, TypeScript support enabled by default, Vite-compatible </a><code>import.meta</code><a href="https://webpack.js.org/blog/2026-07-24-webpack-5-109/"> APIs, asset query suffixes</a></p></li><li><p>&#128230; <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153">Firefox 153 - Picture-in-Picture, import as text, popover=&#8221;hint&#8221;</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jTuM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jTuM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4ff8de7-6cea-4b00-9832-f1fabcf22df9_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eVwc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eVwc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eVwc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eVwc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eVwc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!eVwc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg" width="1000" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!eVwc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eVwc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eVwc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eVwc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e13ad5-1bac-4fe6-a56c-1403efe7fe6c_1000x794.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 288]]></title><description><![CDATA[Next.js, React Compiler, use(), Astryx, TanStack Start, Takumi, nuqs | Expo, VisionCamera, Windows, Rollipop, LegendList, Nitro, AI, Maps | Node.js, pnpm, TS, Prettier, Deno, Webpack, Flow]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-288</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-288</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 03 Jul 2026 12:28:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NX6Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, the Next.js 16.3 preview makes the headlines, while the React Compiler remains a hot topic.</p><p>On the React Native side, Expo unexpectedly shipped a new SDK.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vlVf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vlVf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vlVf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vlVf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vlVf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vlVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!vlVf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vlVf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vlVf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vlVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310c0fec-507f-4100-9e57-264fc574e96e_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E-C4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E-C4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E-C4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E-C4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E-C4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!E-C4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!E-C4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E-C4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E-C4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E-C4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58fff75f-43a8-4390-a579-c6528c59cb80_2816x1472.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1stjul">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NX6Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NX6Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NX6Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NX6Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NX6Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!NX6Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg" width="1000" height="523" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:523,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Next.js 16.3 Preview - Instant Navigations&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Next.js 16.3 Preview - Instant Navigations" title="Next.js 16.3 Preview - Instant Navigations" srcset="https://substackcdn.com/image/fetch/$s_!NX6Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NX6Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NX6Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NX6Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a0913a-60fb-4497-a7c7-b273d5bec5fa_1000x523.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://nextjs.org/blog/next-16-3-instant-navigations">Next.js 16.3 Preview - Instant Navigations</a></strong></p><p>Next.js 16.3 is now in preview and will be stabilized in the coming weeks. This sneak peek focuses on a new opt-in feature called Instant Navigations, improving on top of Cache Components. This addresses the loudest criticism of the App Router: server-driven navigations feel like clicking a website, not an app.</p><p>With this new feature, you will have to make a very explicit choice whenever you <code>await</code> some data on the server, nicely presented in an Instant Insights dev panel to surface slow navigations:</p><ul><li><p>Stream with <code>&lt;Suspense&gt;</code></p></li><li><p>Cache with <code>&#8217;use cache&#8217;</code></p></li><li><p>Block with <code>export const instant = false;</code></p></li></ul><p>There&#8217;s more:</p><ul><li><p>Playwright <code>instant()</code> test helper - Assert what must be instantly visible after a link click.</p></li><li><p>Partial Prefetching - Instead of prefetching a page per link in the viewport, Next.js will now prefetch a reusable shell per route. You can still prefetch links more aggressively (opt-in).</p></li></ul><p>Also related:</p><ul><li><p>&#129419; <a href="https://bsky.app/profile/danabra.mov/post/3mp5b3nd3ws2k">Dan Abramov joined the Next.js team at Vercel, part-time</a></p></li><li><p>&#128220; <a href="https://nextjs.org/blog/next-16-3-ai-improvements">Next.js 16.3: AI Improvements</a> - Bundled docs, first-party skills, Agent Browser with React introspection, actionable errors, improved MCP server, and docs as Markdown.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/next-16-3-turbopack">Turbopack: What&#8217;s New in Next.js 16.3</a> - Reducing dev server memory by up to 90%, up to 5.5x faster rebuilds with persistent cache, experimental React Compiler in Rust, <code>import.meta.glob</code> API, faster HMR and dev startup.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128467;&#65039; <a href="https://reactsummit.us/?utm_source=thisweekinreact">React Summit US</a> - &#127482;&#127480; New York - 17 &amp; 20 Nov. Call for Papers is open until July 9! Don&#8217;t miss your chance to share your React stories on stage. Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128064; <a href="https://react.dev/reference/react/use">React Docs - </a><code>use()</code><a href="https://react.dev/reference/react/use"> API Reference</a> - This React API docs page has been entirely rewritten, also explaining important concepts such as how Promises must be cached on the client.</p></li><li><p>&#128064; <a href="https://github.com/jsx-eslint/eslint-plugin-react/pull/3979">ESLint Plugin React - ESLint v10 compatibility progress</a> - React users of this ESLint plugin have been stuck on ESLint v9 for a while. Thankfully, v10 support has just been merged into the Import plugin, which should also unlock the React plugin compatibility.</p></li><li><p>&#128064; <a href="https://vercel.com/blog/vercel-and-shopify-are-rebuilding-hydrogen">Vercel and Shopify are rebuilding Hydrogen</a> - Vercel is helping Shopify improve its proprietary Hydrogen e-commerce framework. Initially based on React/Remix, the new version should be more portable, supporting Svelte, Nuxt, Next.js, and various server runtimes.</p></li><li><p>&#128220; <a href="https://socket.dev/blog/rolldown-pulls-rust-react-compiler-integration">Rolldown Pulls Rust React Compiler Integration After Binary Size Increase</a> - Nicely summarize the tradeoffs of integrating Rust extensions in frontend tools, and whether it&#8217;s a good idea for a framework-agnostic tool to have a first-class integration with React. Oxc blocked the integration until it&#8217;s slimmed down (in progress), while Rspack chose to ship the Compiler now and optimize incrementally.</p></li><li><p>&#128220; <a href="https://longho.dev/posts/react-compiler-is-a-retrofit/">React Compiler Is A Retrofit</a> - Argues that, unlike Solid/Svelte, the React Compiler optimizes a runtime model that was not initially designed around a compiler. It can increase bundle size and make the memoization contract of your APIs less explicit. It is safer to use it as a linter rather than a compiler.</p></li><li><p>&#128220; <a href="https://neciudan.dev/hydration-and-rendering-strategies">Different hydration and rendering strategies</a> - Explains how much JS runs between &#8220;looks ready&#8221; and &#8220;actually works&#8221;, across every rendering strategy, including non-React ones.</p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/react-testing-interview-questions">React Testing Questions That Trip Up Engineers</a> - Covering the role of <code>act()</code>, testing implementation details, overmocking, and challenges like testing IntersectionObserver or drag-and-drop.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/tutorials/open-a-modal-dialog-in-react-with-the-invoker-commands-api">Open a Modal Dialog in React with the Invoker Commands API</a> - For simple modal dialogs, modern browsers support opening/closing of a <code>&lt;dialog&gt;</code> with a declarative HTML API, no need for <code>useState()</code> nor any JS.</p></li><li><p>&#128230; <a href="https://astryx.atmeta.com/">Astryx - Meta&#8217;s open-source design system, built on React and StyleX</a> - Meta released an OSS beta version of their design system, built over 8 years and powering 13000+ internal apps, using StyleX atomic CSS-in-JS library. It&#8217;s not a headless lib, but highly themable with design tokens and the ability to eject the components to customize them entirely.</p></li><li><p>&#128230; <a href="https://rspack.rs/blog/announcing-2-1">Rspack 2.1 - React Compiler in Rust, TanStack Start support, perf improvements, TypeScript 7, </a><code>import.meta.glob()</code><a href="https://rspack.rs/blog/announcing-2-1">, and more</a> - Rspack now has a first-class integration with the React Compiler through SWC, reporting it being 7-13x faster than the Babel version. Also, TanStack Start now supports Rsbuild 2.1 through a plugin.</p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-06-chat-components">shadcn/ui - Chat interface components, </a><code>@shadcn/react</code> - This Chat UI update also takes the opportunity to introduce a new package for unstyled, headless React components. For now, there&#8217;s only a single <code>&lt;MessageScroller&gt;</code> primitive, but more could come later?</p></li><li><p>&#128230; <a href="https://storybook.js.org/blog/storybook-for-tanstack-react/">Storybook for TanStack React</a> - A dedicated Storybook framework for TanStack-powered React apps. This provides first-class, type-safe support for TanStack Router, Start, and Query.</p></li><li><p>&#128230; <a href="https://takumi.kane.tw/">Takumi 2.0 RC - Render JSX to images with a single Rust binary</a> - A quite compelling alternative to Satori.</p></li><li><p>&#128230; <a href="https://github.com/cloudflare/vinext/releases/tag/vinext%400.2.0">Vinext 0.2 - Revamped init command, prerender, image optimizations, fixes</a> - Cloudflare&#8217;s fork of Next.js has been under active development since its initial announcement.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v810">React-Router 8.1 - Agent Skills Installation, Observability Metadata</a></p></li><li><p>&#128230; <a href="https://github.com/47ng/nuqs/releases/tag/v2.9.0">nuqs 2.9 - Support for React-Router v8, add history to adapters </a><code>defaultOptions</code></p></li><li><p>&#128230; <a href="https://frondruntime.dev/">Frond - Effect-powered frontend runtime for React and MobX-facing application state</a></p></li><li><p>&#128230; <a href="https://github.com/redwoodjs/sdk/releases/tag/v1.5.0">RedwoodSDK 1.5 - Vite 8 support</a></p></li><li><p>&#127909; <a href="https://codetv.dev/series/build-log/miami/tanner-linsley">The Build Log S1E02 - Tanner Linsley Built TanStack to Outlive Him</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B1Xm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B1Xm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B1Xm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B1Xm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B1Xm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!B1Xm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!B1Xm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B1Xm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B1Xm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B1Xm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052a547e-4621-4ce7-80a2-621c51cdf798_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bZIC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bZIC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bZIC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bZIC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bZIC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!bZIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Atomic CRM: A CRM you won&#8217;t be ashamed of&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Atomic CRM: A CRM you won&#8217;t be ashamed of" title="Atomic CRM: A CRM you won&#8217;t be ashamed of" srcset="https://substackcdn.com/image/fetch/$s_!bZIC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bZIC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bZIC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bZIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc9dc9e6-1bd1-42a3-88e8-d2a70599562b_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://marmelab.com/atomic-crm/">Atomic CRM: A CRM you won&#8217;t be ashamed of</a></strong></p><p>Your company needs a new CRM? Point them to a popular open-source CRM written in React, built with battle-tested libraries (Tailwind CSS, react-router, TanStack Query, react-hook-form) and powered by Supabase.</p><p>Best of all: for every customization they&#8217;ll need, you can delegate the work to Atomic CRM&#8217;s agentic harness, an AI specially trained to build robust, maintainable and usable CRMs.</p><p>By the way, Atomic CRM ships with free SSO and you can host it anywhere, so your data stays yours. <a href="https://marmelab.com/atomic-crm/">Check out the demos!</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!byVN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!byVN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 424w, https://substackcdn.com/image/fetch/$s_!byVN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 848w, https://substackcdn.com/image/fetch/$s_!byVN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!byVN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!byVN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Expo SDK 57&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Expo SDK 57" title="Expo SDK 57" srcset="https://substackcdn.com/image/fetch/$s_!byVN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 424w, https://substackcdn.com/image/fetch/$s_!byVN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 848w, https://substackcdn.com/image/fetch/$s_!byVN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!byVN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf5d524f-0e01-4056-aec5-fa623bad76bf_2048x1152.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://expo.dev/changelog/sdk-57">Expo SDK 57</a></strong></p><p>It feels like Expo SDK 56 just got released, and we&#8217;re already on SDK 57, even skipping the beta phase!?</p><p>Since RN 0.86 got released with no breaking changes, the Expo team decided to cut the new release sooner than usual. It&#8217;s a test of a new release cadence that will follow RN releases more closely. React Native&#8217;s move towards stability should make it easier to offer the latest changes almost immediately. Why not do it as a part of the SDK 56 update, then? There are still many changes, and it&#8217;s better to make the upgrade intentional to avoid unexpected errors.</p><p>RN 0.86 features are now available in Expo: first-class edge-to-edge support on Android, light/dark mode emulation in React Native DevTools, and rendering, layout, and animation fixes. Expo 57 also comes with a list of various Expo-related improvements.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jul1">PostHog - Karpathy&#8217;s Autoresearch found a 3-year-old bug in our query engine (and improved performance by 11%)</a></p></li><li><p>&#128064; <a href="https://github.com/expo/expo/pull/47207">Expo PR - App Intents - iOS Apple Intelligence, App Shortcuts, Siri</a> - An early plan and work to support intents in Expo with data provided from JS.</p></li><li><p>&#128064; <a href="https://expo.dev/changelog/maestro-testing-improvements">Expo Workflow - Maestro Testing: Insights, Clearer Results, and Faster Retries</a></p></li><li><p>&#128214; <a href="https://www.callstack.com/ebooks/the-ultimate-guide-to-react-native-optimization">Callstack - Ultimate Guide to React Native Optimization - 2026 Edition</a></p></li><li><p>&#128467;&#65039; <a href="https://ti.to/chainreact/chainreact2026/discount/TWIR">Chain React</a> - &#127482;&#127480; Portland - 30-31 July. Last call to secure your ticket! Join the React Native community for 2 days of amazing talks and networking. Get a 15% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/less-boilerplate-more-type-safety-react-navigation-8s-typed-hooks">Less Boilerplate, More Type Safety: React Navigation 8&#8217;s Typed Hooks</a> - Explaining hooks type-safety improvements coming in React Navigation v8, a significant upcoming release currently in alpha.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/profiling-skia-reanimated-low-end-android">Chasing a Phantom Jump: How We Made Pingo&#8217;s Animations Smooth on Low-End Android</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/how-expensify-uses-agent-device-for-mobile-bug-evidence-and-profiling">How Expensify Uses Agent-Device for Mobile Bug Evidence and Profiling</a></p></li><li><p>&#128220; <a href="https://lynxjs.org/next/blog/lynx-rspack-2">Lynx &#215; Rspack 2.0: Faster, Smaller, Closer to the Web</a></p></li><li><p>&#128184; <a href="https://www.drizz.dev/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=twir_w2&amp;utm_content=rn-testing">Drizz: E2E testing for React Native that doesn&#8217;t break every release. No selectors, no Appium, no XPaths. Just plain English + AI</a></p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/react-native/react-native-windows-v0-84-is-here/">React Native Windows 0.84 - Aligns with RN 0.84.1, onClick/onAuxClick, Imperative Focus, Theme-Aware Text, Input-Handling Parity</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-vision-camera/releases/tag/v5.1.0">VisionCamera 5.1 - Better support for external Cameras, Scan QR codes in images, native default Camera selection</a></p></li><li><p>&#128230; <a href="https://github.com/rollipop-dev/rollipop">Rollipop - Rolldown-Powered Metro Alternative for React Native (Alpha)</a></p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/releases/tag/v3.2.0">Legend List 3.2 &amp; 3.3 - onFirstVisibleItemChanged, experimental_adaptiveRender improvements, Fabric performance improvements</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/hermes/blob/static_h/doc/blog/2026-06-05-new-hermes-stable-release.md">Hermes 260318099 - JSON 2.7-3.4x Faster, Set Ops, Iterator Helpers, TS Transform</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.10.0">Uniwind 1.10 - RTL safe area classes, CSS min()</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/nitro/releases/tag/v0.36.0">Nitro 0.36 - Union Enum Variants Support</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.16.0">Sentry 8.16 - Expo Router ErrorBoundary Capture</a></p></li><li><p>&#128230; <a href="https://github.com/react-native-community/cli/releases/tag/v20.2.0">RN CLI 20.2 - Support DeviceHub for Xcode 27+, CVE and Bug Fixes</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.13.0">Argent 0.12 &amp; 0.12 - Physical Android support, Vega device support, Electron support, </a><code>await-ui-element</code><a href="https://github.com/software-mansion/argent/releases/tag/v0.13.0"> tool</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.18.0">Agent Device 0.18 - CDP Remote Bridge, Web Screen Recording, Device Leasing</a></p></li><li><p>&#128230; <a href="https://github.com/gmi-software/react-native-better-maps">Better Maps 1.0 - Nitro Modules Maps Library, Native Marker Clustering, Unified Map API</a></p></li><li><p>&#128230; <a href="https://github.com/gmi-software/react-native-better-clustering">Better Clustering 1.0 - Nitro Powered Alternative for react-native-map-clustering with the Same API</a></p></li><li><p>&#128230; <a href="https://github.com/afonsojramos/super-calendar/">Super Calendar 2.0 - Universal, gesture-driven, virtualized calendar and date picker, built on top of Reanimated and Legend List</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=dYEaN7ZqFmo">Callstack - Redraw for Effects Beyond Skia | Interview With William Candillon</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=I4Wlu2BZEsw">Software Mention Podcast - How Partiful Became Google&#8217;s Best App &amp; Why They Chose React Native | Alex Chou &amp; Tomek Zawadzki</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://code.visualstudio.com/blogs/2026/06/26/iterating-faster-with-ts-7">VSCode - Iterating faster with TypeScript 7</a> - VSCode migrated to the TS 7 native compiler incrementally, type checking dropped from 36s to 5s.</p></li><li><p>&#128220; <a href="https://nodesource.com/blog/npm-v12-install-scripts-not-a-silver-bullet">Blocking Install Scripts Is Not a Silver Bullet</a> - Package managers blocking postinstall scripts prevent a whole class of supply chain attacks, but malware can move to import time.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.4.0">Node.js 26.4 - Package Maps, VirtualFileSystem</a> - New exciting experimental features just landed! Providing a Package Map, emitted by your package manager, can make Node.js module resolution more reliable and skip costly file-system scanning. VirtualFileSystem lets you create module graphs in-memory that you can import.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.8">pnpm 11.8 &amp; 11.9 - Dry runs, Node.js package maps, SBOM improvements, tarball integrity</a> - pnpm is following Yarn, bringing support for the Node.js Package Maps described above. pnpm is also working on <a href="https://pnpm.io/pnpr/">pnpr</a>, its own Rust-based registry server/proxy that can resolve dependency graphs server-side.</p></li><li><p>&#128230; <a href="https://prettier.io/blog/2026/06/27/3.9.0">Prettier 3.9 - Major parser upgrades (Markdown, YAML, Flow, GraphQL), Formatting improvements</a> - They are also working on upgrading the MDX parser to v3.</p></li><li><p>&#128230; <a href="https://deno.com/blog/v2.9">Deno 2.9 - Deno Desktop for WebView apps, Node.js and package managers compatibility, performance, CSS module imports, and more</a></p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-06-25-webpack-5-108/">Webpack 5.108 - Universal target, Bun and Deno targets, HTML entrypoints, and more</a></p></li><li><p>&#128230; <a href="https://medium.com/flow-type/flows-ocaml-to-rust-port-78b95bcf49e9">Flow 0.319 - Porting the Compiler from OCaml to Rust, 2x faster type-checking</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lgT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lgT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab050163-4ec4-492a-8315-7caf4ebc4392_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_hxy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_hxy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_hxy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_hxy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_hxy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!_hxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg" width="1288" height="1592" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1592,&quot;width&quot;:1288,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!_hxy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_hxy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_hxy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_hxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d1cdd5-0b04-46d0-b4fa-18c25a9097e3_1288x1592.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PIDv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PIDv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PIDv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PIDv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PIDv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!PIDv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg" width="1000" height="872" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:872,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!PIDv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PIDv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PIDv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PIDv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1cb9616-bf51-4733-8326-ba19e215df94_1000x872.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 287]]></title><description><![CDATA[Fragment ref, React Compiler, StyleX, React Router, cnfast, Base UI, Remotion, React Aria | Reanimated, Widgets, VisionCamera, Test Renderer, Worklets, Legend List, Metro, Boost | Vite, Astro, TypeScr]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-287</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-287</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 26 Jun 2026 12:29:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9XJD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, we&#8217;re shining a spotlight on the upcoming React Fragment ref feature. We also have React Compiler updates, StyleX community discussions and a boring React Router release.</p><p>On the React Native side, Renimated gets CSS pseudo-selector support and widget libraries gain momentum. VisionCamera unlocks new real-time processing capabilities with impressive demos.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xvOI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xvOI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xvOI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xvOI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xvOI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xvOI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!xvOI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xvOI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xvOI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xvOI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a600e50-92a9-4510-8a10-141884db1044_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/TkDodo">Dominik Dorfmeister</a></strong><a href="https://twitter.com/TkDodo">Web Developer - React-Query maintainer</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vIhM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vIhM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vIhM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vIhM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vIhM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!vIhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native Devs Are Sleeping on&#8239;TV&#8239;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Native Devs Are Sleeping on&#8239;TV&#8239;" title="React Native Devs Are Sleeping on&#8239;TV&#8239;" srcset="https://substackcdn.com/image/fetch/$s_!vIhM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vIhM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vIhM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vIhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a364ea-287d-4fe6-9dc3-fe2117587e8a_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://fandf.co/43u5vgM">React Native Devs Are Sleeping on&#8239;TV&#8239;</a></strong></p><p>You&#8217;ve&#8239;optimized&#8239;for mobile. Maybe&#8239;tablet. But&#8239;the big screen&#8239;might feel&#8239;intimidating. Amazon Devices Builder Tools (ADBT)&#8239;for AI&#8239;gives your agent (Claude, Cursor, Kiro) Fire TV context&#8239;for&#8239;onboarding, performance debugging, and crash analysis,&#8239;so you can resolve blockers and&#8239;ship&#8239;apps&#8239;for&#8239;Fire TV faster.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9XJD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9XJD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9XJD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9XJD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9XJD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9XJD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg" width="1200" height="619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Docs - <Fragment ref>&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Docs - <Fragment ref>" title="React Docs - <Fragment ref>" srcset="https://substackcdn.com/image/fetch/$s_!9XJD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9XJD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9XJD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9XJD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c320e37-936f-4fcd-b3a3-9bb1b60f4a9d_1200x619.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://react.dev/reference/react/Fragment">React Docs - </a></strong><code>&lt;Fragment ref&gt;</code></p><p>In an upcoming version of React, the <code>ref</code> prop will expose a new <code>FragmentInstance</code> type that lets you interact with the fragment first-level children, unlocking new composition patterns. This exciting feature has just been documented more exhaustively, including 5 example use cases to get inspired from.</p><p>This feature is already available in canary, has gone through extensive testing in production, and is <a href="https://github.com/react/react/pull/34720">likely scheduled for React v19.3</a>.</p><p>Note that React Native will also get a similar feature (<a href="https://github.com/react/react-native-website/pull/5012">draft docs PR</a>). I don&#8217;t know if React / React Native will have full feature parity, but it&#8217;s clear that this will enable cross-platform usage on at least a subset of these APIs.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://svar.dev/react/gantt/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=june_2026">SVAR React Gantt Chart - Try React Gantt component for project scheduling with dependencies, critical path, and resource planning</a></p></li><li><p>&#128064; <a href="https://github.com/oven-sh/bun/pull/32504">Bun PR - React Compiler integration</a> - The upcoming Bun 1.4 should come with a <code>bun build --react-compiler</code> flag that runs the React Compiler in Rust, up to 20x faster than the Babel variant.</p></li><li><p>&#128038; <a href="https://x.com/sebastienlorber/status/2069670573555249498">The React Compiler in Rust removed from Rolldown/Vite</a> - The React Compiler in Rust needs to be integrated natively into Oxc to maximize performance, rather than shipped as a plugin. Unfortunately, this increased the binary size too much for all Rolldown/Vite users, so the integration has been temporarily withdrawn while it gets slimmed down.</p></li><li><p>&#128220; <a href="https://www.skovhus.dev/blog/moving-linear-from-styled-components-to-stylex">Moving Linear from styled&#8209;components to StyleX</a> - The Linear team has been looking to adopt an alternative to Styled Components (in maintenance mode). They settled on StyleX for its static extraction, minimal runtime, strong encapsulation, deterministic style resolution, ecosystem, developer and agent experience. They use an incremental migration strategy using AI and codemods.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-table-v9-memory-performance">How an Underrated Refactor Saved 90% Memory Usage</a> - TanStack Table v9 significantly reduced memory usage for large tables by migrating row object methods to shared prototypes.</p></li><li><p>&#128220; <a href="https://newsletter.daishikato.com/p/waku-s-unique-feature-slices">Waku&#8217;s Unique Feature: Slices</a> - A short intro to Slices, a unique Waku feature inspired by Gatsby, easy to understand and yet quite powerful.</p></li><li><p>&#128220; <a href="https://dev.to/subito/how-we-cut-slow-responses-by-80-migrating-to-nextjs-app-router-37da">How We Cut Slow Responses by 80% Migrating to Next.js App Router</a> - The leading italian classifieds marketplace upgraded from the Pages Router to the App Router, using an incremental side-by-side strategy</p></li><li><p>&#128220; <a href="https://neciudan.dev/component-communication-patterns-in-react">Component Communication Patterns in React Applications</a></p></li><li><p>&#128184; <a href="https://sentry.io/resources/react-native-workshop-2026/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=mobile-fy27q2-reactnativeworkshop&amp;utm_content=newsletter-react-link-simon-grimm-register">Sentry - Join Simon Grimm as he triages a real React Native crash live in production using replays, logs, and Seer</a></p></li><li><p>&#128230; <a href="https://remix.run/blog/react-router-v8">React Router 8.0 - Turns v8 future flags on, ESM-only, upgrades React/Vite/Node min versions</a> - This release is &#8220;boring&#8221; on purpose to make the upgrade easy. It essentially enabling by default behavior changes that were previously released as opt-in future flags in v7. React Server Components are still being worked on and unstable.</p></li><li><p>&#128230; <a href="https://github.com/aidenybai/cnfast">cnfast - Fast drop in replacement for </a><code>clsx</code><a href="https://github.com/aidenybai/cnfast"> + </a><code>tailwind-merge</code> - Tailwind users, maybe this hasn&#8217;t crossed your mind, but using <code>tailwind-merge</code> means you&#8217;ve added a <a href="https://x.com/jjenzz/status/2068018844229087400">quite slow runtime CSS-in-JS layer</a> to your React app. This new project is a 4x faster alternative, although it remains a bottleneck.</p></li><li><p>&#128230; <a href="https://stylexjs.com/blog/v0.19.0">StyleX 0.19 - Inline atomic styles, ESLint 10 compatibility, expands shorthand autofixes</a></p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-6-0">Base UI 1.6 - OTPField stable, Drawer improvements, Combobox perf, docs redesign, many fixes</a></p></li><li><p>&#128230; <a href="https://www.remotion.dev/docs/effects">Remotion 4.0.464 - Composable effects for canvas-based components</a></p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-19-0">React Aria 1.19 - Autocomplete @mentions, support Popover position relative to cursor</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.80.0">React Hook Form 7.80 - </a><code>useFieldArray({disabled})</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.80.0">, perf improvements</a></p></li><li><p>&#128230; <a href="https://foresightjs.com/">ForesightJS 4.0 - Predicts user intent based on mouse/keyboard inputs - First-class React integration</a></p></li><li><p>&#128230; <a href="https://polycss.com/">PolyCSS - CSS 3D engine for the DOM, with React bindings</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=FneS7tCWBMU">Lucas Barake - React Hooks Are Just a Linked List</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=cSDKkD_6kCo">Simeon Griggs - Next.js 16.3 got good (if you care)</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=YVs2KWvMjLM">Se&#241;ors at Scale - Newsletters with Sebastian Lorber: RSS Curation, Acquisition, RSC</a> - I give you a glimpse behind the scenes of this newsletter!</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WlFB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WlFB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WlFB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WlFB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WlFB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!WlFB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!WlFB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WlFB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WlFB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WlFB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a4a89b-0582-446f-8a88-18621e54deba_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4PAl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4PAl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4PAl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4PAl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4PAl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4PAl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!4PAl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4PAl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4PAl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4PAl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0dcdab9-3005-48ff-9cb7-0cdee982a476_2816x1472.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=2nd">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jun24">PostHog - We put PostHog in Slack and now everyone&#8217;s an engineer</a></p></li><li><p>&#128220; <a href="https://blog.margelo.com/building-videocall-app-with-filters">Building a Video Call App with Filters</a> - A deep dive from Margelo into using VisionCamera and WebRTC to build a communication app with real-time image processing. The demos are impressive and clearly push the limits of what we can do in React Native today.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/writing-custom-renderers-for-react">Writing Custom Renderers for React</a> - The maintainer of React Native Testing Library had to create a custom renderer after React v19 deprecated its own React Test Renderer. He explains how he did so, and how the React Native reconciler differs from the DOM reconciler.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/ios-widgets-and-live-activities-in-expo">iOS widgets and Live Activities are stable in Expo SDK 56</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-apply-professional-design-principles-in-ai-app-development">How to apply professional design principles in AI app development</a></p></li><li><p>&#128184; <a href="https://www.drizz.dev/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=wave1_rn">Drizz - Test your React Native app visually with AI. No locators, no flaky selectors, one suite for both platforms</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/4.5.0">Reanimated 4.5 - CSS Animations pseudo-selectors, </a><code>&lt;SharedTransitionBoundary&gt;</code><a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/4.5.0">, Core Animation for shadow/background/border</a> - You can now use <code>:hover</code>, <code>:active</code>, and <code>:focus</code> in your CSS animations the same way you would in a browser.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v2.0.0">Voltra 2.0 - Rewrite from Expo Modules to Turbo Modules, now works with bare RN, modular packages for smaller server install</a></p></li><li><p>&#128230; <a href="https://github.com/react/metro/releases/tag/v0.85.0">Metro 0.85 - Require Node 22+, resolution self-referencing, perf and various fixes</a></p></li><li><p>&#128230; <a href="https://github.com/zykeco/react-native-ble-nitro/releases/tag/v1.14.0">Nitro BLE 1.14 - Advertised service data is now exposed on scan results</a></p></li><li><p>&#128230; <a href="https://github.com/EvanBacon/serve-sim">Serve Sim - The npx serve of Apple Simulators</a> - Hosts iOS Simulators for use with agent tools.</p></li><li><p>&#128230; <a href="https://github.com/watadarkstar/react-native-nsfw-detector">NSFW Detector - On-device CoreML model to detect nudity and unsafe visual content in images</a></p></li><li><p>&#128230; <a href="https://github.com/react-native-webview/react-native-webview/releases/tag/v14.0.0">WebView 14.0 - Drops Android &lt;7.0 support, 13.17 adds </a><code>removeIosKeyboardObserver</code><a href="https://github.com/react-native-webview/react-native-webview/releases/tag/v14.0.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/AppAndFlow/react-native-transformer-text-input/releases/tag/v0.4.0">Transformer Text Input 0.4 - Add Web support</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.15.0">Sentry 8.15 - NativeLinkedErrors JVM stack traces, record XHR headers/bodies in Mobile Session Replay</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.10.0">Worklets 0.10 - Bundle Mode stable, API for module import forwarding, ArrayBufferView native serialization</a></p></li><li><p>&#128230; <a href="https://github.com/kuatsu/react-native-boost/releases">Boost 1.2-4 - Babel optimizing plugin - Text optimizations, translate View accessibility props, style inlining</a></p></li><li><p>&#128230; <a href="https://sheet.lodev09.com/blog/release-3-11">True Sheet 3.11 - Web renderer rewrite, iOS accessibility improvements, Android gesture fixes</a></p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/releases/tag/v3.1.0">Legend List 3.1 - Experimental adaptive rendering during scroll, setItemSize API, sticky header fixes</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-nano-icons/releases/tag/v0.2.0">Nano Icons 0.2 - tvOS support, dynamic font linking, web specific createIconSet, RN 0.79 compat, a11y props</a></p></li><li><p>&#128230; <a href="https://github.com/hryhoriiK97/expo-paperkit">Expo PaperKit - Apple PaperKit for Expo/React Native</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.13.0">Rozenite 1.13 - getTree/getComponent agent tools, Redux improvements</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-366-securing-react-native-apps-in-the-ai-era">RNR 366 - Securing React Native Apps in the AI Era</a> - discussion about AI-powered security threats, practical ways to secure RN apps, and reduce risk</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://drafts.csswg.org/css-link-params-1/">CSS Linked Params</a> - This early W3C spec from Google/Mozilla solves a long-standing limitation, letting you pass CSS values into external linked resources. This means you can customize <code>&lt;img src=&#8221;icon.svg&#8221;&gt;</code> with CSS.</p></li><li><p>&#128220; <a href="https://www.jayfreestone.com/writing/share-the-policy-not-the-code/">Ship the policy, not the code</a> - Instead of duplicating business logic across frontend/backend, you can use an isomorphic rules engine (such as <a href="https://casl.js.org/v7/en/">CASL</a>) and let the backend serialize the rules to the frontend.</p></li><li><p>&#128230; <a href="https://vite.dev/blog/announcing-vite8-1">Vite 8.1 - Experimental Bundled Dev Mode, Chunk Import Map, Wasm ESM integration</a> - It&#8217;s now possible to use the &#8220;Full Bundle Mode&#8221; in dev and get much faster startup/HMR in very large apps.</p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-7/">Astro 7.0 - Vite 8, Rolldown, and Rust to process </a><code>.astro</code><a href="https://astro.build/blog/astro-7/"> , </a><code>.md</code><a href="https://astro.build/blog/astro-7/">, </a><code>.mdx</code><a href="https://astro.build/blog/astro-7/"> files, Advanced Routing, Route Caching, and more</a> - All about speed, Astro builds are now ~61% faster!</p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-rc/">TypeScript 7.0 RC</a> - The faster Go rewrite is almost production-ready; the upgrade should be relatively easy. TS7 can be run alongside TS6.</p></li><li><p>&#128230; <a href="https://nubjs.com/blog/introducing-nub">Nub - An all-in-one toolkit for Node.js</a> - A Rust CLI that augments the Node instead of replacing it, adding Bun&#8217;s best features on top of it.</p></li><li><p>&#128230; <a href="https://sharp.pixelplumbing.com/changelog/v0.35.0/">Sharp 0.35 - Remove install script</a> - The popular image processing library now ships with pre-built binaries. This aligns with package managers now blocking install scripts by default, and other projects (<a href="https://github.com/swc-project/swc/issues/11898">SWC</a>, <a href="https://github.com/evanw/esbuild/issues/4475">esbuild</a>) are considering doing the same.</p></li><li><p>&#128230; <a href="https://github.blog/changelog/2026-06-18-safer-pull_request_target-defaults-for-github-actions-checkout/">actions/checkout 7.0 - Prevents common </a><code>pull_request_target</code><a href="https://github.blog/changelog/2026-06-18-safer-pull_request_target-defaults-for-github-actions-checkout/"> pwn request patterns</a> - Good news for supply chain security. GitHub tightened security for this popular action, refusing to check out pull request code unless you opt in with <code>allow-unsafe-pr-checkout: true</code>. This attack vector recently led to many compromised npm packages, including TanStack, Nx, PostHog, LiteLLM, and more.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-xTf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!-xTf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa069ff2e-105c-43ba-ab16-477a92c212fc_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xEAC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xEAC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xEAC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xEAC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xEAC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xEAC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg" width="1000" height="1403" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1403,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!xEAC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xEAC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xEAC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xEAC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F775af84a-95ac-4fb3-a1ff-3afdf57df22f_1000x1403.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u_XY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u_XY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u_XY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u_XY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u_XY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!u_XY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg" width="1000" height="975" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:975,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!u_XY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u_XY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u_XY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u_XY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85bee3-51cc-4a8f-ba1b-7bba692973db_1000x975.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 286]]></title><description><![CDATA[React Compiler, StyleX, TSRX, WordPress, TanStack, Remotion, Hydrogen | RN 0.86, Enriched, Gesture Handler, Crypto, Morph View, Compressor, Data Detector, Hermes | Package Maps, Babel, Biome, Zod Comp]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-286</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-286</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 19 Jun 2026 12:49:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uHlz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, the React Compiler in Rust is rolling out, and early adopters have already reported significant speedups.</p><p>React Native 0.86 finally came out with edge-to-edge fixes in core. It&#8217;s retro-compatible, and Expo SDK 56 should be able to upgrade.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vz20!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vz20!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vz20!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vz20!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vz20!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vz20!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;William Candillon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="William Candillon" title="William Candillon" srcset="https://substackcdn.com/image/fetch/$s_!Vz20!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vz20!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vz20!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vz20!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadcf428-8858-4ce7-97c0-52ed46004c10_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/wcandillon">William Candillon</a></strong><a href="https://twitter.com/wcandillon">React-Native animations expert - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KeKk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KeKk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KeKk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KeKk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KeKk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!KeKk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!KeKk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KeKk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KeKk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KeKk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0e8fe3-f0a8-4e7b-b3be-b0165e5454c3_2816x1472.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uHlz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uHlz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uHlz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uHlz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uHlz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!uHlz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg" width="1000" height="525" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:525,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Compiler in Rust&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Compiler in Rust" title="React Compiler in Rust" srcset="https://substackcdn.com/image/fetch/$s_!uHlz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uHlz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uHlz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uHlz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad98d44e-968c-4ed0-9848-41b30899ecc9_1000x525.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>React Compiler in Rust rollout</strong></p><p>The integration has finally started to land in mainstream libs, starting with Oxlint, but may others are following:</p><ul><li><p>&#128230; <a href="https://oxc.rs/docs/guide/usage/linter/rules/react/react-compiler.html">Oxlint 1.70 - Add a </a><code>react/react-compiler</code><a href="https://oxc.rs/docs/guide/usage/linter/rules/react/react-compiler.html"> rule</a> - This experimental rule leverages the Rust port of the React Compiler and surfaces the same diagnostics as <code>eslint-plugin-react-compiler</code>. Early adopters (<a href="https://github.com/adobe/react-spectrum/pull/10203">React Spectrum</a>, <a href="https://github.com/sanity-io/sanity/pull/13114">Sanity</a>) have already reported significant (x5-6) performance improvements.</p></li><li><p>&#128064; <a href="https://github.com/rolldown/rolldown/pull/9801">Rolldown PR - Expose React Compiler options</a> - PR already merged, so Vite and Rolldown users will soon be able to use the <code>transform.reactCompiler</code> option.</p></li><li><p>&#128064; <a href="https://github.com/swc-project/swc/pull/11917">SWC PR - Add React Compiler</a> - The PR has been merged and released in Rust crate v68.1, exposing a new <code>jsc.transform.reactCompiler</code> configuration option.</p></li><li><p>&#128064; <a href="https://github.com/web-infra-dev/rspack/pull/14435">Rspack PR - Bump SWC to support the React Compiler</a> - In the next v2.1 release (the beta drops tomorrow), <code>builtin:swc-loader</code> will support the React Compiler in Rust. The Rspack team reported that the Rust version is 7-13x faster than the Babel one (<a href="https://x.com/jiahan_c/status/2067120712587092090">tweet</a>).</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/94573">Next.js PR - Add experimental Turbopack React Compiler support</a> - This adds a new <code>experimental.turbopackRustReactCompiler</code> option. Available in Next.js v16.3.0-canary.52, and likely to be released very soon in Next.js 16.4.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jun17">Product for Engineers - The stuff nobody tells you about startup marketing</a></p></li><li><p>&#128064; <a href="https://github.com/whatwg/html/issues/12591">HTML proposal - Localized time formatting without JavaScript</a> - Have you ever come across date-related SSR/SSG hydration errors in React or any other framework? Apparently, browser vendors agree that these problems need to be solved, and here&#8217;s an initial proposal based on declarative HTML attributes.</p></li><li><p>&#128064; <a href="https://make.wordpress.org/core/2026/06/05/react-19-upgrade-temporarily-reverted-in-gutenberg/">WordPress - React 19 upgrade temporarily reverted in Gutenberg</a> - WordPress initially announced a React 19 upgrade for the Gutenberg plugin and WordPress. They encountered JSX runtime compatibility issues between React v18/v19 and had to revert. Support for v19 is still planned for WordPress 7.1.</p></li><li><p>&#128220; <a href="https://tsrx.dev/blog/rethinking-tsrx">Rethinking TSRX</a> - The TSRX (TypeScript Render Extensions) syntax has been redesigned to be backward-compatible with JSX, easing its adoption and making its proprietary features more explicit. An interesting project to watch this year, coming from Dominic Gannaway (React, Svelte, Inferno), offering an ergonomic shared UI syntax compatible with various framework runtimes.</p></li><li><p>&#128220; <a href="https://www.adarsha.dev/blog/tanstack-mental-model-for-nextjs-developers">TanStack Start: A Mental Model for Next.js Developers</a> - A deep dive into the differences, covering typesafety, isomorphic loaders, RSC-as-data mental model, and more.</p></li><li><p>&#128220; <a href="https://www.jayfreestone.com/writing/module-level-dependency-injection-react/">Module System Dependency Injection in React &amp; Friends</a> - An interesting overview of Dependency Injection across React meta-frameworks, and a critique of Next.js suggestion to use the module system for DI in RSCs.</p></li><li><p>&#128220; <a href="https://polar.sh/blog/orbit-llm-safe-design-system">Building an LLM safe design system</a> - Polar&#8217;s new design system relies on a single polymorphic <code>&lt;Box&gt;</code> component with typesafe props accepting StyleX design tokens. They forbid the usage of Tailwind or primitive HTML elements, so that AI agents always respect their design decisions.</p></li><li><p>&#128184; <a href="https://certificates.dev/react/free-weekend?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=react_free_weekend_june_2026&amp;friend=TWIR">Certificates.dev: Free React Weekend. Unlimited access to 9 chapters, 49 quiz questions, 13 coding challenges, and a trial exam. 27-28 June</a></p></li><li><p>&#128230; <a href="https://hydrogen.shopify.dev/update/hydrogen-developer-preview">Hydrogen developer preview</a> - Shopify&#8217;s framework, initially leaning on Remix/React, is becoming a framework/runtime agnostic toolkit, designed in partnership with the Next.js team.</p></li><li><p>&#128230; <a href="https://github.com/facebook/stylex/blob/main/CHANGELOG.md#0190-jun-14-2026">StyleX 0.19 - </a><code>@stylexjs/atoms</code><a href="https://github.com/facebook/stylex/blob/main/CHANGELOG.md#0190-jun-14-2026"> for Tailwind-like inline atomic styles, ESLint 10 compatibility</a></p></li><li><p>&#128230; <a href="https://www.react.doctor/docs/ci-and-prs/github-actions-setup">React Doctor GitHub Action</a></p></li><li><p>&#128230; <a href="https://github.com/airbnb/visx/releases/tag/v4.0.0">Visx 4.0 - Low-level visualization components from Airbnb - Support for React 19</a></p></li><li><p>&#128230; <a href="https://github.com/remotion-dev/remotion/releases/v4.0.475">Remotion 4.0.475 - Interactively change your code with Remotion Studio</a></p></li><li><p>&#128230; <a href="https://github.com/rstackjs/rsbuild-plugin-react-router/releases/tag/rsbuild-plugin-react-router%400.2.0">Rsbuild Plugin React Router 0.2 - Support for Rsbuild/Rspack v2</a></p></li><li><p>&#128230; <a href="https://github.com/vadimdemedes/ink">Ink 7.1 - CLI renderer - Add </a><code>suspendTerminal()</code><a href="https://github.com/vadimdemedes/ink"> to hand the terminal to a child process</a></p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-ai-beta">TanStack AI Beta - The Switzerland of AI Tooling Grows Up</a> - Comes with first-class React support.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p8bM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p8bM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p8bM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p8bM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p8bM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!p8bM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!p8bM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p8bM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p8bM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p8bM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F556767f5-3669-403a-b0d4-6e011414fbc3_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/TkDodo">Dominik Dorfmeister</a></strong><a href="https://twitter.com/TkDodo">Web Developer - React-Query maintainer</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jhEE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jhEE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jhEE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jhEE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jhEE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jhEE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg" width="1430" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1430,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Make your logs queryable, not just readable&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Make your logs queryable, not just readable" title="Make your logs queryable, not just readable" srcset="https://substackcdn.com/image/fetch/$s_!jhEE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jhEE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jhEE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jhEE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4633d93-0103-4ad3-a9da-ee42383e7bf0_1430x715.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://sentry.io/cookbook/structured-logging-logtape/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=logs-fy27q1-cookbook&amp;utm_content=newsletter-logtape-secondary-trysentry">Make your logs queryable, not just readable</a></strong></p><p><code>console.log("here")</code>doesn&#8217;t cut it in production. Structured logs do.</p><p>Use this tutorial to connect LogTape + Sentry and make every log searchable, queryable, and connected to your traces. When something breaks, you&#8217;ll get the full picture: log events, error context, and Session Replay, all linked by trace ID.</p><ul><li><p>Filter by user ID, order ID, or any custom field</p></li><li><p>Attach context once, inherit it everywhere</p></li><li><p>Alert when log patterns spike before users notice</p></li></ul><p><a href="https://sentry.io/cookbook/structured-logging-logtape/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=logs-fy27q1-cookbook&amp;utm_content=newsletter-logtape-secondary-trysentry">See the full recipe &#10145;&#65039;</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yyxG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yyxG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yyxG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yyxG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yyxG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!yyxG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg" width="1000" height="525" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:525,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native 0.86&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Native 0.86" title="React Native 0.86" srcset="https://substackcdn.com/image/fetch/$s_!yyxG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yyxG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yyxG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yyxG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39b6218a-43e0-4dbf-bac0-35d87322e0b9_1000x525.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://reactnative.dev/blog/2026/06/11/react-native-0.86">React Native 0.86</a></strong></p><p>The new React Native release is out! This time, there are no major features or changes. It&#8217;s focused on fixes and stability improvements. Although it might not seem that exciting, the good news is that there are no breaking changes, which should make upgrading that much easier. Especially, with all the AI tools that can assist in it. &#128521;</p><p>Here are the highlights:</p><ul><li><p>The React Native repository has moved to the <a href="https://github.com/react">/react GitHub org</a> under the <a href="https://react.foundation/">React Foundation</a>, alongside other core projects. It&#8217;s a major step toward a more independent foundation focused on stewarding React&#8217;s future.</p></li><li><p>Comprehensive edge-to-edge support on Android 15+.</p></li><li><p>Performance tracing improvements in React Native DevTools.</p></li></ul><p>Related news:</p><ul><li><p>&#128038; <a href="https://x.com/cortinico/status/2067181532138152308">The RN repository transition resulted in forks being locked</a> - See how to unlock your fork so that you can continue contributing.</p></li><li><p>&#128038; <a href="https://x.com/zoontek/status/2066490044605436337">Expo SDK 56 will soon be updated to RN 0.86</a></p></li><li><p>&#128038; <a href="https://x.com/zoontek/status/2066466699985989874">With RN 0.86, you don&#8217;t need react-native-edge-to-edge anymore</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://docs.maestro.dev/get-started/maestro-mcp?utm_source=this-week-in-react&amp;utm_medium=newsletter&amp;utm_campaign=mcp-viewer-jun17">Maestro - Write React Native UI tests with Cursor or Claude Code, see them run live in Maestro Viewer.</a></p></li><li><p>&#128467;&#65039; <a href="https://ti.to/chainreact/chainreact2026/discount/TWIR">Chain React</a> - &#127482;&#127480; Portland - 30-31 July. Don&#8217;t miss talks from experts at Expo, React Foundation, Software Mansion, and Infinite Red! Get a 15% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/four-years-of-react-native-quick-crypto">Four Years of React Native Quick Crypto: From Wallets to Node Parity</a> - A history of a JSI-based hash-and-HMAC library written for Web3 boom, its evolution into full Node crypto implementation on mobile, Nitro rewrite, and more.</p></li><li><p>&#128220; <a href="https://sighery.com/posts/patching-kindle-homepage/">React Native, Hermes bytecode, and the Kindle homepage</a> - Amazon e-readers use RN to power their homepage. The author, a Kindle modder, dives into Hermes bytecode to patch the Kindle homepage and remove carousel ads.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/faster-ios-builds-with-precompiled-xcframeworks">Faster iOS Builds with Precompiled XCFrameworks</a> - prebuild Expo modules are now enabled by default, a step towards moving away from CocoaPods and reducing the amount of native compilation steps. It&#8217;s a part of a broader modernization effort.</p></li><li><p>&#128220; <a href="https://medium.com/@pumpdotfun_/how-we-improved-the-startup-time-of-our-app-by-50-b3107bed1bf9">How We Improved the Startup Time of Our App by 50%</a> - Case study on how to profile native and JS code, what optimisations had the biggest impact, and how to protect against regressions.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/moqkit-native-mobile-sdk-moq-ios-android/">MoQKit: A Native Mobile SDK for MoQ on iOS and Android</a> - Media over QUIC is a live media protocol. SWM is working on adding support, starting with native SDKs, with RN coming next.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/introducing-observe">EAS Observe: Performance monitoring for Expo apps</a></p></li><li><p>&#128220; <a href="https://codewithbeto.dev/blog/still-betting-on-react-native">Native got easy. I&#8217;m still betting on React Native.</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/ai-assisted-react-native-migration-for-tv-lessons-from-zattoo">AI-Assisted React Native Migration for TV: Lessons From Zattoo</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-a-kotlin-compiler-plugin-cut-android-time-to-first-render">How a Kotlin compiler plugin cut Android time to first render by 30%</a></p></li><li><p>&#128220; <a href="https://swmansion.com/blog/app-js-conf-2026-recap-gesture-handler-3-0-type-gpu-cli-screens-5-0-and-more/">App.js Conf 2026 Recap - Gesture Handler 3.0, TypeGPU CLI, Screens 5.0, and More</a></p></li><li><p>&#128230; <a href="https://github.com/blazejkustra/react-native-morph-view">Morph View - Morph one image into another with a smooth gooey effect, on the GPU</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.9.0">Uniwind 1.9 - Layout direction component, RTL support</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.14.0">Sentry 8.14 - Deep link correlation, Android profiling improvements, Expo Router instrumentation</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v2.32.0">Gesture Handler 2.32 - React Native 0.86 support, fix </a><code>RNRenderer</code><a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v2.32.0"> import</a></p></li><li><p>&#128230; <a href="https://github.com/N0ku/react-native-nitro-healthkit">Nitro HealthKit - Single TypeScript API over Apple HealthKit and Android Health Connect</a></p></li><li><p>&#128230; <a href="https://github.com/JoaoPauloCMarra/react-native-nitro-markdown/releases/tag/v0.8.0">Nitro Markdown 0.8 - Custom </a><code>renderMarkdown</code><a href="https://github.com/JoaoPauloCMarra/react-native-nitro-markdown/releases/tag/v0.8.0"> for MarkdownStream, TypeScript improvements, iOS crash fixes</a></p></li><li><p>&#128230; <a href="https://github.com/numandev1/react-native-compressor/releases/tag/v2.0.0">Compressor 2.0 - Nitro Modules migration, min RN 0.75+</a></p></li><li><p>&#128230; <a href="https://github.com/pablogdcr/react-native-data-detector">Data Detector - Cross-platform text data detection of phone numbers, URLs, emails, dates, and addresses</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched-html/releases/tag/v1.0.0">Enriched HTML 1.0 - Stable release, renamed from </a><code>react-native-enriched</code><a href="https://github.com/software-mansion/react-native-enriched-html/releases/tag/v1.0.0"> to </a><code>react-native-enriched-html</code></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-builder-bob/releases/tag/create-react-native-library%400.63.0">CRNL 0.63 / Builder Bob 0.43 - use a unique name for the exports condition for source, metro-config dropped</a></p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/releases/tag/v3.0.6">Legend List 3.0.6 - </a><code>clearCaches</code><a href="https://github.com/LegendApp/legend-list/releases/tag/v3.0.6"> rechecks visible rows, scroll perf, KeyboardAware insets</a></p></li><li><p>&#128230; <a href="https://github.com/zoontek/react-native-permissions/releases/tag/5.6.0">Permissions 5.6 - </a><code>openContactPicker</code><a href="https://github.com/zoontek/react-native-permissions/releases/tag/5.6.0"> for iOS 18+ limited contacts</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.17.6">Agent Device 0.17.6 - Rslib perf, external xctest runner, Maestro reporter improvements</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=HmFvvd5bLSo&amp;list=PLkOyNuxGl9jy5hgF3xR64k9reOM5jHDHl">William Candillon - Learn React Native Declarative Gestures and Animations</a> - William&#8217;s animation course is now freely available. It&#8217;s based on Reanimated v2, but it&#8217;s still worth it for learning evergreen animation techniques. By the way, William has a new website where he has published an <a href="https://wcandillon.dev/article/hello-project-redraw">intro to Redraw</a>.</p></li><li><p>&#127909; <a href="https://www.youtube.com/playlist?list=PLSk21zn8fFZCE_TlHUVnTVMm7mNl_fzxl">App.js Conf 2026 - Full conference playlist</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=4j6NvCNPGtE">Beto - Expo UI Crash Course: Render Real SwiftUI &amp; Jetpack Compose from React Native</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-365-chain-react-2026">React Native Radio 365 - Chain React 2026 behind the scenes, AI trends</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/nodejs/node/pull/62239">Node.js PR - Experimental support for package maps</a> - Node.js can now resolve packages using a static JSON file generated by a package manager, instead of walking <code>node_modules</code> directories. This can make resolution more reliable, decoupled, and performant. Already supported by <a href="https://github.com/yarnpkg/berry/releases/tag/@yarnpkg/cli/4.17.0">Yarn 4.17</a>, and possibly <a href="https://github.com/pnpm/pnpm/pull/12430">soon in pnpm</a>?</p></li><li><p>&#128220; <a href="https://olliewilliams.xyz/blog/dark-mode/">Dark mode with web standards</a> - An overview of <code>color-scheme</code>, its current limits, and what&#8217;s coming.</p></li><li><p>&#128220; <a href="https://www.prisma.io/blog/bun-rust-rewrite-prisma-compute">We put Bun&#8217;s Rust rewrite in production on Prisma Compute</a> - &#8220;the Rust rewrite behaved better than the stable release&#8221;.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-table-v9-typescript-performance">TypeScript Performance in TanStack Table V9</a> - Advanced TS perf lessons for lib authors used to reduce TS workload by up to 86%.</p></li><li><p>&#128230; <a href="https://nerdy.dev/prop-for-that">Prop For That - JS library that backfills what CSS doesn&#8217;t provide, yet</a> - This lets you define dynamic CSS variables through declarative HTML attributes.</p></li><li><p>&#128230; <a href="https://babeljs.io/blog/2026/06/16/8.0.0/">Babel 8.0 - ESM-only, drop ES5 default, and a smooth migration path</a></p></li><li><p>&#128230; <a href="https://biomejs.dev/blog/biome-v2-5/">Biome 2.5 - 500 Lint Rules, Plugin Code Fix, and Cross-File Linting</a></p></li><li><p>&#128230; <a href="https://github.com/npm/cli/releases/tag/v11.17.0">npm 11.17 - add </a><code>min-release-age-exclude</code><a href="https://github.com/npm/cli/releases/tag/v11.17.0"> config</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.7">pnpm 11.7 - Full resolution in Rust, </a><code>--frozen-store</code><a href="https://pnpm.io/blog/releases/11.7">, scope-specific auth tokens</a></p></li><li><p>&#128230; <a href="https://github.com/gajus/zod-compiler">Zod Compiler - Compile Zod schemas into zero-overhead validation functions at build time</a></p></li><li><p>&#128230; <a href="http://github.com/microsoft/playwright/releases/tag/v1.61.0">Playwright 1.61 - WebAuthn passkeys API, Web Storage API</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RKXc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RKXc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22247e69-0917-4320-ae1f-ea8a2fbec79c_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2dU9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2dU9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2dU9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2dU9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2dU9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!2dU9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg" width="1000" height="1064" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1064,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!2dU9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2dU9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2dU9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2dU9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe453694d-97b8-4fd8-8409-183cfa5ba93f_1000x1064.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 285]]></title><description><![CDATA[React.foundation, Rust Compiler, S&#228;tteri, Motion, TanStack Table, React Router, Flow, NavLink | Runtimes, JSI, Standard Navigation, Testing Library, Static Hermes, BottomTabs, AGP, AI, Windows |]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-285</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-285</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 12 Jun 2026 12:38:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GfoR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, we&#8217;re taking a look at the new React Foundation website, as the React core repositories transition to their new home. All eyes on the React Compiler in Rust, coming soon in your everyday toolchain.</p><p>React Native 0.86 is almost here, but releases apparently like to land on Wednesday evenings &#128517; so we&#8217;ll cover it next week. Let&#8217;s focus on React Native Runtimes instead, a quite interesting multi-threading innovation.</p><p>Cloudflare has acquired VoidZero, and npm v12 will officially block postinstall scripts by default in July, improving our supply chain security.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!orli!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!orli!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!orli!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!orli!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!orli!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!orli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mike Grabowski&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!orli!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!orli!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!orli!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!orli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/grabbou">Mike Grabowski</a></strong><a href="https://twitter.com/grabbou">CTO and founder - Callstack</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oIeW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oIeW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oIeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!oIeW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!92Qe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!92Qe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 424w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 848w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!92Qe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg" width="1400" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The React.Foundation website&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The React.Foundation website" title="The React.Foundation website" srcset="https://substackcdn.com/image/fetch/$s_!92Qe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 424w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 848w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://react.foundation/">The React.Foundation website</a></strong></p><p>The React Foundation was <a href="https://react.dev/blog/2025/10/07/introducing-the-react-foundation">announced nearly a year ago</a>, and you may be wondering what actions it has taken so far. Did you know the React Foundation had a website? Although it&#8217;s still a work-in-progress (<a href="https://github.com/react-foundation-dev/react.foundation">source code</a>), it&#8217;s already up and running and worth taking a look at to discover what&#8217;s planned, such as:</p><ul><li><p>A system to fund maintainers of critical ecosystem libraries</p></li><li><p>An official React merchandise store with profits redistributed to maintainers</p></li><li><p>Quarterly transparent reports with revenue details, maintainer funding, and more</p></li><li><p>A logged-in &#8220;Contributor Status&#8221; page, adding a cool gamification layer</p></li></ul><p>Earlier today, most React-related repositories also moved from the <code>facebook</code> GitHub organization to the <code>react</code><a href="https://github.com/react"> GitHub organization</a>, reflecting the transition to the React Foundation. This includes React, React Native, Yoga, JSX, Metro, React-Strict-DOM, Create-React-App, and more.</p><p>It&#8217;s not <code>facebook/react</code> anymore, but <code>react/react</code>: end of an era!</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://pscale.link/rw">PlanetScale - Low-latency queries, branch and deploy like code, and best-in-class reliability. All in one database.</a></p></li><li><p>&#128064; <a href="https://github.com/react/react/pull/36173">React Core PR - Port React Compiler to Rust</a> - The PR has been officially merged, although no Rust crate or npm package has been published yet. The <a href="https://github.com/oxc-project/oxc/pull/22942">Oxc integration</a> is available in Rust crate v0.135, and it&#8217;s being integrated <a href="https://github.com/rolldown/rolldown/pull/9671">in Rolldown</a> and <a href="https://github.com/oxc-project/oxc/pull/23202">in Oxlint</a>. See also the <a href="https://github.com/swc-project/swc/pull/11917">SWC integration PR</a> and the <a href="https://github.com/oven-sh/bun/pull/31785">Bun integration PR</a>.</p></li><li><p>&#128064; <a href="https://github.com/reactjs/rfcs/pull/278">React RFC - Support using disposable as useEffect cleanup</a> - A proposal for <code>useEffect</code> to integrate with the new ES feature Explicit Resource Management / <code>using</code>, allowing to return a disposable resource like <code>{[Symbol.dispose]: myEffectCleanupFunction}</code>.</p></li><li><p>&#128467;&#65039; <a href="https://reactadvanced.com/?utm_source=thisweekinreact">React Advanced London</a> - &#127468;&#127463; London - 23 &amp; 26 Oct. Call for Papers is open until June 22! Submit your talk and share your advanced React insights with the community. Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://medium.com/flow-type/flow-for-typescript-users-in-2026-ad07ac0a2d92">Flow for TypeScript Users in 2026</a> - Flow&#8217;s syntax has converged with TypeScript to the point where it&#8217;s hard to tell them apart anymore. It&#8217;s stricter and offers features TypeScript lacks, including pattern matching and component/hook/renders syntax. I don&#8217;t know if Flow is ready for an official comeback, but I like its direction. Note that its compiler is also being ported to Rust,</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/building-an-active-navlink-component-in-nextjs/">Building an Active NavLink Component in Next.js</a> - Building a production-grade reusable <code>NavLink</code> component for the App Router with an <code>isActive/className</code> render prop API inspired by React Router. It&#8217;s surprisingly not so easy: you need to deal with initial paint flickering and need to use Suspense for Cache Components.</p></li><li><p>&#128220; <a href="https://jjenzz.com/best-loading-states-are-no-loading-states/">The Best Loading States Are No Loading States</a> - Route transitions, route loaders, preloading, and global fallbacks can make loading states mostly disappear.</p></li><li><p>&#128220; <a href="https://reactjs-maxxing.vercel.app/blog/how-react-server-component-integrate-with-bundler">How React Server Components Integrate with Bundler</a></p></li><li><p>&#128220; <a href="https://www.jayfreestone.com/writing/updating-react-parents-in-response-to-changes-in-children/">When React parent components need to know their children</a></p></li><li><p>&#128220; <a href="https://www.react.doctor/blog/the-problem-with-useeffect">The problem with useEffect &#8211; React Doctor can help</a></p></li><li><p>&#128184; <a href="https://frontendnation.com/workshops/inside-developer-certifications-an-ama-with-alain-chautard?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=frontend_nation_certification_workshop_2026&amp;friend=TWIR">Certificates.dev: Certification AMA Workshop. Ask our expert how exams are built, graded, proctored, and impacts careers. Join for free!</a></p></li><li><p>&#128230; <a href="https://satteri.bruits.org/">S&#228;tteri - Flexible Rust-based Markdown / MDX engine</a> - A faster Rust-based alternative to the Unified ecosystem and the JS-based implementation of MDX. It could <a href="https://github.com/withastro/roadmap/pull/1364">become Astro&#8217;s default parser</a> in the future, and already <a href="https://github.com/withastro/starlight/releases/tag/%40astrojs%2Fstarlight%400.40.0">integrates with Starlight</a>.</p></li><li><p>&#128230; <a href="https://motion.dev/docs/arc">Motion 12.40 - Support for </a><code>arc()</code><a href="https://motion.dev/docs/arc"> motions</a> - This lets you animate elements along curved paths.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-table-v9-taking-form">TanStack Table 9.0 beta - State management and perf improvements, tree-shakable, extendable, composable</a> - TanStack Table took inspiration from TanStack Form state management to rebuild its state management on top of TanStack Store and atoms, preventing useless re-renders and becoming compatible with the React Compiler along the way.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/v8/CHANGELOG.md#v800-pre0">React Router 8.0 prerelease</a> - The next major version is now available for early adopters to try. It&#8217;s a relatively boring release, in a good way: the v8 future flags are gone, and their behaviors are now enabled by default. It also bumps runtime requirements, drops CJS and the <code>react-router-dom</code> package.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7170">React Router 7.17 - Ship Markdown docs for AI agents</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/react/releases/tag/v19.2.7">React 19.2.7, 19.1.8, 19.0.7 - Fix a Server Actions FormData regression</a></p></li><li><p>&#128279; <a href="https://share.transistor.fm/s/dd8e79de">This Month in React - Who even is on the Core team anymore, TanStack got pwn&#8217;d bad</a></p></li><li><p>&#128279; <a href="https://creators.spotify.com/pod/profile/dan-neciu/episodes/Routing-at-Scale-with-TanStack-Routers-Nicolas-Beaussart--React-Router-Migration--Monorepos--PayFit-e3keqv9">Se&#241;ors at Scale - Routing at Scale with TanStack Router&#8217;s Nicolas Beaussart</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Iw3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Iw3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;William Candillon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="William Candillon" title="William Candillon" srcset="https://substackcdn.com/image/fetch/$s_!9Iw3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/wcandillon">William Candillon</a></strong><a href="https://twitter.com/wcandillon">React-Native animations expert - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rlg4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rlg4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agent Conf 2026: Learn to Ship Cross-Platform with AI&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Agent Conf 2026: Learn to Ship Cross-Platform with AI" title="Agent Conf 2026: Learn to Ship Cross-Platform with AI" srcset="https://substackcdn.com/image/fetch/$s_!Rlg4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.agent.sh/?utm_campaign=agent_conf&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=ebt">Agent Conf 2026: Learn to Ship Cross-Platform with AI</a></strong></p><p>Callstack&#8217;s <a href="https://www.agent.sh/?utm_campaign=agent_conf&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=ebt">Agent Conf</a> (September 17-18, 2026, Warsaw) is bringing together hundreds of agentic engineering practitioners, with Nader Dabit, Levan Kvirkvelia, Tejas Kumar, Kent C. Dodds, Kitze, David Mokos, and more speakers to be announced soon. Learn how to work better with agents: build intuition for when to guide or let them run, understand loops, memory, cost, and failure modes, coordinate multi-agent systems, and hear what&#8217;s actually working for teams adopting agentic workflows today.</p><p>The last Early Bird Tickets are still available. Get an extra <strong>10% off</strong> with promo code <strong>TWIR</strong>.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GfoR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GfoR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GfoR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg" width="1280" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native Runtimes&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Native Runtimes" title="React Native Runtimes" srcset="https://substackcdn.com/image/fetch/$s_!GfoR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://github.com/margelo/react-native-runtimes">React Native Runtimes</a></strong></p><p>Margelo, in collaboration with Callstack, introduced a new package to add a multi-runtime layer to React Native apps. It&#8217;s a great solution for performance-heavy features and business logic isolation to avoid blocking interaction.</p><p>If your app has features that jank on mount, slow first-open screens, background hydration or decoding, state logic competing with animation, it might be worth checking it out.</p><p>Key features:</p><ul><li><p>Run selected components, screens, and headless tasks.</p></li><li><p>Share state across runtimes through a native Zustand-style C++ singleton.</p></li><li><p>Prewarm runtimes to avoid cold-start lag.</p></li><li><p>Call a typed function on a specific runtime and await the result.</p></li><li><p>Expo support with a config plugin.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jun10">Product for Engineers - The golden rules of agent-first product engineering</a></p></li><li><p>&#128064; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1006">React Native RFC - Android Gradle Plugin v9 adoption</a> - This drafts a three-phase AGP v9 adoption strategy to keep up with Android, doing the required changes to support <a href="https://developer.android.com/build/migrate-to-built-in-kotlin">built-in Kotlin</a> before the opt-outs are removed in AGP v10.</p></li><li><p>&#128064; <a href="https://github.com/facebook/hermes/blob/static_h/doc/blog/2026-06-05-new-hermes-stable-release.md">Static Hermes - What&#8217;s new in the next stable release</a> - This blog post announces many new ES features to be supported natively, including Set operations, Iterator helpers, <code>groupBy</code>, <code>TextDecoder</code>, and more. It will also be faster and support built-in TypeScript type-stripping!</p></li><li><p>&#128064; <a href="https://github.com/react-navigation/standard-navigation">Standard Navigation integration PRs</a> - Remember <a href="https://expo.dev/blog/expo-router-v56-decoupling-from-react-navigation">Expo Router 56 forking React Navigation</a>? Fortunately, we have a shared abstraction for creating navigators that can work with both routing libraries, and should help reduce ecosystem fragmentation. It has already been integrated into React Navigation (<a href="https://github.com/react-navigation/react-navigation/pull/13122">PR</a>) and Expo Router (<a href="https://github.com/expo/expo/pull/46456">PR</a>).</p></li><li><p>&#128467;&#65039; <a href="https://ti.to/chainreact/chainreact2026/discount/TWIR">Chain React</a> - &#127482;&#127480; Portland - 30-31 July. Incredible speaker lineup featuring Charlie Cheever (Expo), Seth Webster (React Foundation), Kacper Kapu&#347;ciak (Software Mansion), Mazen Chami (Infinite Red) and more. Get a 15% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128467;&#65039; <a href="https://reactnativeconnection.io/?utm_source=thisweekinreact.com">React Native Connection</a> - &#127467;&#127479; Paris - 24 Sept. The premier French React Native conference is back! Secure your spot early and get a 15% discount with code &#8220;TWIR&#8221;. Call for Papers closes June 14.</p></li><li><p>&#128197; <a href="https://luma.com/20df5csq">React Native &amp; AI meet-up by Software Mansion</a> - June 18th, NYC &#127482;&#127480;</p></li><li><p>&#128220; <a href="https://expo.dev/blog/talking-to-jsi-in-swift">Talking to JSI in Swift: what changed in SDK 56</a> - In SDK 56, Expo&#8217;s native modules call JSI directly on Apple platforms. The Objective-C++ layer is gone, and calls are 1.6&#8211;2.3x faster.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/moving-away-from-expo-vector-icons">Moving away from </a><code>@expo/vector-icons</code> - Explanation on why the icons package is deprecated in favor of a better alternative, and the benefits of switching.</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/2026-06-01-exploring-inlined-requires/">Exploring Inlined Requires</a> - A 3-part series of Metro&#8217;s <code>inlineRequires</code>: the transform mechanics, when flipping the flag doesn&#8217;t improve cold start, and how Expo Router solves it with lazy loading.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/on-device-ai-after-wwdc-2026-whats-new">On-device AI after WWDC 2026: What&#8217;s new?</a> - A look into new AI features from Apple and how React Native will make use of them.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/ai-supported-brownfield-migration-to-react-native">AI-Supported Brownfield Migration to React Native</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/expo-highlights-new-products-and-plans-for-the-future">What happened at AppJS 2026? Highlights, new products, and plans for the future</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.0.0">React Native Testing Library 14.0 - React 19, async APIs, Test Renderer replacement</a></p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/react-native/%F0%9F%9A%80react-native-windows-v0-83-is-here/">React Native Windows 0.83 - Performance Testing Framework, Richer Pointer Event Support, Fabric Component Parity</a></p></li><li><p>&#128230; <a href="https://github.com/IronTony/react-native-docusign">React Native DocuSign - Native captive signing for React Native &amp; Expo</a></p></li><li><p>&#128230; <a href="https://lynxjs.org/next/blog/lynx-3-8">Lynx 3.8 - WebAssembly on Android, Adaptive Layout, Line-aware Auto Font Sizing, monthly release cadence</a></p></li><li><p>&#128230; <a href="https://github.com/brandtnewlabs/react-native-livechart">Livechart - High-performance live line &amp; candlestick charts for React Native, built on Skia and Reanimated</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.4.0">Nitro Fetch 1.4 - Support for local and non-HTTP URLs</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-data-scanner">Data Scanner - Fast one-shot QR/Barcode scanning, powered by Nitro and native scanner UIs</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.17.0">Agent Device 0.17 - iOS runner stability, perf metrics, replay test sharding</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.12.0">Rozenite 1.12 - DevTools middleware fixes, compose sections across hook instances, support Expo bundle asset listings</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-bottom-tabs/releases/tag/react-native-bottom-tabs%401.3.0">Bottom Tabs 1.3 - Liquid Glass tint color improvements</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=j4V3XwQ65s8">Simon Grimm - I used Expo and Vega OS to make a Fire TV App</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=vons_XypdQw">Daniel Friyia Jr - Intro to 3D Graphics with WebGPU and Expo</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://voidzero.dev/posts/voidzero-cloudflare">VoidZero is Joining Cloudflare</a> - Cloudflare acquired the company behind Vite, Vitest, Rolldown, Oxc, Oxfmt, Oxlint, and Vite+. These tools will remain open-source, MIT-licensed, and community-driven. Cloudflare promises no lock-in and plans to build its new <code>cf</code> CLI around Vite.</p></li><li><p>&#128227; <a href="https://github.blog/changelog/2026-06-09-upcoming-breaking-changes-for-npm-v12/">GitHub - Upcoming breaking changes for npm v12</a> - GitHub announces that npm v12 (scheduled for July) will improve security-related default behaviors, blocking install lifecycle scripts by default!</p></li><li><p>&#128220; <a href="https://zackoverflow.dev/writing/why-does-tsgo-use-so-much-memory">Why does tsgo use so much memory?</a> - It runs one type checker per thread.</p></li><li><p>&#128230; <a href="https://github.com/rolldown/rolldown/releases/tag/v1.1.0">Rolldown 1.1 - Enables lazy barrel optimization, aligns TS </a><code>references</code><a href="https://github.com/rolldown/rolldown/releases/tag/v1.1.0"> resolution with tsc</a></p></li><li><p>&#128230; <a href="https://blog.angular.dev/announcing-angular-v22-c52bb83a4664">Angular 22.0 - Signal Forms, Angular Aria, OnPush-by-default, async DI, IA, and more</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IXT8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IXT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IXT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg" width="1448" height="1270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1270,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!IXT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 284]]></title><description><![CDATA[TanStack Start, Compiler, React Router, Forms, TypeGPU, React Aria, shadcn, XState | App.js, Gesture Handler, SPM, Expo, Runtimes, Legend List, Desktop | npm, Node.js, Astro]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-284</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-284</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 05 Jun 2026 12:49:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BYl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, Kacper and Filip from <a href="https://swmansion.com/">Software Mansion</a> here.</p><p>This week, TanStack Start is once again in the spotlight. The React Compiler in Rust is on its way. React Router and Remix shipped important security patches &#8211; update immediately. There&#8217;s also a fresh batch of releases from TanStack Form, XState Store, shadcn, React Aria, and more.</p><p>On the React Native side, this week was dominated by <a href="http://appjs.co/">App.js Conf 2026</a> in Krak&#243;w. Gesture Handler 3.0, Swift Package Manager support for React Native, and Legend List 3.0 were among the highlights, alongside Expo announcements like EAS Observe.</p><p>Let&#8217;s go!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CvQ9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CvQ9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!CvQ9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/Baconbrix">Evan Bacon</a></strong><a href="https://twitter.com/Baconbrix">Engineering Manager - Expo</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!icCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!icCx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!icCx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!icCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Atomic CRM: The Open-Source CRM Toolkit for Developers&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Atomic CRM: The Open-Source CRM Toolkit for Developers" title="Atomic CRM: The Open-Source CRM Toolkit for Developers" srcset="https://substackcdn.com/image/fetch/$s_!icCx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!icCx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://github.com/marmelab/atomic-crm">Atomic CRM: The Open-Source CRM Toolkit for Developers</a></strong></p><p>Stop struggling with locked-in CRMs and expensive seats. Atomic CRM gives you the power of a professional CRM with the total freedom of open-source.</p><p>It&#8217;s the only toolkit that combines a high-end user experience with data sovereignty. No more lock-in, no more &#8220;renting&#8221; your contacts.</p><p>Everything you need is already there:</p><ul><li><p><strong>Native Mobile App</strong> for on-the-go access.</p></li><li><p><strong>Intuitive Kanban Boards</strong> for pipeline management.</p></li><li><p><strong>Built-in Email Tracking</strong> to stay on top of leads.</p></li><li><p><strong>Free SSO</strong> for seamless team integration.</p></li><li><p><strong>MCP Server Integration</strong> for productivity gains.</p></li></ul><p>Why settle for a black box SaaS when you can own the entire platform? <a href="https://marmelab.com/atomic-crm/">Deploy Atomic CRM</a> on your own infrastructure in minutes and regain control over your most valuable asset: your data.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BYl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BYl6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BYl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg" width="1000" height="545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:545,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack + Rspack&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack + Rspack" title="TanStack + Rspack" srcset="https://substackcdn.com/image/fetch/$s_!BYl6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>TanStack Start Gaining Momentum:</strong></p><ul><li><p>&#128220; <a href="https://tanstack.com/blog/start-adds-rsbuild-support">TanStack Start Adds First-Class Rsbuild Support</a> - TanStack Start now supports Rsbuild / Rspack alongside Vite via a new plugin adapter, covering SSR, streaming, HMR, Server Functions, and RSC.</p></li><li><p>&#128220; <a href="https://lovable.dev/fr/blog/building-apps-using-tanstack-start">Lovable - Building apps using TanStack Start</a> - The AI App builder is now using TanStack Start with SSR by default for all new projects.</p></li><li><p>&#128220; <a href="https://performance.dev/the-conductor-rewrite">The Conductor Rewrite: What They Changed to Make It Fast</a> - Migrating their Tauri desktop app from React Router to TanStack Router significantly reduced re-renders thanks to its built-in structural sharing and stable refs.</p></li><li><p>&#128220; <a href="https://workos.com/blog/tanstack-start-authentication-guide">TanStack Start authentication: A developer&#8217;s guide for 2026</a> - Why <code>beforeLoad</code> doesn&#8217;t protect server functions, the double-guard pattern, sessions, and middleware.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://svar.dev/react/gantt/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=may">SVAR React Gantt &#8211; Build project timelines with a pure React API and advanced scheduling (MIT &amp; PRO)</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/36173#issuecomment-4608356402">React Compiler update - The Rust compiler PR to be merged soon</a> - It already produces at 99.9% the same output as the original TS compiler. You can try it already through a local PR checkout. The Oxc team is already working on an integration (<a href="https://github.com/oxc-project/oxc/pull/22942">PR</a>).</p></li><li><p>&#128197; <a href="https://nextjs.org/nights">Next.js Nights - The Next.js team on tour (9 June SF, 11 June Amsterdam, 18 June London)</a> - They also <a href="https://x.com/nextjs/status/2059997719197098425">teased us</a> about an upcoming v16.3 release, including Instant Navigations and new AI-related features.</p></li><li><p>&#128272; <a href="https://x.com/ReactRouter/status/2061839906834395649">React Router &amp; Remix v2 - 7 CVEs published</a> - Includes RCE, CSRF, XSS, and DoS vulnerabilities. Update to React Router v7.16.0 / v6.30.4 or Remix v2.17.5.</p></li><li><p>&#128220; <a href="https://dev.to/mbarzeev/deprecating-a-react-component-using-typescript-overload-2ka">Deprecating a React component using TypeScript Overload</a> - How to ship a breaking component redesign without renaming it with the usage of TS overload, mark the old API as <code>@deprecated</code>, and let consumers opt into the new version by adding a <code>new</code> prop.</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-jun3">PostHog - PostHog Code and the self-driving product</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/form/releases/tag/%40tanstack/react-form%401.33.0">TanStack Form 1.33 - </a><code>FormGroup</code><a href="https://github.com/TanStack/form/releases/tag/%40tanstack/react-form%401.33.0"> API to simplify multi-step forms</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.77.0">React Hook Form 7.77 - new </a><code>resetDefaultValues</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.77.0"> API</a></p></li><li><p>&#128230; <a href="https://github.com/resend/react-email/releases/tag/react-email%406.5.0">React Email 6.5 - Filter compatibility warnings by client, accessibility improvements</a></p></li><li><p>&#128230; <a href="https://docs.swmansion.com/TypeGPU/ecosystem/typegpu-react/">TypeGPU React - React bindings for TypeGPU</a> - Hooks like <code>useFrame</code>, <code>useUniform</code>, and <code>useRoot</code> to write GPU shaders directly in TypeScript and integrate WebGPU into React components.</p></li><li><p>&#128230; <a href="https://github.com/facebook/lexical/releases/tag/v0.45.0">Lexical 0.45 - New composable DOMImportExtension replacing importDOM, backspace now preserves block type, canUndo/canRedo signals on HistoryExtension.</a></p></li><li><p>&#128230; <a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0">React Aria Components 1.18 - </a><code>Calendar</code><a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0"> multi-date selection, month/year pickers, new </a><code>TableFooter</code><a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0"> and </a><code>SliderFill</code><a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0"> components</a> - Checkbox, Radio, and Switch now support description and error message slots.</p></li><li><p>&#128230; <a href="https://react-spectrum.adobe.com/releases/v1-4-0.html">React Spectrum 1.4 - drag &amp; drop in ListView and similar, TableView highlight selection &amp; TableFooter, custom prefixes in ComboBox/TextField, multi-date Calendar selection</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog">Shadcn UI 4.9 &amp; 4.10 - GitHub registries, </a><code>npx shadcn eject</code><a href="https://ui.shadcn.com/docs/changelog"> to extract any component into your codebase</a></p></li><li><p>&#128230; <a href="https://github.com/amannn/next-intl/releases/tag/v4.13.0">Next Intl 4.13 - </a><code>useExtracted</code><a href="https://github.com/amannn/next-intl/releases/tag/v4.13.0"> function now generates message keys using URL-safe base64</a></p></li><li><p>&#128230; <a href="https://github.com/xyflow/xyflow/releases/tag/%40xyflow/react%4012.11.0">React Flow 12.11 - new </a><code>autoPanOnSelection</code><a href="https://github.com/xyflow/xyflow/releases/tag/%40xyflow/react%4012.11.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0">XState Store 4.0 - </a><code>createStoreLogic</code><a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0"> for reusable stores, </a><code>enq.trigger</code><a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0"> for chaining events, Standard Schema support, </a><code>store.can</code><a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0"> for event checking.</a></p></li><li><p>&#128230; <a href="https://github.com/pierpo/react-archer/releases/tag/v5.0.0">React Archer 5.0 - Draw arrows between elements - Add React 19 support</a></p></li><li><p>&#128230; <a href="https://github.com/nickjvandyke/eslint-plugin-react-you-might-not-need-an-effect/blob/main/CHANGELOG.md#100-2026-05-31">ESLint Plugin React &#8221;You Might Not Need An Effect&#8221; 1.0</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=J4kzovOTNKw">Jack Herrington - All 17 TanStack Projects In ONE App!</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=dbe0wC9Y8bo">Se&#241;ors at Scale - Redux at Scale with Mark Erikson</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LRtz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LRtz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LRtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mike Grabowski&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!LRtz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/grabbou">Mike Grabowski</a></strong><a href="https://twitter.com/grabbou">CTO and founder - Callstack</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NHmk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NHmk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NHmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!NHmk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMQw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMQw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Highlights from App.js Conf 2026&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Highlights from App.js Conf 2026" title="Highlights from App.js Conf 2026" srcset="https://substackcdn.com/image/fetch/$s_!RMQw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://appjs.co/">Highlights from App.js Conf 2026</a></strong></p><p>Last week, the community gathered at the App.js Conf happening in Krak&#243;w. We&#8217;re highlighting three announcements here, since many of the others shipped over the past month and were demoed again on stage. Make sure to catch the rest of the talks through the live stream recordings (<a href="https://www.youtube.com/live/4H8iRPN0Q2M?si=2dYvWbCDiA3SHznk">Day 1</a>, <a href="https://www.youtube.com/live/dvpeMlwPNnw?si=po7jCHjf84nn04vF">Day 2</a>).</p><p><strong><a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.0.0">React Native Gesture Handler 3.0</a></strong></p><p>Major release rebuilt for the New Architecture, dropping Old Architecture support, introducing a new hook-based API which is React Compiler friendly, a new <code>Touchable</code> component with built-in animations and deeper Reanimated integration.</p><p><strong>Swift Package Manager support for React Native</strong></p><p>Meta + Expo previewed <code>npx react-native spm</code>, which scaffolds SPM config to replace CocoaPods: generates a committable Xcode project, runs codegen, caches XCFrameworks globally. CocoaPods trunk goes read-only Dec 2. Both Cocoapods and SPM work in parallel during the transition.</p><p><strong><a href="https://docs.expo.dev/eas/observe/introduction/">EAS Observe</a></strong></p><p>New Expo production performance monitoring service that tracks real-world startup times, render performance, and bundle load times across devices, with release comparison and per-session investigation. Currently in Private Preview, free up to 10K MAU for at least three months.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://docs.maestro.dev/get-started/maestro-mcp?utm_source=this-week-in-react">Maestro MCP - Let your AI agent write and run mobile UI tests for you</a></p></li><li><p>&#128038; <a href="https://x.com/tmikov/status/2060005546053579163">N-API v10 support landed in Hermes trunk - native Node-API addons can now run on Hermes without modification. Still experimental.</a></p></li><li><p>&#128467;&#65039; <a href="https://ti.to/chainreact/chainreact2026/discount/TWIR">Chain React</a> - &#127482;&#127480; Portland - 30-31 July. The US React Native conference is back! Grab your tickets now and get a 15% discount with code &#8220;TWIR&#8221;!</p></li><li><p>&#128220; <a href="https://evanbacon.dev/blog/expo">Things I Learned While Building Expo</a> - Evan Bacon is leaving Expo after 9 years. He wrote what he learned on dogfooding, listening user feedback, building developer trust through rough patches, and why data beats vibes when you&#8217;re building developer tools.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/expo-router-v56-decoupling-from-react-navigation">Expo Router v56: Decoupling from React Navigation</a> - Covers the decision to fork React Navigation internals for full architectural control, codemod-assisted migration, streaming SSR with generateMetadata, and new Android toolbar API and Native Tabs customization.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/native-code-expo-sdk-56">Native code in Expo SDK 56: inline modules and type generation</a> - How inline modules let you write Swift and Kotlin files directly alongside your app code, and how <code>expo-type-information</code> automatically generates matching TypeScript interfaces from them.</p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-runtimes">React Native Runtimes - Run RN Components and business logic in isolated Hermes runtimes</a> - This Margelo/Callstack library permits rendering React components on separate JS Runtimes, and share state across them.</p></li><li><p>&#128230; <a href="https://github.com/shirakaba/expo-desktop">Expo Desktop - build macOS and Windows desktop app with Expo</a> - Unofficial announcement coming from community.</p></li><li><p>&#128230; <a href="https://www.react.doctor/react-native">React Native Doctor</a> - New open-source CLI that scans your React Native app for performance and security bugs and fixes them with AI agents</p></li><li><p>&#128230; <a href="https://github.com/TanStack/ai/releases/tag/@tanstack/ai@0.23.0">TanStack AI 0.23 - React Native support</a> - Chat clients and framework hooks now run in React Native via a new <code>fetcher</code> option.</p></li><li><p>&#128230; <a href="https://keyframer.dev/">Keyframer.dev - Visual Animation Editor for React Native</a> - Outputs production-ready Reanimated v4 code - drag keyframes on a timeline, or type a prompt and get a <code>useAnimatedScene</code> hook you can paste directly into your project.</p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/blob/main/CHANGELOG.md#300">Legend List 3.0 - Web support added, scroll jump prevention is now core behavior, and </a><code>maintainVisibleContentPosition</code><a href="https://github.com/LegendApp/legend-list/blob/main/CHANGELOG.md#300"> is now opt-in and disabled by default.</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.11.0">Rozenite 1.11 - Network activity timeline &amp; export, performance startup insights, waterfall view, navigation dispatch origin tracking</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-bottom-sheet">@swmansion/react-native-bottom-sheet - Native bottom-sheet components, inline and modal, with content-based sizing and scrollable-child handling</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.13.0">Sentry React Native 8.13 - </a><code>NavigationContainer</code><a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.13.0"> wrapper for React Navigation, iOS Swift Package Manager support, Expo Router param extraction, pause/resume app hang tracking</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.9.0">Argent 0.9 - new </a><code>screenshot-diff</code><a href="https://github.com/software-mansion/argent/releases/tag/v0.9.0"> too, configurable release-age-aware update reminders</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.16.0">Agent Device 0.16 - Maestro YAML replay compatibility, structured MCP command tools, iOS transform gestures, Android ANR recovery</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.8.0">Uniwind 1.8 - Vite 8 support, </a><code>uniwind generate-artifacts</code><a href="https://github.com/uni-stack/uniwind/releases/tag/v1.8.0"> CLI</a></p></li><li><p>&#128230; <a href="https://github.com/RevenueCat/react-native-purchases/releases/tag/10.2.0">React Native Purchases 10.2 - Ad tracking support</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=yH0QwDpV4ZM">Code with Beto - Why AI-Built Apps Feel Cheap (And How to Fix It)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=bu8X9mCL0Ek">Expo - Where is Expo Go?</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128202; <a href="https://survey.devographics.com/en-US/survey/state-of-css/2026?source=this_week_in_react">State of CSS 2026 - Survey is now open</a></p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/your-node-js-streams-arent-backpressuring-theyre-silently-eating-your-memory/">Node.js streams, backpressure, memory leaks</a> - A pragmatic 2-part deep dive to help you reduce the memory footprint of your streams.</p></li><li><p>&#128220; <a href="https://pierre.computer/writing/on-rendering-diffs">On Rendering Diffs &#8211; Pierre Computer Company</a> - Deep dive into building a zero-blanking diff virtualizer using the &#8220;Inverse Sticky Technique&#8221;, with insights on layout estimation, DOM pooling, memory optimization, and deferred syntax highlighting.</p></li><li><p>&#128230; <a href="https://github.com/nodejs/node/releases/tag/v26.3.0">Node.js 26.3 - New </a><code>permission.drop()</code><a href="https://github.com/nodejs/node/releases/tag/v26.3.0"> API, configurable HTTP header validation, </a><code>Buffer.poolSize</code><a href="https://github.com/nodejs/node/releases/tag/v26.3.0"> bumped to 64 KiB</a> - Improves the security model, letting you start with the permissions you need for initialization, then drop the ones you no longer need at runtime.</p></li><li><p>&#128230; <a href="https://github.com/npm/cli/releases/tag/v11.16.0">npm 11.16 - Phase 1 of package.json </a><code>allowScripts</code> - npm is rolling out supply chain security improvements in 2 phases, catching up with other package managers. v11.16 adds <code>package.allowScripts=[]</code> and warns on unapproved postinstall scripts. v12.0 will block them by default.</p></li><li><p>&#128230; <a href="https://github.com/endevco/aube/releases/tag/v1.17.0">Aube 1.17 - Rust-based package manager - Staged publish trust, hoisting limits, remote tarball integrity fixes, and OTP support for dist-tag writes</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.5">pnpm 11.5 - </a><code>hoistingLimits</code><a href="https://pnpm.io/blog/releases/11.5"> setting, interactive prompt library, detect staged publishing trust downgrades</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-640/">Astro 6.4 - Pluggable markdown processor, Rust-based Markdown processor for faster builds, and Cloudflare helpers for advanced routing.</a></p></li><li><p>&#128230; <a href="https://github.com/yarnpkg/berry/releases/tag/%40yarnpkg/cli/4.16.0">Yarn 4.16 - New stage command for staged publishing, editor SDK support for oxc</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IK3V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IK3V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 424w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 848w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1272w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IK3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png" width="599" height="552" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:552,&quot;width&quot;:599,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!IK3V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 424w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 848w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1272w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 283]]></title><description><![CDATA[TanStack, RSC, Liquid DOM, Performance, i18n, docs, Apollo, shadcn | Expo, Reanimated, worklets, NativeScript, Standard Navigation, Strict DOM, Lynx, Apex, ExecuTorch | TC39,]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-283</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-283</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 29 May 2026 12:45:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4fiO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week we have great deep dive blog posts about data fetching (TanStack vs Next.js) and performance (GitHub and Linear).</p><p>On the React Native side, Expo dropped a major SDK with Expo UI stable. Reanimated leverages the shared animation backend and improves CSS animations on iOS.</p><p>Supply chain security remains an important topic. npm introduced staged publishing workflows, and will block postinstall scripts by default in the near future.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cBLm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cBLm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!cBLm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!cBLm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/jherr">Jack Herrington</a></strong><a href="https://twitter.com/jherr">Principal Engineer - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!haBF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!haBF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!haBF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!haBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!haBF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!haBF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://blog.sentry.io/fixing-javascript-observability/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=observability-fy27q2-evergreen&amp;utm_content=newsletter-react-link-javascript-blog-learnmore">Sentry - One engineer, 44 libraries, and a Node API nobody was using. Here&#8217;s how JavaScript observability is getting fixed upstream.</a></p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/component-architecture-for-react-server-components/">Component Architecture for React Server Components</a> - A deep dive into data fetching techniques, their limits and tradeoffs. RSCs permit to design explicit loading experiences and leverage composition more than loaders.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/tan-stack-router-and-query">TanStack Router and Query</a> - Integrating Query with Route loaders permits to start fetching data as early as possible (even on intent / link hover), and have granular control over what suspends/defers. It&#8217;s recommended to avoid <code>Router.useLoaderData()</code> and treat the loader as a fire-and-forget event handler.</p></li><li><p>&#128220; <a href="https://github.blog/engineering/architecture-optimization/from-latency-to-instant-modernizing-github-issues-navigation-performance/">Modernizing GitHub Issues navigation performance</a> - GitHub is in the middle of moving from Rails-rendered pages to a React frontend. They explain how they improved Issues navigation performance, involving a mix of soft/hard navigation and Rails Turbo transitions.</p></li><li><p>&#128220; <a href="https://performance.dev/how-is-linear-so-fast-a-technical-breakdown">How&#8217;s Linear so fast?</a> - Someone studied in depth their techniques, involving many details, including using MobX observables and storing content locally in IndexedDB.</p></li><li><p>&#128220; <a href="https://formisch.dev/blog/one-core-six-frameworks/">One core, six frameworks, zero runtime abstraction</a> - Formisch is a framework-agnostic form library that integrates with many frameworks by swapping native reactivity at build time instead of providing adapters. React doesn&#8217;t have native signals so it still requires a minimal signal implementation.</p></li><li><p>&#128184; <a href="https://www.skybridge.tech/?utm_source=Third+Party&amp;utm_medium=react+newsletter&amp;utm_campaign=Skybridge+V1">Skybridge V1 - MCP Apps developers, meet the react framework for building MCP apps. Write once, run in ChatGPT, Claude, and any MCP client.</a></p></li><li><p>&#128230; <a href="https://getspiceflow.com/">Spiceflow - Type-safe API and full-stack React RSC framework focused on absolute simplicity</a> - A new meta-framework being actively worked on. See also <a href="https://holocron.so/">Holocron</a>, a Mintlify-compatible docs site generator built on top.</p></li><li><p>&#128230; <a href="https://github.com/AndrewPrifer/liquid-dom">Liquid DOM - Liquid Glass for the Web</a> - A promising library based on WebGPU and HTML-in-Canvas, providing first-class React and React-Three-Fiber bindings.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-virtual-perf-and-ios">TanStack Virtual 3.15 - A lot faster, fix iOS momentum scroll</a></p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-virtual-chat">TanStack Virtual 3.16 - Chat support: end anchoring, append-follow, stable prepends, streaming</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-05-registry-include">shadcn CLI 4.8 - Registry authors can split large </a><code>registry.json</code><a href="https://ui.shadcn.com/docs/changelog/2026-05-registry-include"> files into smaller slices</a></p></li><li><p>&#128230; <a href="https://github.com/haydenbleasel/ultracite/releases/tag/ultracite%407.8.0">Ultracite 7.8 - Zero-config linter preset for ESLint/Biome/Oxlint - Add TanStack preset</a></p></li><li><p>&#128230; <a href="https://www.apollographql.com/blog/whats-new-in-apollo-client-4-2">Apollo Client 4.2 - Type-safe default options, event-based refetching</a></p></li><li><p>&#128230; <a href="https://lingui.dev/blog/2026/05/22/lingui-context-directives">Lingui 6.1 - Directives to set i18n context and namespace multiple translations at once</a></p></li><li><p>&#128230; <a href="https://github.com/nkzw-tech/fbtee">fbtee 2.0 - i18n framework for JS and React, modern continuation of facebook/fbt</a></p></li><li><p>&#128230; <a href="https://press.fumadocs.dev/blog/introducing-fumapress">Fumapress - Docs framework based on Fumadocs (agnostic), Vite, React, MDX, Waku</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=_PB9rHndhU8">Jack Herrington - Is TanStack Starts Deferred Hydration Revolutionary?</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=OODK3KGUjDA">Tobi Mey - I Tested Next.js Dev MCP</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=LZa3GIpX4l4">Wiskey.fm - React Foundation, AI Agents, and the Future of Frameworks w/ Seth Webster</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=anz2xw4FY9c">Se&#241;ors at Scale - TanStack Query at Scale with Dominik Dorfmeister (TkDodo)</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QKZi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QKZi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QKZi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!QKZi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/Baconbrix">Evan Bacon</a></strong><a href="https://twitter.com/Baconbrix">Engineering Manager - Expo</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hb4_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hb4_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hb4_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agent Conf CFP is Now Open&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Agent Conf CFP is Now Open" title="Agent Conf CFP is Now Open" srcset="https://substackcdn.com/image/fetch/$s_!hb4_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.agent.sh/?utm_campaign=agent_conf&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=cfp">Agent Conf CFP is Now Open</a></strong></p><p>If you&#8217;re building agents, pushing the boundaries of AI engineering, or have something genuinely new to share about autonomous systems, this one is for you.</p><p><strong>Agent Conf</strong> is calling for proposals, and they want the good stuff - not safe corporate talks, but bold, experimental, and production-hardened ideas that move the field forward. As a speaker, you&#8217;ll be sharing the stage with heavy hitters like <strong>Kent C. Dodds</strong> and <strong>Nader Dabit</strong>.</p><p>The deadline is June 20, 2026. Submit your talk at <strong><a href="https://sessionize.com/agent-conf-2026/">https://sessionize.com/agent-conf-2026/</a></strong>.</p><p><strong>Agent Conf</strong> is happening in Warsaw on September 17-18, 2026. <strong>Get 10% off</strong> your ticket with promo code <strong>TWIR</strong>.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4fiO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4fiO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4fiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Expo SDK 56&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Expo SDK 56" title="Expo SDK 56" srcset="https://substackcdn.com/image/fetch/$s_!4fiO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://expo.dev/changelog/sdk-56">Expo SDK 56</a></strong></p><p>A new Expo SDK is out! As always it&#8217;s packed with lots of changes. It bumps to React Native 0.85 and React 19.2, which bring Hermes V1 by default, the new animation backend, and more.</p><p>Here are the most notable highlights:</p><ul><li><p><a href="https://expo.dev/blog/expo-ui-stable-sdk-56">Stable Expo UI</a> - SwiftUI on iOS and Jetpack Compose on Android, now production-ready, providing universal components, replacing 8 community libraries. The <a href="https://expo.dev/blog/worklet-integration-in-expo-ui-synchronously-controlling-swiftui-and-compose-state">worklet integration and </a><code>useNativeState()</code> help you implement flicker-free <code>&lt;TextInput&gt;</code> masking.</p></li><li><p>Expo Router - no longer depends on <code>@react-navigation/*</code>. It ships with experimental support for the new native stack (Material-style headers, predictive back gesture), SSR streaming on web, and customizable SuspenseFallback in layout routes.</p></li><li><p>Faster native builds - precompiled XCFrameworks cut iOS clean builds ~16% and opt-in precompiled headers on Android deliver up to 2.81x faster CMake builds.</p></li><li><p>Expo modules improvements - inline modules let you write Kotlin/Swift alongside JS with automatic TS type generation. A new Kotlin compiler plugin replaces reflection, yielding ~40% faster cold starts and ~33% faster first render on Android.</p></li></ul><p>And many more great additions like File System API, consistent status and navigation bars, and stable iOS widgets, there are far too many updates to list. Make sure to check out the <a href="https://expo.dev/changelog/sdk-56">full changelog</a> or <a href="https://www.youtube.com/watch?v=MKqGbv-Tssg">watch the official intro video</a>.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may27">PostHog - 4,063 errors closed without a human opening PostHog &#8211; here&#8217;s what we learned</a></p></li><li><p>&#128064; <a href="https://github.com/react-navigation/react-navigation/pull/13118">React Navigation PR - Rework server rendering API to support streaming</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react-strict-dom/pull/475">React Strict DOM PR - Adopt React Native 0.82 DOM Node APIs</a></p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1003">React Native RFC - Dedicated </a><code>*Instance</code><a href="https://github.com/react-native-community/discussions-and-proposals/pull/1003"> types for built-in RN component refs</a> - With the upcoming Strict TypeScript API and auto-generated types, built-in components will be typed as functions instead of classes: <code>useRef&lt;View&gt;</code> will break. This RFC proposes to export a <code>ViewInstance</code> type to let you type <code>useRef&lt;ViewInstance&gt;</code> instead.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/deep-dive-in-keyboard-handling">The Go-To Guide for Understanding Keyboards in React Native</a> - A deep dive into how keyboards work, differences between OS versions, quirks, and how to make it work across platforms.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/profile-react-components-in-react-native-release-builds">Profile React Components in React Native Release Builds</a> - A way to profile without debug-mode overhead similar to what web developers do for a long time.</p></li><li><p>&#128220; <a href="https://nicolasgallagher.com/one-react-for-web-and-native/">One React for Web and Native</a> - An outline on how to unify React Native with the web platform to reduce ecosystem fragmentation. React Native directly implements subsets of the DOM specification to make React Strict DOM possible.</p></li><li><p>&#128230; <a href="https://www.npmjs.com/package/@nativescript/react-native">NativeScript React Native</a> - TurboModule wrapper giving access to all native APIs in React Native, letting you create UIKit views on the fly. This looks promising, and I&#8217;m sure we&#8217;ll hear more about it soon!</p></li><li><p>&#128230; <a href="https://lynxjs.org/next/blog/lynx-ui">Lynx UI</a> - The React Native competitor launched unstyled UI components for ReactLynx covering scroll views, popovers, swipers, sheets, reference design language. Programmable interactions and motion.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/4.4.0">Reanimated 4.4 - iOS CSS Core Animation engine, Animation Backend, useTimestamp hook, precompiled headers on Android</a> - Add supports for RN 0.85 new shared animations backend, behind a flag.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.9.1">Worklets 0.9.1 - Cross-runtime Promises, uniform Shareable hosting, DX improvements</a></p></li><li><p>&#128230; <a href="https://github.com/react-navigation/standard-navigation">Standard Navigation - API for creating navigators that can work with multiple navigation libraries, such as React Navigation and Expo Router</a></p></li><li><p>&#128230; <a href="https://github.com/module-federation/core/releases/tag/v2.5.0">Module Federation 2.5 - Metro plugin for Rock, manifest hashes for native caching, observability integration</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/releases/tag/0.6.0">Enriched Markdown 0.6 - Mentions, superscript/subscript, custom selection, better streaming</a></p></li><li><p>&#128230; <a href="https://github.com/gronxb/hot-updater/releases">Hot Updated 0.32 - Bundle diffing, content-addressed storage, faster OTA deploys</a></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-v2-6-0">Maestro CLI 2.6 - Maestro Viewer, parallel iOS sim execution, MCP improvements</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-executorch/releases/tag/v0.9.0">ExecuTorch 0.9 - 10x faster Whisper, Multilingual Text-to-Speech, continuous voice activity detection</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.12.0">Sentry RN 8.12 - Expo Router integration, build-time label injection, multi-instance TTID/TTFD</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.7.0">Uniwind 1.7 - Major bundler refactor, flex parsing fix</a></p></li><li><p>&#129302; <a href="https://www.callstack.com/blog/introducing-apex-a-fast-specialized-model-for-react-native">Apex (private beta) - React Native coding model, based on Gemma 4, built by Callstack</a> - A smaller domain-specific model can be faster, more performant and cost-effective than a general model.</p></li><li><p>&#129302; <a href="https://github.com/margelo/react-native-skills">Margelo RN agent skills - AI skills for Nitro Modules, VisionCamera, MMKV</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/playlist?list=PLSk21zn8fFZCE_TlHUVnTVMm7mNl_fzxl">App.js Conf 2026</a> - The conf starts tomorrow, free to watch live.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://bsky.app/profile/tc39.es/post/3mmhlitpxrq2a">TC39 - 114th meeting outcome</a> - Last week&#8217;s meeting advanced many exciting ES proposals: Explicit Resource Management, <code>Atomics.pause</code>, <code>Iterator</code> APIs, <code>Intl</code> APIs, and more.</p></li><li><p>&#128064; <a href="https://github.com/npm/cli/pull/9360">npm PR - Phase 1 of making install scripts opt-in</a> - npm CLI implementing new supply chain security features! This introduces various APIs such as <code>package.allowScripts</code>. Phase 1 (being backported in v11) will emit an advisory warning on unapproved scripts. Phase 2 (v12.0) will block unapproved script runs by default.</p></li><li><p>&#128064; <a href="https://github.com/WICG/persistent-iframes">WICG proposal - Persistent Iframes</a> - Very early, but this could help make MPAs more compelling against SPAs if there was a way to preserve chats and audio/video players across navigation.</p></li><li><p>&#128220; <a href="https://www.joshwcomeau.com/animation/css-vs-javascript/">CSS vs. JavaScript animations</a> - Explains the performance and flexibility tradeoff of animating with JS vs animating with CSS/WAAPI on a separate thread.</p></li><li><p>&#128230; <a href="https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/">npm CLI 11.15 - Staged publishing, new </a><code>--allow-*</code><a href="https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/"> flags</a> - 2 updates focused on supply-chain security. Use <code>npm stage</code> to publish a release in 2 phases, requiring the approval of a human maintainer.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.3">pnpm 11.3 - npm staged publishing with </a><code>pnpm stage</code><a href="https://pnpm.io/blog/releases/11.3">, </a><code>trustLockfile</code><a href="https://pnpm.io/blog/releases/11.3"> setting</a></p></li><li><p>&#128230; <a href="https://deno.com/blog/v2.8">Deno 2.8 - New commands, defaults to </a><code>:npm</code><a href="https://deno.com/blog/v2.8">, Node.js compatibility, </a><code>import defer</code><a href="https://deno.com/blog/v2.8">, and more</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v24.16.0">Node 24.16 - Test runner improvements, </a><code>randomUUIDv7()</code><a href="https://nodejs.org/en/blog/release/v24.16.0">, more APIs support </a><code>AbortSignal</code></p></li><li><p>&#128230; <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151">Firefox 151 - </a><code>@container</code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151"> queries (widely available), Document Picture-in-Picture, Web Serial API</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3asJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3asJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!3asJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg" width="1000" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!3asJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PrCs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PrCs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!PrCs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg" width="1000" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!PrCs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 282]]></title><description><![CDATA[Security, Fate, TanStack, Redux, Jotai, Base UI, Relay, Storybook | Hermes-node, Expo, Rozenite, Harness, VR, Nitro, Skia, Redraw | TC39, Bun, pnpm, npm, Yarn, Node, Webpack]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-282</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-282</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 22 May 2026 12:14:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!q9KJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>It looks like security is going to be a hot topic this year! &#128517;<br>More packages are being compromised, and blog posts are also covering recent RSC vulnerabilities.<br>Maybe we&#8217;re reaching a tipping point, and better security practices will consolidate this year.</p><p>On the React Native side, Hermes-node is quite exciting, although it&#8217;s very early.</p><p>An exciting TC39 meeting is currently underway, and several proposals have already progressed.<br>Yarn and npm are improving on the security side.<br>Bun and pnpm are being ported to Rust.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qgeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qgeO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qgeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!qgeO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tjvb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tjvb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!Tjvb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q9KJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q9KJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg" width="1365" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1365,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mini Shai-Hulud worm keeps digging&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mini Shai-Hulud worm keeps digging" title="Mini Shai-Hulud worm keeps digging" srcset="https://substackcdn.com/image/fetch/$s_!q9KJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.wiz.io/blog/mini-shai-hulud-teampcp-hits-antv-supply-chain">Mini Shai-Hulud worm keeps digging</a></strong></p><p>Remember last week&#8217;s TanStack Router compromise? The dangerous worm from TeamPCP keeps compromising users and maintainers across ecosystems, affecting popular packages such as <code>echarts-for-react</code> and <code>@antv</code>, and GitHub actions such as <code>actions-cool/issues-helper</code>. <a href="https://openai.com/index/our-response-to-the-tanstack-npm-supply-chain-attack/">OpenAI employees got compromised</a>, leading them to regenerate code signing certificates. Grafana has been <a href="https://grafana.com/blog/grafana-labs-security-update-latest-on-tanstack-npm-supply-chain-ransomware-incident/">blackmailed by a ransomware group</a>.The Million.js repository was also <a href="https://github.com/aidenybai/million/issues/1186">briefly compromised</a>, but they seem to have gotten lucky: it apparently didn&#8217;t affect anyone.</p><p>Rumors also link this worm to the <a href="https://github.com/nrwl/nx-console/security/advisories/GHSA-c9j4-9m59-847w">Nx Console VSCode extension compromise</a>, and possibly connected to a major <a href="https://x.com/github/status/2056949168208552080">GitHub internal repo breach</a>. This story isn&#8217;t over &#8212; &#8220;Mini&#8221; feels like a very questionable name &#128517;!</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://pscale.link/rw">PlanetScale - Faster apps start with a faster database. Get started with the fastest benchmarked Postgres and MySQL.</a></p></li><li><p>&#128467;&#65039; <a href="https://reactnorway.com/?utm_medium=social&amp;utm_source=ThisWeekReact">React Norway</a> - &#127475;&#127476; Oslo - 5 June - Experience the &#8220;Rock &amp; React&#8221; atmosphere in a unique one-track full-stack festival with 350+ passionate developers. -10% with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/react-server-components-in-tanstack/">React Server Components in TanStack</a> - A pragmatic intro to TanStack&#8217;s flexible RSC model, CompositeComponent, and how much it could save in terms of client bundle size.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/jotai-structural-sharing-vs-selectatom/">Structural sharing, selectAtom, and why your jotai atoms re-render too much</a> - Explains how deriving atoms, decomposing into primitive atoms, and structural sharing can help avoid re-renders.</p></li><li><p>&#128220; <a href="https://lachlan.nz/blog/the-react2shell-story">The React2Shell Story</a> - 2 articles from the duo who reported the security flaw allowing remote code execution in RSC.</p></li><li><p>&#128220; <a href="https://saschb2b.com/blog/flight-protocol-dos">The Flight Protocol Made Your DoS My Problem</a> - React/Next.js recently patched various CVEs. One of them could block your Node process in a single HTTP request.</p></li><li><p>&#128184; <a href="https://certificates.dev/react/free-weekend?friend=TWIR">Certificates.dev - React Free Weekend is coming. Get unlimited access to mid-level training, incl. coding challenges + trial exam for 48H.</a></p></li><li><p>&#128230; <a href="https://fate.technology/posts/fate-1.0">Fate 1.0 - The first full Async React Metaframework</a> - Fate is a Relay-inspired framework (not based on GraphQL) supporting view composition, normalized caching, data masking, Async React features, live views through Server-Sent Events, Drizzle, garbage collection, and more.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/router/releases/tag/release-2026-05-20-1004">TanStack Router releases - Deferred hydration capabilities, route matching priority</a> - Deferred Hydration (experimental, <a href="https://tanstack.com/start/latest/docs/framework/react/guide/deferred-hydration">docs</a>) could help improve your page&#8217;s perceived performance by making it interactive sooner. They also recently introduced <a href="https://tanstack.com/start/latest/docs/framework/react/guide/css-styling#inline-route-css-in-production">CSS inlining</a> and a <a href="https://tanstack.com/start/latest/docs/framework/react/guide/middleware#csrf-middleware">CSRF middleware</a>.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/streaming-structured-output">TanStack AI releases - </a><code>useChat()</code><a href="https://tanstack.com/blog/streaming-structured-output"> supports streaming structured output</a></p></li><li><p>&#128230; <a href="https://github.com/reduxjs/react-redux/releases/tag/v9.3.0">React Redux 9.3 - </a><code>connect</code><a href="https://github.com/reduxjs/react-redux/releases/tag/v9.3.0"> API deprecated, Trusted Publishing fixed</a> - The old HOC API is not removed, but it&#8217;s recommended to migrate to <code>useSelector/useDispatch</code></p></li><li><p>&#128230; <a href="https://github.com/reduxjs/redux-toolkit/releases/tag/v2.12.0">Redux Toolkit 2.12 - TypeScript Improvements, Skills</a></p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-5-0">Base UI 1.5 - Major mount perf improvements for popovers/dialogs/tooltips/menus</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.76.0">React Hook Form 7.76 - Improved </a><code>isDirty</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.76.0"> and </a><code>useFieldArray</code></p></li><li><p>&#128230; <a href="https://github.com/facebook/relay/releases/tag/v21.0.0">Relay 21.0 - First-party TypeScript support, experimental RSC support, improved error handling</a></p></li><li><p>&#128230; <a href="https://storybook.js.org/blog/storybook-10-4/">Storybook 10.4 - TanStack React, React Native isolation, agentic setup, review filters</a></p></li><li><p>&#128230; <a href="https://github.com/millionco/react-doctor">React Doctor 0.2 - Your agent writes bad React. This catches it.</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7151">React Router 7.15.1 - New </a><code>unstable_useRouterState</code><a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7151"> consolidation API</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=6moPS3AAbe4">Nuno Maduro - Why React Developers Are Leaving Next.js for TanStack, with Tanner Linsley</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=gwTQLZSIlsU">Fireship - A single PR just hijacked the NPM registry...</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/1005/programatic-and-skill-based-video-creation-with-remotion">Syntax.fm 1005 - Programatic and Skill based Video Creation with Remotion</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oz5H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oz5H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!Oz5H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/jherr">Jack Herrington</a></strong><a href="https://twitter.com/jherr">Principal Engineer - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oYiC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oYiC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oYiC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tomorrow Only: Next.js Debugging Workshop&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tomorrow Only: Next.js Debugging Workshop" title="Tomorrow Only: Next.js Debugging Workshop" srcset="https://substackcdn.com/image/fetch/$s_!oYiC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://sentry.io/resources/nextjs-may-workshop/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q2-nextjsworkshop&amp;utm_content=newsletter-secondary-nextjs-workshop-register">Tomorrow Only: Next.js Debugging Workshop</a></strong></p><p>Most Next.js bugs don&#8217;t fail loudly. They fail in a webhook handler at 3am, in a server component nobody touched, in an auth flow that worked yesterday. Sentry&#8217;s hands-on workshop shows you how to catch them with high-context logs and distributed tracing.</p><p>Last chance to save your spot. <strong><a href="https://sentry.io/resources/nextjs-may-workshop/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q2-nextjsworkshop&amp;utm_content=newsletter-secondary-nextjs-workshop-register">Register today.</a></strong></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may20">PostHog - The 7 best session replay tools for mobile apps</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/unlocking-expo-updates-in-an-isolated-brownfield-architecture-with-sdk-55">Unlocking Expo Updates in an Isolated Brownfield Architecture with SDK 55</a> - Running Expo Updates in Isolated Brownfield was always a challenge. Thanks to recent updates, it is a thing of the past.</p></li><li><p>&#128220; <a href="https://expo.dev/changelog/expo-go-loading-changes-may-2026">Changes to project loading behavior in Expo Go</a> - Breaking change for EAS Update users: Expo Go now enforces ownership checks. Self-hosted updates can no longer serve Hermes bytecode bundles.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/wtf-does-box-do-in-nitro-modules/">WTF does </a><code>.box()</code><a href="https://www.peterp.me/articles/wtf-does-box-do-in-nitro-modules/"> do in Nitro Modules?</a> - It converts <code>NativeState</code>-backed objects into <code>HostObjects</code> so they can cross worklet runtime boundaries.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/build-fast-no-matter-what-how-expo-is-optimizing-for-speed">Build fast, no matter what: how Expo is optimizing for speed (and how you can, too)</a> - Deep dive into Expo&#8217;s build speed optimizations: hardware scaling, Gradle caching, prebuilt binaries, and fingerprint-based workflows that avoid full rebuilds for JS-only changes.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/using-turbomodule-substitution-to-build-safer-react-native-plugin-systems">Using TurboModule Substitution to Build Safer React Native Plugin Systems</a> - Explains how React Native Sandbox 0.6 offers granular sandboxing capabilities.</p></li><li><p>&#128230; <a href="https://github.com/tmikov/hermes-node">Hermes Node - Node.js built-in module compatibility layer for the Hermes JS engine</a> - The creator of Hermes published an AI-driven prototype of a new JS/TS runtime built on Hermes, compatible with Node.js. It won&#8217;t outperform Node.js/V8 today, but Static Hermes could make it way faster in the future.</p></li><li><p>&#128230; <a href="https://github.com/daehyeonmun2021/react-native-skia-lab">Skia Lab - Beautiful react-native-skia demo</a> - A collection of painting, physics, shaders, and gesture interactions demos.</p></li><li><p>&#128230; <a href="https://updates.reactvision.xyz/meta-quest-lands-studio-scenes-drop-in-whats-new-in-viroreact-2-55-0-a8876564047a">ViroReact 2.55 - Ship as a native VR experience on Meta Quest</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/react-native-harness/releases/tag/v1.2.0">Harness 1.2 - iOS code coverage, permission automation, external xctest commands</a></p></li><li><p>&#128230; <a href="https://github.com/jamsch/expo-speech-recognition/releases/tag/v56.0.0">Expo Speech Recognition 56 - Expo SDK 56 support</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/typegpu-confetti/releases/tag/v0.3.0">TypeGPU Confetti 0.3 - Rewritten to use TypeGPU</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.3.0">Nitro Fetch 1.3 - Removed box/unbox, fixed binary responses, performance improvements</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.15.0">Agent Device 0.15 - Faster boot and test replay, iOS replay speedup, MCP discovery-only</a></p></li><li><p>&#128230; <a href="https://github.com/gre/react-native-view-shot/releases">View Shot 5.1 - iOS 17 compatibility, Windows support + example, Android ScrollView fix</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.10.0">Rozenite DevTools 1.10 - Network, Performance, Vite plugin improvements</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=aP8GSJ7oTuc">William Candillon - Debriefing Redraw &amp; TypeGPU</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=ywvywq0AGPM">Beto - Everything new in Expo SDK 56</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=GChgKhfuzYA">React Native Live Ep 11 - Building High-Performance UI with React Native Skia / William Candillon</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-353-building-react-native-apps-in-the-ai-era">RNR 353 - Building React Native Apps in the AI Era</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/tc39/proposal-explicit-resource-management">Explicit Resource Management reached TC39 stage 4</a> - A TC39 meeting is in progress, and many proposals have progressed. The most &#8220;user-facing&#8221; one &#8211; <code>using</code> &#8211; is going to be part of the standard and simplify your resource cleanup logic. I take the opportunity to show you <a href="https://x.com/sebastienlorber/status/2057033638827483236">how to leverage it immediately in Vitest/Jest tests</a>.</p></li><li><p>&#128064; <a href="https://github.com/npm/rfcs/pull/868">npm RFC - Make install scripts opt-in</a> - It&#8217;s great to see npm finally looking to catch up on security! They&#8217;d like to introduce an <code>allowScripts</code> map in <code>package.json</code> to help mitigate the recent supply chain attacks.</p></li><li><p>&#128064; <a href="https://github.com/oven-sh/bun/pull/30412">Bun PR - Rewrite Bun in Rust</a> - The bold, AI-driven PR landed in just one week, making Bun&#8217;s migration from Zig to Rust official. &#129327;</p></li><li><p>&#128220; <a href="https://developer.chrome.com/blog/declarative-partial-updates">Declarative partial updates</a> - New exciting APIs may come to the web platform: out-of-order streaming, and new HTML insertion methods supporting streaming. Already available in Chrome 148 behind an experimental flag.</p></li><li><p>&#128220; <a href="https://www.jasnell.me/posts/quic-comes-to-node">QUIC and HTTP/3 Come To Node.js (finally)</a> - A 5-part deep dive on the experimental <code>node:quic</code> API.</p></li><li><p>&#128230; <a href="https://github.com/pnpm/pnpm/releases/tag/v11.2.0">pnpm 11.12 - Experimental Rust install engine</a> - pnpm is also <a href="https://github.com/pnpm/pnpm/tree/main/pacquet">migrating to Rust</a>, with an incremental strategy. This release introduces an opt-in for the new Rust engine to power the install phase.</p></li><li><p>&#128230; <a href="https://github.com/yarnpkg/berry/releases/tag/%40yarnpkg%2Fcli%2F4.15.0">Yarn 4.15 - Add </a><code>npmMinimalAgeGate: 1d</code><a href="https://github.com/yarnpkg/berry/releases/tag/%40yarnpkg%2Fcli%2F4.15.0"> release cooldown by default</a> - Another package manager adopts better security defaults. BTW, Yarn is also being rewritten in Rust.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.2.0">Node 26.2 - </a><code>stream.compose</code><a href="https://nodejs.org/en/blog/release/v26.2.0"> stable, </a><code>fs.stat()</code><a href="https://nodejs.org/en/blog/release/v26.2.0"> returns </a><code>Temporal.Instant</code></p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-05-19-webpack-5-107/">Webpack 5.107 - Experimental HTML modules, experimental native TS support</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8iBq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iBq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iBq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg" width="1000" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:770,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!8iBq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zwy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zwy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zwy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg" width="1008" height="1800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1800,&quot;width&quot;:1008,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!zwy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 281]]></title><description><![CDATA[Next.js, TanStack, Security, Redact, React Router, Waku, HTML React Parser | Redraw, Expo, Tabs, Screens, Pressable, Activity, Strict DOM, Rock, SWC, Argent Rozenite | TC39, R]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-281</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-281</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Sun, 17 May 2026 13:54:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cCy_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, security is making headlines, as two major React frameworks have announced vulnerabilities and compromised npm packages!</p><p>William Candillon unveiled his secret project: a new set of 2D primitives for React Native and the web.</p><p>It&#8217;s also an exciting week full of interesting releases all around the JS ecosystem!</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TAyB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TAyB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!TAyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!TAyB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!idfs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!idfs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!idfs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!idfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg" width="1024" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&#8239;AI That Gets React Native on Fire TV&#8239;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="&#8239;AI That Gets React Native on Fire TV&#8239;" title="&#8239;AI That Gets React Native on Fire TV&#8239;" srcset="https://substackcdn.com/image/fetch/$s_!idfs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!idfs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://fandf.co/42isydS">&#8239;AI That Gets React Native on Fire TV&#8239;</a></strong></p><p>We built an MCP server for Vega OS, our new React Native TV platform for Fire TV.&#8239;</p><p>Amazon Devices Builder Tools MCP gives your AI agent deep platform context, so instead of generic React Native suggestions, your agent understands how to scaffold correctly, integrate platform features, and follow Vega conventions.&#8239;</p><p>Explore building for TV without the friction of learning a new platform from scratch.&#8239;It&#8217;s&#8239;a step toward making our developer tooling as modern as the platform itself.&#8239;<a href="https://fandf.co/42isydS">One command to install.</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cCy_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cCy_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!cCy_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Next.js May 2026 security release&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Next.js May 2026 security release" title="Next.js May 2026 security release" srcset="https://substackcdn.com/image/fetch/$s_!cCy_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://vercel.com/changelog/next-js-may-2026-security-release">Next.js May 2026 security release</a></strong></p><p>The Next.js team shipped a coordinated security release fixing 13 vulnerabilities across denial of service, middleware/proxy bypass, server-side request forgery, cache poisoning, XSS. Many vulnerabilities are quite impactful, cannot be blocked by cloud firewalls, and it&#8217;s recommended to update immediately to a patched version, v15.5.18 or v16.2.6. There&#8217;s also a Server Functions denial of service affecting React RSC packages, fixed in v19.2.6.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dueW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dueW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dueW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!dueW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg" width="1000" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack npm supply-chain compromise&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack npm supply-chain compromise" title="TanStack npm supply-chain compromise" srcset="https://substackcdn.com/image/fetch/$s_!dueW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dueW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://tanstack.com/blog/npm-supply-chain-compromise-postmortem">TanStack npm supply-chain compromise</a></strong></p><p>On May 11, an attacker published malicious versions across 42 <code>@tanstack/*</code> npm packages related to TanStack Router. Although the attack was detected quickly, its payload is a <a href="https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised">Mini Shai-Hulud worm</a> that infected other maintainers, leading to other compromised packages across npm and pypi ecosystems, including packages from Mistral AI, OpenSearch, UiPath, and more.</p><p>The attack vector was sneaky. A GitHub Action with a <code>pull_request_target</code> trigger was used to inject poisoned content into a shared GitHub Action pnpm cache. Then, their release pipeline read from that poisoned cache, restoring dangerous files that executed during the release process. No maintainer was hacked in the process. The npm releases have the Trusted Publishing checkmark despite being compromised, showing that package provenance does not guarantee its content is safe.</p><p>Given the increasing number of supply chain vulnerabilities affecting npm packages, it&#8217;s good to highlight measures that maintainers and users can take to stay safe:</p><ul><li><p>&#128220; <a href="https://tanstack.com/blog/incident-followup">Hardening TanStack After the npm Compromise</a> - Gives a good overview of what maintainers can do to reduce the supply chain risk. Low-hanging fruits include avoiding the very dangerous <code>pull_request_target</code> trigger, and removing usage of shared caches in sensitive workflow (note: actions such as <code>setup-node</code> using a cache by default).</p></li><li><p>&#128279; <a href="https://github.com/lirantal/npm-security-best-practices">npm package manager Security Best Practices</a> - A canonical resource to protect yourself as an npm package consumer, giving pragmatic recommendations for each package manager. IMHO, combining the Socket Firewall with pnpm 11 is likely the best option right now.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may13">Product for Engineers - Great companies are built in hackathons</a></p></li><li><p>&#128220; <a href="https://tannerlinsley.com/posts/projecting-react">Projecting React</a> - Tanner Linsley wants React to be slimmer, tried Preact without success. He compares React API to database tables, and its implementation to a materialized view. With AI, he&#8217;s creating a different <code>@@tanstack/redact</code> projection, one optimized for TanStack Start, significantly smaller, that already powers <code>tanstack.com</code>. It&#8217;s a narrow experiment, not something he plans to market as an alternative to React. In the future, more devs will likely build optimized projections of the libraries they depend on.</p></li><li><p>&#128220; <a href="https://longho.dev/posts/rsc-server-functions-are-not-an-api-boundary/">RSC Server Functions Are Not An API Boundary</a> - Server Functions are not a replacement for stable, observable, versioned, shared APIs. The generated Server Function ID can change over time as you refactor code, leading to version skew problems on redeploys. Note: cloud providers have skew protection features to mitigate this.</p></li><li><p>&#128220; <a href="https://programmingarehard.com/2026/05/06/react-router-dialogs.html/">Untangling dialogs in React Router</a> - Everything you need to know to simplify your code by using a parent <code>&lt;Outlet&gt;</code> and making each dialog live on its own dedicated route. Covers data revalidation, flash session toasts, dialog exit animations and more.</p></li><li><p>&#128220; <a href="https://www.userinterface.wiki/animating-container-bounds">Animating Container Bounds</a> - How to smoothly animate an element&#8217;s width/height based on its inner content with Motion.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/security-in-react-applications">Security in React Applications</a> - Prevent XSS, store tokens securely, validate inputs, use CSFR and CSPs.</p></li><li><p>&#128220; <a href="https://evilmartians.com/chronicles/from-react-to-native-web-with-nanotags-a-migration-that-saved-100kb">From React to native web with nanotags: a migration that saved 100 KB</a> - For a mostly static marketing site using Astro templates, it can be more efficient to hydrate Custom Elements rather than React.</p></li><li><p>&#128220; <a href="https://tympanus.net/codrops/2026/05/13/exploring-the-html-in-canvas-proposal/">Exploring the HTML-in-Canvas Proposal</a> - It could simplify integration 2D UIs in 3D worlds, in particular for React Three Fiber creative devs.</p></li><li><p>&#128184; <a href="https://github.com/svar-widgets/react-gantt">SVAR React Gantt &#8211; Build interactive project timelines with an open-source React Gantt library.</a></p></li><li><p>&#128230; <a href="https://waku.gg/blog/waku-v1-beta">Waku 1.0 beta</a> - The minimal RSC framework first beta marks our shift toward production readiness. It recently added support for Vite 8, Rolldown, Node 26, React performance tracks, flexible routing, CSP, and more.</p></li><li><p>&#128230; <a href="https://newsletter.daishikato.com/p/jotai-v2-20-0-and-the-store-building-blocks">Jotai 2.20 - Improves performance in high-throughput scenarios, refactor store building blocks</a></p></li><li><p>&#128230; <a href="https://github.com/remarkablemark/html-react-parser/releases/tag/v6.1.0">HTML React Parser 6.1 - add CSP support with </a><code>trustedTypePolicy</code></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=mOncu3xCllw">Ankita Kulkarni - Stop freezing your React apps, use this Background Trick instead</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=5QM7XjbqDug">Shruti Kapoor - Five Minute Deep Dive: React Server Components</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=XSmpScSiPhw">Josef Bender - Protecting my TanStack Start Server Functions</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/1004/tanhacked">Syntax.fm 1004 - TanHacked</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FCYr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FCYr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!FCYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!FCYr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/theo">Theo Browne</a></strong><a href="https://twitter.com/theo">Founder of ping.gg - Youtuber</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S78t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S78t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S78t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!S78t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tests are dead - Meticulous is here&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tests are dead - Meticulous is here" title="Tests are dead - Meticulous is here" srcset="https://substackcdn.com/image/fetch/$s_!S78t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S78t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=2nd">Tests are dead - Meticulous is here</a></strong></p><p>Meticulous creates and maintains an exhaustive suite of e2e ui tests with <strong>zero</strong> developer effort.</p><p>This quote from the CTO of Traba sums the product up best: &#8220;Meticulous has fundamentally changed the way we approach frontend testing in our web applications, fully eliminating the need to write any frontend tests. The software gives us confidence that every change will be completely regression tested, allowing us to ship more quickly with significantly fewer bugs in our code. The platform is easy to use and reduces the barrier to entry for backend-focused devs to contribute to our frontend codebase.&#8221;</p><p>Meticulous is used by companies like Notion, Dropbox, Wiz, LaunchDarkly, and many others.</p><p>This <a href="https://www.meticulous.ai/blog/lessons-from-a-decade?utm_source=thisweekinreact&amp;utm_campaign=26q2&amp;utm_content=2nd">post</a> from our CTO sets out the context of why exhaustive testing can double engineering velocity.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mk02!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mk02!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mk02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg" width="1365" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1365,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Redraw - 2D graphics primitives, powered by WebGPU&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Redraw - 2D graphics primitives, powered by WebGPU" title="Redraw - 2D graphics primitives, powered by WebGPU" srcset="https://substackcdn.com/image/fetch/$s_!Mk02!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://wcandillon.github.io/redraw/">Redraw - 2D graphics primitives, powered by WebGPU</a></strong></p><p>In an <a href="https://www.youtube.com/watch?v=nGLCmY7tdz4">amazing introduction video</a>, William Candillon presented what he&#8217;s been secretly working on for months: a new grade of 2D graphics primitives, powered by WebGPU. It&#8217;s still a technical preview and not open-source yet, but William is looking to make it source-available soon with a license that makes it sustainable.</p><p>It all started with &#8220;Can it be done in React Native?&#8221;, led to Skia on native, then WebGPU for unified 2D/3D composition across platforms. Redraw is the next step: bringing GPU-accelerated vector rendering with rich geometric information back to both native and web.</p><p>What it unlocks:</p><ul><li><p>Variable strokes - stroke width driven by path geometry (tangent, arc length)</p></li><li><p>Color along path - gradient callbacks mapped to arc length or distance</p></li><li><p>Vector feathering - soft shadows, blur, and glow without rasterization</p></li><li><p>Physically-based rendering - material effects computed directly on vector paths</p></li><li><p>Non-physically-based rendering - creative effects impossible with raster pipelines</p></li></ul><p>Built for composability:</p><ul><li><p>Compute shaders powered via <a href="https://typegpu.com/">TypeGPU</a> (optional dependency)</p></li><li><p>Zero-cost integration with Skia, Three.js, PixiJS, and WebGPU</p></li><li><p>Write shader logic in TypeScript, no WGSL required</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ul><li><p>&#128184; <a href="https://sentry.io/cookbook/track-checkout-performance-react-native/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=&amp;utm_content=newsletter-rn-link-rn-checkout-learnmore">Sentry - A guide to finding and fixing slow checkout requests in React Native with distributed tracing and proactive alerts.</a></p></li><li><p>&#128038; <a href="https://x.com/aswincode/status/2051689159723458746">iOS 26 native tab icon</a> - A look into how to display dynamic tab icons, what constraints Expo Router had, and what was needed to overcome them.</p></li><li><p>&#128064; <a href="https://github.com/facebook/react-strict-dom/discussions/471#discussioncomment-16896278">Is React Strict DOM still active?</a> - The project has been quiet since its initial maintainers left Meta, but it&#8217;s still used internally for new projects. Meta product engineers and community members are stepping in.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/react-native-pressable-faster-than-gesture-handler/">React Native Pressable faster than gesture handler</a> - A deep dive into why Gesture Handler adds additional cost compared to RN Pressable and Reanimated&#8217;s CSS transition API</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/hidden-cost-of-react-activity/">The Hidden Cost of React.Activity</a> - <code>&lt;Activity&gt;</code> is different from keeping a screen mounted but invisible. Heavy use of useEffect can badly impact performance when a screen becomes visible again.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/argent-agentic-toolkit-to-control-debug-and-profile-ios-applications/">Meet Argent: Agentic Toolkit to Control, Debug and Profile iOS applications</a> - Gives coding agents direct access to the iOS Simulator, helpful to inspect and debug RN iOS apps.</p></li><li><p>&#128220; <a href="https://shift.infinite.red/beyond-60-fps-building-a-real-time-can-bus-dashboard-with-nitro-modules-and-skia-d0f564f8d239">Beyond 60fps - Real-time CAN Bus dashboard with Nitro Modules and Skia</a> - A minor hobby-project issue turned into a deep look into how RN communication between native and JS works.</p></li><li><p>&#128220; <a href="https://medium.com/doctolib/expo-without-eas-scaling-the-react-native-developer-experience-of-an-app-with-90m-users-2694ea841805">Expo without EAS: Scaling the React Native developer experience of an app with 90M+ users</a> - Practical migration story from React Native to Expo at Doctolib, a popular healthcare app. It explains why EAS wasn&#8217;t a good fit for their setup, and how Callstack&#8217;s Rock modular toolkit helped them improve their build flow.</p></li><li><p>&#128230; <a href="https://expo.dev/changelog/sdk-56-beta">Expo SDK 56 Beta - Stable Expo UI, faster builds, improved startup performance on Android, RN 0.85</a> - As always, a very long changelog with many improvements, that we&#8217;ll cover in depth once stable.</p></li><li><p>&#128230; <a href="https://github.com/oblador/react-native-swc">React Native SWC - SWC-powered transformer &amp; minifier for Metro</a> - SWC recently added Flow supports, making it possible to fully replace Babel by SWC in RN&#8217;s transpilation pipeline. ~8x faster transform worker &amp; full real world bundling ~3x faster.</p></li><li><p>&#128230; <a href="https://blog.sentry.io/debugging-expo-react-native-sdk/">Sentry SDK 8.10+ - OTA update context, build failures, emergency launch detection, performance spans for prefetching, image/asset loading instrumentation</a></p></li><li><p>&#128230; <a href="https://github.com/mobile-ink/mobile-ink">Mobile Ink - iOS Skia/Metal drawing and continuous canvas primitives</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.2.0">Nitro Fetch 1.2 - Native-side prefetching registration, web stub</a></p></li><li><p>&#128230; <a href="https://github.com/JoaoPauloCMarra/react-native-nitro-markdown/releases/tag/v0.6.0">Nitro Markdown 0.6 - RaTex math renderer, native release hardening, refreshed example benchmarks/docs</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rock/releases/tag/v0.13.0">Rock 0.13 - Experimental support for CNG &amp; Expo Config Plugins, validate Android 16KB ELF alignment</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.25.0">RN Screens 4.25 - Drops the Legacy Architecture, Tabs API in RC, many Tabs user-facing improvements</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.9.0">Rozenite 1.9 - storage-plugin replaces mmkv-plugin, new react-hook-form plugin</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-352-storybook-with-daniel-williams">RNR 352 - Storybook with Daniel Williams</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/tc39/agendas/blob/main/2026/05.md">TC39 - Agenda for the 114th meeting - May 19-21</a> - A packed agenda, many proposals could progress next week, including Iterators, Explicit Resource Management, and more.</p></li><li><p>&#128230; <a href="https://voidzero.dev/posts/announcing-rolldown-1-0">Rolldown 1.0</a> - The high-performance Rust-based bundler is now stable and respects semantic versioning. It&#8217;s already powering Vite 8 as a 10-30x faster alternative to Rollup. Bundling in dev is on the roadmap to overcome the performance limitation of serving individual ESM files.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.1.0">Node.js 26.1 - Experimental </a><code>node:ffi</code><a href="https://nodejs.org/en/blog/release/v26.1.0"> module</a> - A promising Foreign Function Interface module for loading dynamic libraries and integrating with native languages.</p></li><li><p>&#128230; <a href="https://github.com/jestjs/jest/issues/9430#issuecomment-4400281169">Jest 30.4 - Support for </a><code>require(esm)</code> - Jest&#8217;s ESM support has been fully rewritten. It still requires the Node.js <code>--experimental-vm-modules</code> flag, but the Node.js team is working on stabilizing that feature.</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.14">Bun 1.3.14 - Built-in image processing, global install virtual store, HTTP improvements</a> - Speaking of Bun, a Rust port was previously disclosed and framed as an experiment. It turns out Bun may actually <a href="https://x.com/jarredsumner/status/2053808438644445230">migrate from Zig to Rust in the near future</a>.</p></li><li><p>&#128230; <a href="https://github.com/npm/cli/releases/tag/v11.14.0">npm 11.4 - allow-directory, allow-file, allow-remote</a> - New opt-in npm CLI security features, similar to pnpm&#8217;s <code>blockExoticSubdeps</code>.</p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.60.0">Playwright 1.60 - Drop API, Aria snapshots, HAR recording</a> - You can now simulate drag-and-drop, and snapshot the accessibility tree.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.1">pnpm 11.1 - Named registries, new useful commands</a></p></li><li><p>&#128230; <a href="https://tailwindcss.com/blog/tailwindcss-v4-3">Tailwind CSS 4.3 - Scrollbars, new colors, and more</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-630/">Astro 6.3 - Experimental advanced routing, first-class Hono support</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GNVE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GNVE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GNVE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg" width="1000" height="1850" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1850,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!GNVE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[This Week In React 280]]></title><description><![CDATA[TanStack, Remotion, React Router, Remix, Trees, Pracht, shadcn | Expo Go, Ease, Screen Transitions, LegendList, JSI, Gradle, Radon, Baguette, Rozenite, AI | Node.js, Datatype, tsz, Astro]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-280</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-280</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Sat, 09 May 2026 21:21:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5e2ff600-21b9-46da-ae2c-6e2006ab5b0a_3000x1400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>It&#8217;s another quiet week in React, but there&#8217;s still plenty of interesting links to check out about the TanStack and powerful new Remotion capabilities.</p><p>React Native had a busier week, with a diverse mix of releases, great articles, and ecosystem updates.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_RLn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_RLn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_RLn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!_RLn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/TkDodo">Dominik Dorfmeister</a></strong><a href="https://twitter.com/TkDodo">Web Developer - React-Query maintainer</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HOIs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HOIs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!HOIs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Still writing tests manually?&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Still writing tests manually?" title="Still writing tests manually?" srcset="https://substackcdn.com/image/fetch/$s_!HOIs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox, Wiz, and LaunchDarkly have found a new testing paradigm - and they can&#8217;t imagine working without it. Built by <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">ex-Palantir engineers</a>, Meticulous autonomously creates a continuously evolving suite of E2E UI tests that delivers <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">near-exhaustive coverage</a> with <em>zero developer effort</em> - impossible to deliver by any other means.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p><strong>No maintenance (seriously)</strong></p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>&#129320;</strong> Curious? <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://planetscale.com/">Ship faster with PlanetScale - Blazing fast managed Postgres and MySQL, built for applications of any scale</a></p></li><li><p>&#9888;&#65039; <a href="https://socket.dev/blog/tanstack-brandsquat-compromise">Malicious npm Package Brand-Squats TanStack to Exfiltrate Environment Variables</a> - Make sure not to install the <code>tanstack</code> npm package because it&#8217;s not owned by the TanStack organization.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/who-owns-the-tree">Who Owns the Tree? RSC as a Protocol, Not an Architecture</a> - The traditional RSC architecture &#8211; as found in Next.js &#8211; is server-driven. TanStack Start frames RSC as a protocol, enabling both server-owned and client-owned composition models.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/introducing-tanstack-form/">Introducing TanStack Form</a> - A pragmatic intro to this strongly typed and flexible form library.</p></li><li><p>&#128220; <a href="https://dev.to/lazarv/time-to-yield-20m8">Time to Yield - An SSG benchmark across five React frameworks</a> - The author&#8217;s solution uses generators and yields the static routes to render, making it possible to render the first page sooner.</p></li><li><p>&#128220; <a href="https://kittygiraudel.com/2026/05/02/nextjs-link-as-a-button/">Next.js Link as a Button</a> - Still requires <code>&lt;Link legacyBehavior&gt;</code> for now, but apparently a solution based on Fragment Refs is coming.</p></li><li><p>&#128220; <a href="https://brookslybrand.com/posts/react-miami-2026.html">React Miami 2026</a> - Conf feedback by Brooks Lybrand. Also explains that interest in React features is at an all-time low, and clears up the confusion surrounding React Router and Remix.</p></li><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR">React Certification - Ready for a Senior role? Take the assessment: 135 minutes, 40 MCQs, and 2 Coding challenges. Get Senior Certified!</a></p></li><li><p>&#128230; <a href="https://github.com/remotion-dev/remotion/releases/v4.0.455">Remotion 4.0.455 - New </a><code>&lt;HtmlInCanvas&gt;</code><a href="https://github.com/remotion-dev/remotion/releases/v4.0.455"> component</a> - This component unlocks new impressive capabilities for the React programmatic video framework, letting you interleave regular HTML with fancy canvas-based effects using shaders (<a href="https://github.com/remotion-dev/html-in-canvas">demos</a>).</p></li><li><p>&#128230; <a href="https://remix.run/blog/remix-3-beta-preview">Remix 3 Beta Preview</a> - The new version of Remix is now in beta preview. It&#8217;s not based on React nor React Router, but still relies on JSX. It uses a different component model where you explicitly trigger re-renders, Frames that you can reload, and doesn&#8217;t bundle your app.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7150">React Router 7.15 - Stabilizing APIs to prepare for React Router v8, Route matching optimizations</a></p></li><li><p>&#128230; <a href="https://trees.software/">Trees - File tree UI library, performant, flexible, with React or vanilla JS</a></p></li><li><p>&#128230; <a href="https://pracht.resynapse.dev/">Pracht - Preact framework with explicit routing, per-route render modes, cloud adapters</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-05-package-imports-target-aliases">shadcn CLI 4.7 - Package Imports and Target Aliases</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=PX3QlADinIE">Jack Herrington - 5 Ways To SSR/RSC on TanStack Start</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=KpoEflQ3u1A">Josef Bender - This </a><code>&lt;Link preload&gt;</code><a href="https://www.youtube.com/watch?v=KpoEflQ3u1A"> Trick Makes TanStack Start Blazing Fast!</a></p></li><li><p>&#127897;&#65039; <a href="https://podrocket.logrocket.com/nextjs-works-everywhere-now-jimmy-lai-tells-us-how">PodRocket - Next.js works everywhere now, Jimmy Lai tells us how</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WBww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WBww!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WBww!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!WBww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!WBww!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WBww!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://twitter.com/addyosmani">Addy Osmani</a></strong><a href="https://twitter.com/addyosmani">Head of Chrome DX - Google</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128184; Sponsor</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D67F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D67F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D67F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!D67F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Lingui - Modern, Lightweight i18n for React&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lingui - Modern, Lightweight i18n for React" title="Lingui - Modern, Lightweight i18n for React" srcset="https://substackcdn.com/image/fetch/$s_!D67F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D67F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><a href="https://crowdin.info/8YBpFxk">Lingui - Modern, Lightweight i18n for React</a></strong></p><p>Ship multilingual apps faster with Lingui - a lightweight i18n toolkit for React and React Native, with macros, message extraction, and production-ready localization.</p><p>It fits naturally into modern stacks like React, Vite, TypeScript, TanStack Start, Remix, Astro, and Svelte, so teams can adopt it without changing their workflow. It also keeps messages clear for translators and works well with AI-assisted localization workflows.</p><p>Lingui v6 modernizes the stack with ESM-only distribution, a smaller installation size (62 MB &#8594; 35 MB, dependencies 146 &#8594; 104), stronger TypeScript support, and configurable JSX placeholder names in the <code>&lt;Trans&gt;</code> component.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may6">PostHog - The 7 best session replay tools for mobile apps</a></p></li><li><p>&#128064; <a href="https://expo.dev/changelog/expo-go-and-app-store-may-2026">Expo Go and the App Store in May 2026</a> - Update on the state of Expo Go support for SDK 55 being blocked by AppStore approval.</p></li><li><p>&#128064; <a href="https://expo.dev/changelog/gradle-cache">Gradle cache for Android builds</a> - EAS builds now support Gradle caching with ~50% reduction in build times.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/the-real-cost-of-react-native-animations-benchmarking-every-approach">The real cost of React Native animations: benchmarking every approach</a> - A look into how popular animation solutions run under the hood, how they perform on real devices, and why they differ in per-frame cost.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/react-native-production-lessons-from-react-universe-meetup-x-zalando">React Native production lessons from React Universe Meetup x Zalando</a> - Four practical patterns from Zalando: measuring brownfield migrations with Meaningful Render, stabilizing video feeds, using RN to bridge web API gaps, and handling on-device LLM hardware variance.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/make-jsi-run-faster-2">Making JSI Faster with more Efficient Data Structures</a> - Use proper tools for a given task as wrong data representation can make your code 30x slower. The article features concrete benchmarks across array shapes and string construction.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/how-react-native-ease-runs-animations-with-no-javascript-loop/">How react-native-ease runs animations with no JavaScript loop</a> - Analysis how the library takes a different approach than most RN animation libraries to avoid being tied to the JS thread.</p></li><li><p>&#128220; <a href="https://reactnavigation.org/blog/2026/04/27/building-custom-screen-transitions/">Building custom transitions with react-native-screen-transitions</a> - How to make custom screen transitions to make your app experience stand out.</p></li><li><p>&#128220; <a href="https://blog.manikagnish.com/extending-expo-ui-with-swiftui-building-a-native-swipeactions-modifier">Extending Expo UI with SwiftUI: Building a Native swipeActions Modifier</a> - Walkthrough of building a local Expo module to add SwiftUI&#8217;s swipeActions modifier to @expo/ui.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/legend-list-engine-simulator/">What&#8217;s actually happening inside Legend List</a> - Explains what formula does Legend List use to display items optimally and what role optimisation props play in it.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/expo-to-meta-quest-ai-powered-vr-development/">Expo to Meta Quest - AI-powered VR development</a> - A migration skill that, combined with Meta&#8217;s Horizon Debug Bridge MCP, enables an agentic dev loop for VR. Covers Expo workflow setup, resizable VR windows, and performance optimization.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/radon-ide/releases/tag/v1.17.0">Radon IDE 1.17 - Native View Hierarchy Inspector on iOS, Android Network Inspector now captures native traffic, RN 0.85 support, and clipboard sync between computer and device</a></p></li><li><p>&#128230; <a href="https://github.com/tddworks/baguette">Baguette - Headless iOS Simulator manager/farm + host-side input injection for iOS 26 &#8212; taps, swipes, multi-finger gestures, and 60 fps streaming</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.8.0">Rozenite 1.8 - Nitro traffic support in the network activity plugin, SQLite agent tools, and a Rozenite for Agents SDK</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-cdp">Agent CDP - CLI for Chrome DevTools Protocol, debug targets, console, traces, heap snapshots, profiling for Chrome, Node.js, and React Native</a> - Part of the agent-tools family from Callstack.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.14.0">Agent Device 0.14 - Android snapshot helper, skillgym tests, and replaces bulky skills with versioned CLI help</a></p></li><li><p>&#128230; <a href="https://github.com/infinitered/reactotron/releases/tag/reactotron-core-server%403.3.0">Reactotron 3.3 - Adds an MCP server for Claude Code integration</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched/releases/tag/v0.7.0">RN Enriched 0.7 - EnrichedText component for HTML rendering and experimental web support</a> - Now a complete rich-text solution where inputs and display text use the same format.</p></li><li><p>&#128230; <a href="https://github.com/jingjing2222/react-native-nitro-geolocation">Nitro Geolocation - Nitro-powered geolocation with a compat API for </a><code>@react-native-community/geolocation</code> - Includes a Rozenite DevTools plugin for mocking locations and an Agent Skills migration playbook.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=1o0pEjYGUWM">Beto - How React Native Builds Actually Work (APK, AAB, IPA, APP)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=IzrhMN94gEE">notJust.dev - Let&#8217;s build a Podcast app for Fire TV using Vega OS &amp; React Native</a></p></li><li><p>&#127897;&#65039; <a href="https://creators.spotify.com/pod/profile/dan-neciu/episodes/React-Native-at-Scale-with-Kadi-Kraman--Software-Developer-at-Expo--Mobile-Development--EAS--OTA-Updates-e3iqbdu">React Native at Scale with Kadi Kraman | Expo, Mobile Development, EAS, OTA Updates</a></p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://piccalil.li/blog/the-end-of-responsive-images/">The end of responsive images</a> - You don&#8217;t need to define explicit breakpoints anymore. With <code>&lt;img loading=&#8221;lazy&#8221; sizes=&#8221;auto&#8221;&gt;</code>, all modern browsers will figure out the appropriate image size based on <code>srcset</code>.</p></li><li><p>&#128220; <a href="https://ishadeed.com/article/range-syntax/">Media Queries Range Syntax</a> - CSS range queries such as <code>@media (300px &lt;= width &lt;= 500px)</code> are widely supported by all browsers.</p></li><li><p>&#128220; <a href="https://adventures.nodeland.dev/archive/why-trusted-publishing-can-t-save-us/">Why &#8220;Trusted Publishing&#8221; Can&#8217;t Save Us from Social Engineering</a> - npm Trusted Publishing and provenance features do not protect against attackers publishing on behalf of a compromised maintainer.</p></li><li><p>&#128220; <a href="https://dev.to/aralroca/the-on2-bug-that-looked-like-clean-code-3556">The O(n^2) Bug That Looked Like Clean Code</a> - Highlights several JS patterns that seem fine at first glance but lead to quadratic complexity.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.0.0">Node.js 26.0</a> - This major release unlocks exciting new APIs such as <code>Temporal</code> and <code>Map.getOrInsert()</code>. It also upgrades the HTTP client. Let&#8217;s take the opportunity to remind that <a href="https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule">the Node.js release schedule is evolving</a> and dropping the even/odd distinction after this release: v27 will become LTS.</p></li><li><p>&#128230; <a href="https://franktisellano.github.io/datatype/">Datatype - Variable font that turns text into charts</a> - A really cool idea, relying on font ligatures!. This might be an efficient way to show little inline charts in grid/list views.</p></li><li><p>&#128230; <a href="https://tsz.dev/">tsz - TypeScript compiler in Rust</a> - WIP but nearly complete, faster than tsgo, drop-in replacement.</p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-620/">Astro 6.2 - SVG optimizer, experimental Logger and </a><code>getFontFileURL()</code><a href="https://astro.build/blog/astro-620/"> APIs</a> - Also a sneak peek of Astro v7 now in alpha, including Vite 8 and stable Rust compiler.</p></li></ul><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3cEX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3cEX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!3cEX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg" width="1000" height="1470" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1470,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!3cEX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QfOs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QfOs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QfOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg" width="1000" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!QfOs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>See ya! &#128075;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>