<?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>Thu, 30 Apr 2026 10:57:33 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 278]]></title><description><![CDATA[React Email, TSRX, ESLint plugin, Rspack RSC, TanStack, Hook Form | Vision Camera, Expo, Nano Icons, ExecuTorch, Argent, Audio API, CSS, RNSec | TypeScript Go, Node.js, Bun, Hono]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-278</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-278</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 24 Apr 2026 07:26:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yP8p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, Krzysztof and Filip from <a href="https://swmansion.com/">Software Mansion</a> here &#128075;!</p><p>Big releases anchor the week. React Email 6.0 consolidates a fragmented ecosystem into one package, unlocking an embeddable editor and more reliable HTML rendering across mailboxes.</p><p>On mobile, Marc Rousavy shipped VisionCamera v5 with a full Nitro Modules rewrite, Worklets integration, pro controls, and a modular plugin architecture.<br>Heads up on the Vercel April 2026 incident: rotate your integration tokens if you use third-party integrations.</p><p>Also inside: Expo&#8217;s Series B, Seth Webster joining Expo, the Doctolib WebView-to-Native migration, and fresh releases from TanStack, React Hook Form, ExecuTorch, TS Go beta, Rspack RSC, and more.</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_!AKEs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AKEs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AKEs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AKEs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AKEs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AKEs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f37f695-5b90-4511-b896-7aa32bde136c_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_!AKEs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AKEs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AKEs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AKEs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f37f695-5b90-4511-b896-7aa32bde136c_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!_6bl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_6bl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_6bl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_6bl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_6bl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_6bl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_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_!_6bl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_6bl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_6bl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_6bl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1adb4d6a-96de-44d4-9dc2-ba1444dcc89e_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=2nd">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!yP8p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yP8p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yP8p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yP8p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yP8p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yP8p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f4b6c64-fd71-4386-a596-fa4a7a981789_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 Email 6.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="React Email 6.0" title="React Email 6.0" srcset="https://substackcdn.com/image/fetch/$s_!yP8p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yP8p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yP8p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yP8p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f4b6c64-fd71-4386-a596-fa4a7a981789_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"><svg role="img" 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"><g><title></title><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"><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"><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://resend.com/blog/react-email-6">React Email 6.0</a></strong></p><p>React email matures with a major release that cleans up a fragmented ecosystem. It makes version management much easier and stops the CLI and components from getting out of sync.</p><p>Key technical shifts:</p><ul><li><p>Embeddable Editor: You can use the preview tool as a React component to show users how their emails will look directly in your own app.</p></li><li><p>Reliable HTML: The engine that turns React into email HTML handles more different mailboxes quirks.</p></li><li><p>Faster HMR: Faster switching between templates and preview, even with complex layouts</p></li></ul><p>Moving away from modularization into one big package is a big step toward making the library stable and more capable. While it might slightly increase bundle size, it enables complex features blocked before, like the embeddable preview and advanced layout transformations.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://sentry.io/resources/nextjs-may-workshop/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjsworkshop&amp;utm_content=newsletter-react-link-register">Sentry - Stop flying blind in Next.js. This free workshop covers logs, tracing, and how to connect both in production. Register today.</a></p></li><li><p>&#128272; <a href="https://vercel.com/kb/bulletin/vercel-april-2026-security-incident">Vercel April 2026 security incident</a> - A few environment variables were accidentally exposed because of a security breach linked to a third-party AI tool. Since some secrets are stored in plain text, it is recommended to rotate them manually as soon as possible.</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. Check out the stellar lineup featuring Dominik Dorfmeister, Aurora Scharff, and Jack Herrington at the legendary Rockefeller music venue. -10% with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/building-a-blog-in-tanstack-part-1-of-2/">Building a Blog in TanStack</a> - Building a markdown blog with TanStack Start, then going fully static via pre-rendering and static server functions to avoid Shiki&#8217;s cold-start cost.</p></li><li><p>&#128220; <a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework">Build with React, Run on Salesforce: Introducing Salesforce Multi-Framework</a> - A story about the benefits of React that convinced Salesforce to drop their custom solution in favor of React development on their platform. Currently in Beta.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/ai-generated-ui-is-inaccessible-by-default/">AI-Generated UI Is Inaccessible by Default</a> - Common accessibility pitfalls in AI-generated code and ways to ensure correct standards through linting, testing and CI.</p></li><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>&#128230; <a href="https://tsrx.dev/">TSRX - A TypeScript language extension for building declarative UIs</a> - A spiritual successor to JSX. A new framework-agnostic solution created by former React core team member Dominic Gannaway, can compile to React/Solid/Ripple.</p></li><li><p>&#128230; <a href="https://rspack.rs/blog/announcing-2-0">Rspack 2.0</a> - The Rust bundler keeps improving on performance and features while remaining compatible with webpack. This new major also includes experimental React Server Components support, with plans to add support for TanStack RSC.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/store/releases/tag/%40tanstack/react-store%400.11.0">TanStack Store 0.11 - New </a><code>useAtom</code><a href="https://github.com/TanStack/store/releases/tag/%40tanstack/react-store%400.11.0">, </a><code>useSelector</code><a href="https://github.com/TanStack/store/releases/tag/%40tanstack/react-store%400.11.0">, and </a><code>createStoreContext</code><a href="https://github.com/TanStack/store/releases/tag/%40tanstack/react-store%400.11.0"> hooks</a> - <code>useStore</code> is now deprecated in favor of <code>useSelector</code>.</p></li><li><p>&#128230; <a href="https://github.com/facebook/react/releases/tag/eslint-plugin-react-hooks%407.1.0">ESlint Plugin React Hooks 7.1 - Support for ESLint v10, performance and linting improvements</a></p></li><li><p>&#128230; <a href="https://lingui.dev/blog/2026/04/22/announcing-lingui-6.0">Lingui 6.0 - i18n for React, RN, and more - Technical improvements and modernization</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.73.1">React Hook Form 7.73 - Memoized </a><code>submit</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.73.1">, faster </a><code>deepEqual</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.73.1">, enhanced type-safety for deeply nested fields</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=OlViBcLX-fA">Ankita Kulkani - Next.js finally has Page Transitions Now</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_!vEiD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vEiD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vEiD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vEiD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vEiD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vEiD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c47f94bb-457a-45ba-810a-f7bad2727864_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_!vEiD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vEiD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vEiD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vEiD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f94bb-457a-45ba-810a-f7bad2727864_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!LpIV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LpIV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LpIV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LpIV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LpIV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LpIV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fea3ac6c-3dea-42e3-94ac-b401ef7514e6_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 Gantt Charts in React &#8211; No JS Fluff&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 Gantt Charts in React &#8211; No JS Fluff" title="Build Gantt Charts in React &#8211; No JS Fluff" srcset="https://substackcdn.com/image/fetch/$s_!LpIV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LpIV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LpIV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LpIV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea3ac6c-3dea-42e3-94ac-b401ef7514e6_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"><svg role="img" 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"><g><title></title><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"><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"><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://svar.dev/react/gantt/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=apr22">Build Gantt Charts in React &#8211; No JS Fluff</a></strong></p><p>Take control of your workflow with <strong>SVAR React Gantt</strong>, a native React component for task scheduling. Add custom Gantt diagrams to your apps &#8211; from simple timelines to complex projects with thousands of tasks.</p><ul><li><p><strong>Pure React architecture</strong> for full customization</p></li><li><p><strong>Drag-and-drop</strong> timeline and easy task editing</p></li><li><p><strong>Optimized rendering</strong> for large datasets</p></li><li><p><strong>Easy integration</strong> with Next.js and state libraries</p></li></ul><p>MIT-licensed core. PRO Edition for critical path, baselines, export, and auto-scheduling.</p><p>&#128736;&#65039; <a href="https://svar.dev/react/gantt/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=apr22">Learn more &amp; get started</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!hqiV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hqiV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hqiV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hqiV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hqiV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hqiV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg" width="1200" height="872" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:872,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Vision Camera v5&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="Vision Camera v5" title="Vision Camera v5" srcset="https://substackcdn.com/image/fetch/$s_!hqiV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hqiV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hqiV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hqiV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d9b0a3-1769-470c-8b60-f69a516ac160_1200x872.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"><svg role="img" 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"><g><title></title><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"><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"><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.margelo.com/whats-new-in-visioncamera-v5">Vision Camera v5</a></strong></p><p>Marc Rousavy has released a massive update for VisionCamera. This major upgrade to the camera module includes many new features and improvements. Let&#8217;s take a closer look at the main highlights:</p><ul><li><p>Nitro Modules Backend - The complete rewrite using Nitro Modules results in significant performance improvements.</p></li><li><p>Worklets Integration: Now uses <code>react-native-worklets</code> for smoother frame processing.</p></li><li><p>Pro Camera Controls - Full manual support for Exposure, Focus, and White Balance, plus RAW format support.</p></li><li><p>Depth &amp; Multi-Cam - You can now stream LiDAR/ToF data and record with front and back cameras simultaneously.</p></li></ul><p>This release comes with a new modular architecture - VisionCamera is no longer one giant package. You can now pick and choose only the plugins you need to keep your bundle size small:</p><ul><li><p><code>react-native-vision-camera-skia</code> - Real-time filters and overlays</p></li><li><p><code>react-native-vision-camera-barcode-scanner</code> - MLKit integration out of the box</p></li><li><p><code>react-native-vision-camera-resizer</code> - GPU-accelerated resizing for ML tasks</p></li><li><p><code>react-native-vision-camera-location</code> - Automatic EXIF tagging</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-apr22">PostHog - A beginner&#8217;s guide to testing AI agents</a></p></li><li><p>&#128227; <a href="https://expo.dev/blog/what-expo-s-series-b-funding-means-for-you">Expo raised $45 million in a Series B funding round.</a> They also <a href="https://x.com/expo/status/2044808498765353113">hired Seth Webster</a>, who previously led the React team and kickstarted the React Foundation. They are <a href="https://thenewstack.io/expo-bets-big-on-react-natives-agentic-future/">betting on an agentic future</a>, at a moment where the React Native ecosystem is expanding faster than ever.</p></li><li><p>&#128038; <a href="https://x.com/wisniewskij514/status/2043720838646477185">The Reanimated team is working on pseudo-selector support for CSS animations</a></p></li><li><p>&#128038; <a href="https://x.com/tomekzaw_/status/2044690191072309360">The Hermes team is working on JSI support for TypedArrays</a></p></li><li><p>&#128038; Evan Bacon demod an <a href="https://x.com/Baconbrix/status/2045207510039322668%20">iOS simulator running inside of Codex desktop</a></p></li><li><p>&#128038; <a href="https://x.com/JI/status/2044887303890583953">The Codex Expo plugin is now available</a></p></li><li><p>&#128220; <a href="https://blog.margelo.com/margelo-discord-react-native-performance">How Margelo Helped Discord Improve React Native&#8217;s New Architecture Performance</a> -<br>A deep dive into concrete low-level optimizations that made the Discord app. Some of these were upstreamed into Reanimated feature flags and the new Shared Animation Backend in React Native core.</p></li><li><p>&#128220; <a href="https://codewithbeto.dev/blog/building-expo-apps-locally">How to Build Your React Native App Locally (APK and .app)</a> - A technical walkthrough for generating local iOS and Android artifacts (.app/.apk) directly from an Expo project using xcodebuild and gradlew.</p></li><li><p>&#128220; <a href="https://medium.com/doctolib/rebuilding-the-doctolib-homepage-from-webview-to-native-27937ea71801">Rebuilding the Doctolib Homepage from Webview to Native</a> - Architectural migration from a WebView using a Backend for Frontend architecture. Time to Interactive dropped ~50% on both iOS and Android after the migration.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/on-device-ai-beats-cloud-for-tts-heres-why/">On-device AI vs Cloud TTS &#8211; Kokoro, react-native-executorch</a> - How on-device AI can reduce the cost of TTS without sacrificing quality.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/deferred-deep-linking-for-mobile-developers-with-detour/">Deferred Deep Linking for Mobile Developers with Detour</a> - An explanation of when deep linking is a relevant use case for your app and how Detour implements that concept.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-nano-icons">Nano Icons - Use any SVG as font. High-performance, build-time icon font generation for React Native &amp; Expo</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent">Argent - An agentic toolkit to control, debug, and profile iOS apps from Software Mansion</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-executorch/releases/tag/v0.8.0">React Native ExecuTorch 0.8 - Vision Camera v5 integration, Vision Language Models support, Whisper model up to 3x faster</a></p></li><li><p>&#128230; <a href="https://github.com/maplibre/maplibre-react-native/releases/tag/v11.0.0">Maplibre 11.0 - Dropped legacy React architecture support; aligned API with MapLibre GL</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-graph/releases/tag/v1.2.0">Graph 1.2 - Support for latest RN, Reanimated &amp; Skia</a></p></li><li><p>&#128230; <a href="https://github.com/mdjastrzebski/test-renderer/releases/tag/v1.0.0">Test Renderer 1.0 - Successor to the deprecated react-test-renderer</a> - Each minor version tracks React 19 line. 1.0.x for React 19.0, 1.1.x for 19.1 (Owner Stacks, CSS-safe useId), 1.2.x for 19.2 (&lt;Activity&gt;, useEffectEvent).</p></li><li><p>&#128230; <a href="https://github.com/adnxy/rnsec/blob/main/NEW_RULES_v1.3.0.md">RNSec 1.3 - New security rules and native code vulnerability scanner</a></p></li><li><p>&#128230; <a href="https://github.com/JubaKitiashvili/expo-pretext/releases/tag/v1.1.0">Expo Pretext 1.1 - Brings CSS </a><code>text-wrap: balance/pretty</code><a href="https://github.com/JubaKitiashvili/expo-pretext/releases/tag/v1.1.0"> to RN</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-audio-api/releases/tag/0.12.0">Audio API 0.12 - Mac Catalyst support, Android ducking, universal resampler, rotating file writer for long recordings</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=FXw9OoiddMg">Beto - Expo Router v55 Crash Course</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-360">RNR 360 - TanStack Native Router with Tanner Linsley</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://frontendmasters.com/blog/building-a-ui-without-breakpoints/">Building a UI Without Breakpoints</a></p></li><li><p>&#128220; <a href="https://www.debugbear.com/blog/shopify-speed-optimization">Shopify Speed Optimization: Fixing The Real Bottlenecks</a></p></li><li><p>&#128220; <a href="https://dev.to/sylwia-lask/most-apps-are-slower-than-they-need-to-be-heres-why-live-demo-2hh8">Most Apps Are Slower Than They Need to Be</a></p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/">TypeScript 7.0 Beta</a> - The first beta of the Go rewrite is out! It has great compatibility with 6.0 and should be ~10x faster thanks to parallelization.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v24.15.0">Node.js 24.15 - require(esm) marked as stable</a></p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.13">Bun 1.3.13 - Fast parallel and isolated tests, faster bun install</a></p></li><li><p>&#128230; <a href="https://fast-check.dev/blog/2026/04/18/whats-new-in-fast-check-4-7-0/">Fast-Check 4.7 - Property-based testing framework</a></p></li><li><p>&#128230; <a href="https://github.com/honojs/node-server/releases/tag/v2.0.0">Hono Node.js Adapter 2.0 - Up to 2.3x faster</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7SVS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7SVS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/835cdaa3-6377-475d-93f9-1cf68288678b_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_!7SVS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7SVS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F835cdaa3-6377-475d-93f9-1cf68288678b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!Rn3t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rn3t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rn3t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rn3t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rn3t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rn3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg" width="1000" height="1345" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1345,&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_!Rn3t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rn3t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rn3t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rn3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae88b573-b0eb-444a-9d89-b06bc07040a3_1000x1345.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"><svg role="img" 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"><g><title></title><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"><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"><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_!i6r_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i6r_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i6r_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i6r_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i6r_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i6r_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg" width="964" height="850" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:850,&quot;width&quot;:964,&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_!i6r_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i6r_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i6r_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i6r_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03323313-1b5a-4ff0-8981-8d96b8f82a26_964x850.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"><svg role="img" 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"><g><title></title><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"><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"><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 277]]></title><description><![CDATA[TanStack RSC, React2Dos, Next.js, MUI, Base UI, Aria, StyledComponents, Storm | Pulsar, Nitro Fetch, Flow, Agent React DevTools, Pretext, Vector, Metro, Ease, Voltra | HTML-in]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-277</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-277</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 17 Apr 2026 12:37:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8piL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_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 finally have an experimental version of TanStack RSC! A new React DoS vulnerability affects Server Functions, so you probably need to upgrade React again. There are also important releases from the MUI team, and Styled Components is still alive!</p><p>On the React Native side, we got a new universal Haptics library, and a much faster fetch alternative. We heard VisionCamera 5 is around the corner.</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_!fdHN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fdHN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fdHN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fdHN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fdHN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fdHN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cc62733-6647-46cd-b013-f5d3032a9478_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_!fdHN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fdHN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fdHN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fdHN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cc62733-6647-46cd-b013-f5d3032a9478_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!kZEu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kZEu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!kZEu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!kZEu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!kZEu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kZEu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76f28d4d-14c9-4239-b610-c4df1d597d18_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;The fastest Postgres + MySQL database&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 fastest Postgres + MySQL database" title="The fastest Postgres + MySQL database" srcset="https://substackcdn.com/image/fetch/$s_!kZEu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 424w, https://substackcdn.com/image/fetch/$s_!kZEu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 848w, https://substackcdn.com/image/fetch/$s_!kZEu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_1200x600.png 1272w, https://substackcdn.com/image/fetch/$s_!kZEu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f28d4d-14c9-4239-b610-c4df1d597d18_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"><svg role="img" 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"><g><title></title><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"><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"><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/">The fastest Postgres + MySQL database</a></strong></p><p>PlanetScale Metal runs on blazing-fast NVMe in your favorite hyperscaler clouds. Get high-performance, reliability, and the best DX available for Postgres and MySQL.</p><p>Companies like Cash App, Cursor, and MyFitnessPal trust PlanetScale for their Tier 0 databases.</p><p>With PlanetScale, you get:</p><ul><li><p>The best performance with local NVMe</p></li><li><p>AI integration with our MCP, skills, and automatic schema recommendations</p></li><li><p>Built-in query observability with Insights</p></li><li><p>Pricing from $5/mo</p></li></ul><p><a href="https://planetscale.com/migrate">Migrate your database today</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!8piL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8piL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8piL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8piL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8piL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8piL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ac19054-06b2-4ed0-a6b8-54c183572e90_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 - React Server Components Your Way&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 - React Server Components Your Way" title="TanStack - React Server Components Your Way" srcset="https://substackcdn.com/image/fetch/$s_!8piL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8piL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8piL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8piL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ac19054-06b2-4ed0-a6b8-54c183572e90_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"><svg role="img" 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"><g><title></title><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"><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"><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/react-server-components">TanStack - React Server Components Your Way</a></strong></p><p>Two weeks ago, we covered the TanStack Start RSC sneak peek that Tanner offered us at React Paris. And now, they are available as an experimental feature!</p><p>My highlights remain mostly the same:</p><ul><li><p><strong>Primitives</strong>: RSCs are supported through 3 primitive APIs that permit to manipulate RSCs as any other stream of data, immediately compatible with existing tools such as React Query, TanStack Router loaders, localStorage, CDNs and HTTP caches. It is entirely opt-in and does not impose a server-first approach nor any framework convention, giving you total freedom on how to compose those primitives.</p></li><li><p><strong>Composite Components</strong>: The server renders a RSC with slots that get filled by the client. You don&#8217;t need <code>&#8217;use client&#8217;</code> directives, although they are supported. This new concept creates an explicit boundary between the server and the client. It should be possible to co-locate client/server components in the same file this way.</p></li><li><p><strong>No Server Actions</strong>: A design decision for security reasons. Recent React CVEs affecting other RSC frameworks were due to Server Functions handling Flight payloads and don&#8217;t apply to TanStack Start, as <a href="https://www.youtube.com/watch?v=-dbvAMsRKi0">Jack Herrington explains in this video</a>.</p></li></ul><p>What strikes me is just how different this is from Next.js. It feels more like a library than a framework, and more in sync with the philosophy that initially attracted me to React.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-apr15">PostHog - How we built automatic clustering for LLM traces</a></p></li><li><p>&#128272; <a href="https://www.imperva.com/blog/react2dos-cve-2026-23869-when-the-flight-protocol-crashes-at-takeoff/">React2DoS (CVE-2026-23869): When the Flight Protocol Crashes at Takeoff</a> - A new Denial-of-Service vulnerability affects the React Flight Protocol when deserializing Server Functions payloads. If you use Server Functions, upgrade asap to React 19.2.5 or <a href="https://github.com/vercel/next.js/releases/tag/v16.2.3">Next.js 16.2.3</a></p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/92252">Next.js PR - Node.js streams: Fork points</a> - The SSR/RSC throughput is limited due to the use of standard Web Streams. The PR shows ongoing work to provide support for faster but non-standard Node.js streams, though the <code>experimental.useNodeStreams</code> feature flag. Accordingly to this former <a href="https://vercel.com/blog/we-ralph-wiggumed-webstreams-to-make-them-10x-faster">Vercel article about Web Streams</a>, the outcome could be quite significant.</p></li><li><p>&#128467;&#65039; <a href="https://www.dotjs.io/speak?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=CFP">dotJS 2026</a> - &#127467;&#127479; Paris - 18 September - Call For Papers for dotJS is open until April 28th 6 PM CET, submit now your talk proposals for the conference!</p></li><li><p>&#128220; <a href="https://github.blog/engineering/architecture-optimization/the-uphill-climb-of-making-diff-lines-performant/">GitHub - The uphill climb of making diff lines performant</a> - GitHub cut the rendering cost their React-based PR diff view. What worked includes using fewer DOM nodes and event handler, simpler CSS selectors, TanStack Virtual for large PRs, removing scattered useEffect, and more.</p></li><li><p>&#128220; <a href="https://valentinprugnaud.dev/posts/2026/04/if-you-cant-see-the-boundary-you-cant-reason-about-the-system">If You Can&#8217;t See the Boundary, You Can&#8217;t Reason About the System</a> - Explains the need to visually see the boundary of Client/Server components on the current page, and introduces a Next.js App Router tool to highlight those boundaries.</p></li><li><p>&#128220; <a href="https://programmingarehard.com/2026/04/11/contributing-to-react-router.html/">Contributing Callsite Revalidation Opt-out to React Router</a> - Explains how React Router and React Query behave differently regarding revalidation after a mutation, and motivations to contribute a new <code>unstable_defaultShouldRevalidate</code> API to React Router.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/the-vertical-codebase">The Vertical Codebase</a> - Colocate files by vertical features to scale your React codebase.</p></li><li><p>&#128220; <a href="https://yurimutti.com/posts/logging-nextjs-loglayer-instrumentation-console-override-structured-logs">Logging in Next.js with LogLayer: Instrumentation, Console Override, and Structured Logs</a> - Gives you one logging model across all runtimes.</p></li><li><p>&#128220; <a href="https://neciudan.dev/master-eslint-rules">Now more then ever, you need to master custom ESLint rules</a> - Deep dive into writing custom ESLint rules, with concrete React-focused examples, such as preventing useEffect antipatterns).</p></li><li><p>&#128220; <a href="https://tigerabrodi.blog/next-js-use-cache-remote-a-distributed-cache-in-one-line">Next.js use cache: remote: A Distributed Cache in One Line</a> - By default, the Cache Components feature works in memory, but it&#8217;s possible to cache data across serverless instances to increase cache hits.</p></li><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR&amp;utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=partner">Certificates.dev - Boost your skills with up to 6 live bootcamps led by Aurora Scharff and get React certified with our Mid &amp; Senior bundles</a></p></li><li><p>&#128230; <a href="https://mui.com/blog/introducing-mui-v9/">Material UI and MUI X 9.0</a> - This large release re-aligns the versions of the core design system and the advanced components. MUI moves from v7 straight to v9, and introduces the first Base UI-backed primitives in the codebase with new <code>NumberField</code> and <code>Menubar</code> components. MUI X also received several improvements, adding new Chat and Scheduler components in alpha.</p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-4-0">Base UI 1.4 - One-Time Password field (preview), update a Toast, many bug fixes</a></p></li><li><p>&#128230; <a href="https://github.com/unjs/unhead/releases/tag/v3.0.0">Unhead 3.0 - Streaming </a><code>&lt;head&gt;</code><a href="https://github.com/unjs/unhead/releases/tag/v3.0.0"> component for any framework</a></p></li><li><p>&#128230; <a href="https://github.com/orchetron/storm">Storm - Terminal UI framework based on React</a> - This new TUI addresses limitations of Ink, with cell-level diffing and dual-speed rendering architecture.</p></li><li><p>&#128230; <a href="https://github.com/styled-components/styled-components/releases/tag/styled-components%406.4.0">Styled Components 6.4 - React Server Components support, performance optimizations, RN improvements, and more</a> - The historical CSS-in-JS lib is in &#8220;maintenance mode&#8221; and yet it received a quite significant update!</p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-17-0">React Aria 1.17 - Expandable rows in Table, window scrolling in Virtualizer, dependency consolidation, sub-path imports</a></p></li><li><p>&#128230; <a href="https://github.com/millionco/isolet">Isolet - Package any component into a self-contained, isolated widget</a></p></li><li><p>&#128230; <a href="https://github.com/kapishdima/remocn">Remocn - Production-ready animations, transitions, and scenes for Remotion</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/995/next-js-vendor-lock-in-no-more">Syntax.fm 955 - Next.js Vendor Lock-in No More</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_!tCn-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tCn-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tCn-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tCn-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tCn-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tCn-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9819e99-b178-4e3d-a234-3d5706f86261_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_!tCn-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tCn-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tCn-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tCn-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9819e99-b178-4e3d-a234-3d5706f86261_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!ACF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ACF0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ACF0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ACF0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ACF0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ACF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85876ac7-0d11-4f9c-b7dc-09ad23b6b576_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_!ACF0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ACF0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ACF0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ACF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85876ac7-0d11-4f9c-b7dc-09ad23b6b576_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=2nd">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!sXc6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sXc6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sXc6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sXc6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sXc6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sXc6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_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;Pulsar - Haptic Feedback Library&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="Pulsar - Haptic Feedback Library" title="Pulsar - Haptic Feedback Library" srcset="https://substackcdn.com/image/fetch/$s_!sXc6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sXc6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sXc6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sXc6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fb6b7f9-5a8d-430e-8a09-20b1d630a0d4_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"><svg role="img" 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"><g><title></title><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"><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"><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://docs.swmansion.com/pulsar/">Pulsar - Haptic Feedback Library</a></strong></p><p>Meet Pulsar, a new library from Software Mansion that makes implementing haptic feedback much easier. Comes with SDKs for React Native, native iOS, and Android. See also the <a href="https://www.youtube.com/watch?v=RAunnxSlvhM">intro video</a>.</p><ul><li><p>150+ patterns to browse, filter, preview, and ship</p></li><li><p>Live Preview Playground app for testing on a physical device</p></li><li><p>Multiplatform SDKs</p></li><li><p>Audio preview for testing in a simulator</p></li><li><p>Pulsar Studio &#8211; coming later &#8211; will allow the design of custom haptic sequences</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://sentry.io/cookbook/debug-undefined-react-native/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=mobile-fy27q1-cookbook&amp;utm_content=newsletter-rn-link-rn-logs-trysentry">Sentry - A tutorial to debugging undefined properties in React Native by correlating frontend and backend logs</a></p></li><li><p>&#128064; <a href="https://github.com/swc-project/swc/pull/11702">SWC PR - Complete Hermes Flow stripping parity</a> - Currently, Babel is needed to strip non-TS code in React Native. The newly released <a href="https://swc.rs/docs/usage/flow">Flow support in SWC</a> could help you adopt an alternative toolchain, leading to build time improvements or faster unit tests.</p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/issues/993">React Native Proposal - Allow opting in to specific feature flags via public APIs</a> - Community proposal to expose experimental feature flags for testing before broad rollout.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-keep-your-ota-updates-lean-and-fast">How to keep your OTA updates lean and fast</a> - Why smaller updates matter, how to ship them effectively, and how to monitor your usage.</p></li><li><p>&#128220; <a href="https://reactnativecrossroads.com/posts/react-native-085-changelog-dive/">React Native 0.85 changelog dive</a> - Analysis of 0.85&#8217;s Shadow Tree commit branching, Animation Backend changes, and breaking changes for library authors.</p></li><li><p>&#128220; <a href="https://reactnativecrossroads.com/posts/uniwind-pro-1-release/">Zero re-renders on theme change: Introducing Uniwind Pro</a> - A look into first stable release, the C++ Shadow Tree Engine, className Animations with Reanimated, Animated Theme Transitions, pricing, and more.</p></li><li><p>&#128220; <a href="https://themythicalengineer.com/the-complete-guide-to-react-native-build-optimization.html">The Complete Guide to React Native Build Optimization</a> - How to improve build times with Gradle/Metro parallelization and C++ compiler caching.</p></li><li><p>&#128230; <a href="https://github.com/facebook/react-native/releases/tag/v0.85.1">RN 0.85.1 - Animation backend as experimental</a> - Enables the new Shared Animation Backend in the <a href="https://reactnative.dev/docs/releases/release-levels">experimental Release Level</a>.</p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.0.0">Nitro Fetch 1.0 - Fast networking library, drop-in replacement for fetch</a> - This Margelo library supports HTTP/3, Prefetching, Steaming, FormData, WebSockets, worklets, and more. Demo on &#128038; <a href="https://x.com/margelo_com/status/2043674988062859608">X</a> shows the impressive performance impact on the Bluesky app.</p></li><li><p>&#128230; <a href="https://www.callstack.com/blog/agent-react-devtools-give-ai-agents-access-to-react-internals">Agent React DevTools - Give AI Agents Access to React Internals</a> - New CLI from Callstack that exposes React component tree and profiling data to AI agents, enabling deeper debugging beyond UI trees.</p></li><li><p>&#128230; <a href="https://github.com/JubaKitiashvili/expo-pretext">Expo Pretext - Text layout primitive React Native</a> - Add Pretext support to React Native, unlocking new layouts currently difficult to achieve with CSS or Skia.</p></li><li><p>&#128230; <a href="https://github.com/gideon-del/react-native-nitro-vector">Nitro Vector - C++ vector path engine powered by Nitro Modules</a> - 104x faster bezier math, boolean ops, path analysis, and SVG parsing &#8212; all in C++ off the JS thread.</p></li><li><p>&#128230; <a href="https://github.com/steve228uk/metro-mcp">Metro MCP - MCP server for React Native debugging &amp; automation</a> - Plugin-based MCP server connecting to Metro via CDP &#8212; exposes console logs, network, Redux, components, test recording, and more. Works alongside Chrome DevTools.</p></li><li><p>&#128230; <a href="https://github.com/nandorojo/galeria/releases/tag/v3.0.0">Galeria 3.0 - New Architecture only, iOS 16+</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-builder-bob/releases/tag/create-react-native-library%400.62.0">CRNL 0.62 - RN 0.85, Expo SDK 55 support</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/metro/releases/tag/v0.84.3">Metro 0.84.3 - TLS support, Fast Refresh heartbeat, optimized cache</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/react-native-harness/releases/tag/v1.1.0">Harness 1.1 - CI improvements, unified GitHub Action, plugin system</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.7.0">Rozenite 1.7 - Metro-backed agent workflow, SQLite plugin, Webpack web support</a></p></li><li><p>&#128230; <a href="https://github.com/AppAndFlow/react-native-ease/releases/tag/v0.7.0">React Native Ease 0.7 - Animated borderColor, shadow properties</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v1.4.0">Voltra 1.4 - Android theme-aware widget colors, Android ongoing (persistent) notifications</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=J8hmOaA5uzc">Beto - 5 React Native Styles Your AI Is Getting Wrong</a> - Linear Gradient (experimental), filter, boxShadow, gap, mixBlendMode, are available in RN, no need for external libraries.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=99ESJ-_CeWg">Callstack - AI-Assisted Migrations to React Native: From Months to Days</a> - Reducing migration using AI in real React Native workflows. Practical strategies for modernizing existing apps without starting from scratch.</p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-359-the-ai-apocalypse-the-past-present-and-future-of-software">RNR 359 - The AI Apocalypse? The past, present, and future of software</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.github.com/gh-stack/">GitHub Stacked PRs in private preview</a> - A much-anticipated feature lets you break large changes into small, focused PRs that build on each other.</p></li><li><p>&#128220; <a href="https://www.inngest.com/blog/hanging-promises-for-control-flow">You can&#8217;t cancel a JavaScript promise (except sometimes you can)</a> - Using never-resolving promises to interrupt async functions.</p></li><li><p>&#128220; <a href="https://encore.dev/blog/rust-runtime">What We Learned Building a Rust Runtime for TypeScript</a> - How Encore built a Rust runtime embedded in Node.js via napi-rs, moving infrastructure concerns (HTTP, DB, pub/sub) out of the JS event loop. Benchmarks show 9x Express throughput with 80% less latency.</p></li><li><p>&#128230; <a href="https://developer.chrome.com/blog/chrome-148-beta">Chrome 148 Beta - Name-only container queries in CSS, Prompt API, Web Serial API on Android, and more</a> - Notably includes an origin trial for the <a href="https://github.com/WICG/html-in-canvas">HTML-in-Canvas</a> API that led to many impressive demos.</p></li><li><p>&#128230; <a href="https://github.com/yuku-toolchain/yuku">Yuku - High-performance JS/TS toolchain in Zig</a> - Already full spec compliance, competitive with Oxc on raw parsing speed.</p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-04-08-webpack-5-106/">Webpack 5.106 - Plugin validation hooks, CSS runtime injection, smarter tree shaking, experimental Oxc parser</a></p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.12">Bun 1.3.12 - WebView headless browser, Markdown in terminal, in-process Cron scheduler</a></p></li><li><p>&#128230; <a href="https://github.com/JamieMason/syncpack/releases/tag/14.0.0">Syncpack 14.0 - CLI for managing npm dependency versions, rewritten in Rust</a></p></li><li><p>&#128230; <a href="https://aejkatappaja.github.io/phantom-ui/">Phantom UI - Structure-aware skeleton loader for every framework, based on Web Component</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UxG9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UxG9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bc2205-0963-48e3-8d67-bebb31a6c5e1_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_!UxG9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!UxG9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bc2205-0963-48e3-8d67-bebb31a6c5e1_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!H4bP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H4bP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H4bP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H4bP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H4bP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H4bP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg" width="1000" height="1082" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&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_!H4bP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H4bP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H4bP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H4bP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed9b21e-c3cd-42f9-bdd3-2fb8157ba612_1000x1082.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"><svg role="img" 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"><g><title></title><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"><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"><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_!V4Io!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V4Io!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 424w, https://substackcdn.com/image/fetch/$s_!V4Io!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 848w, https://substackcdn.com/image/fetch/$s_!V4Io!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!V4Io!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V4Io!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg" width="1000" height="757" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:757,&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_!V4Io!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 424w, https://substackcdn.com/image/fetch/$s_!V4Io!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 848w, https://substackcdn.com/image/fetch/$s_!V4Io!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!V4Io!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc16dfd-44f9-48bd-8912-76916a02f017_1000x757.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"><svg role="img" 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"><g><title></title><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"><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"><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 276]]></title><description><![CDATA[Boneyard, Ink, MUI, React Router, Next.js, shadcn, Docusaurus, Comark, Forms, Shaders | RN 0.85, ViewTransition, Skia, Windows, CRNL, Maestro, True Sheet, Nitro Player, RNGH | JSIR, Security, esbuild]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-276</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-276</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 10 Apr 2026 12:27:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O7CS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi there, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week brings a collection of smaller, yet still noteworthy, React releases and articles.</p><p>On the React Native side, v0.85 just dropped with a new Shared Animation backend. Speaking of animations, we have a little sneak peek of exciting things coming, such as <code>&lt;ViewTransition&gt;</code> and Skia Graphite.</p><p>With the recent surge in npm supply chain attacks, it&#8217;s worth reviewing the <a href="https://github.com/lirantal/npm-security-best-practices">npm Security Best Practices</a> guide to secure your setup.</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_!7kie!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7kie!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7kie!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7kie!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7kie!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7kie!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58621530-8b68-4eb2-8d4c-03f8ba948c84_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_!7kie!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7kie!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7kie!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7kie!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58621530-8b68-4eb2-8d4c-03f8ba948c84_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!AeI0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AeI0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AeI0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AeI0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AeI0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AeI0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_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_!AeI0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AeI0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AeI0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AeI0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34048b2c-c7eb-48ef-a70f-41a3d4fe0cf2_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!O7CS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O7CS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!O7CS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!O7CS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!O7CS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O7CS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg" width="1456" height="862" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:862,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Boneyard - Auto-generated skeleton screens&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="Boneyard - Auto-generated skeleton screens" title="Boneyard - Auto-generated skeleton screens" srcset="https://substackcdn.com/image/fetch/$s_!O7CS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!O7CS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!O7CS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!O7CS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497083b5-b1ad-44b8-9f1a-ebfb13e1e2a8_1462x866.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"><svg role="img" 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"><g><title></title><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"><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"><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://boneyard.vercel.app/">Boneyard - Auto-generated skeleton screens</a></strong></p><p>Instead of manually creating skeleton screens for loading states, this innovative library snapshots your real UI at various breakpoints and captures skeleton &#8220;bones&#8221; - positioned, sized rectangles that mirror the layout exactly. It supports React, React Native, and other frameworks.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://cwb.sh/platano?r=seb">Platano - Ship a revenue-ready AI image app this weekend. You know React? That&#8217;s all you need to launch on the App Store.</a></p></li><li><p>&#128467; <a href="https://reactsummit.com/?utm_source=thisweekinreact">React Summit</a> - &#127475;&#127473; Amsterdam - 12 &amp; 16 Jun. Catch the latest in React with inspiring talks, networking, and Amsterdam adventures. Save on tickets with promo code TWIR (-10%) !</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/the-precompute-pattern-encoding-dynamic-data-into-urls-in-nextjs/">The Precompute Pattern: Encoding Dynamic Data into URLs in Next.js</a> - An advanced technique to maximize the ability for Next.js to pre-render pages. It works particularly well for low cardinality variants such as feature flags and auth status.</p></li><li><p>&#128220; <a href="https://developer.mozilla.org/en-US/blog/mdn-front-end-deep-dive/">Under the hood of MDN&#8217;s new frontend</a> - MDN launched a new frontend, replacing their old and difficult-to-maintain React CRA app for a new stack. They implemented their own Server Components system on top of Lit and Custom Elements, using Declarative Shadow DOM as a progressive enhancement.</p></li><li><p>&#128220; <a href="https://blog.railway.com/p/moving-railways-frontend-off-nextjs">Moving Railway&#8217;s Frontend Off Next.js</a> - Feedback on migrating a Page Router app with 200+ routes to TanStack Start in 2 PRs with zero downtime. Their app now builds faster, has a more explicit model, and layout composition is easier.</p></li><li><p>&#128220; <a href="https://neciudan.dev/you-really-really-dont-need-an-effect">You really, really, really don&#8217;t need an effect! I swear!</a> - And even when you need one (data fetching), someone already wrote that effect better than you will (React Query).</p></li><li><p>&#128220; <a href="https://tigerabrodi.blog/how-to-implement-spring-physics-buttons-with-framer-motion">How to implement spring physics buttons with Framer Motion</a></p></li><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR&amp;utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=partner">Certificates.dev - Go beyond tutorials. Get certified with real-world React coding exams prepped by Aurora Scharff. Trusted by 680 companies</a></p></li><li><p>&#128230; <a href="https://github.com/vadimdemedes/ink/releases/tag/v7.0.0">Ink 7.0 - React renderer for CLIs</a> - Unsurprisingly, this package has become quite popular with the rise of AI and terminal apps. This major version upgrades to Node 22, React 19.2, and adds many new hooks, features, and props.</p></li><li><p>&#128230; <a href="https://comark.dev/">Comark - Fast, streaming-ready Markdown parser with support for React and more</a> - An interesting alternative to Streamdown or MDX, coming from the Nuxt team.</p></li><li><p>&#128230; <a href="https://docusaurus.io/blog/releases/3.10">Docusaurus 3.10 - Security, Docusaurus Faster stable, VCS API, Strict MDX, Site Storage stable</a> - A milestone release to prepare for Docusaurus v4.</p></li><li><p>&#128230; <a href="https://shaders.com/">Shaders beta - The component library for creative WebGPU effects in the browser</a> - A nice solution for modern creative web dev, coming with first-class React components. Commercial usage of React components is free, although there&#8217;s a paid offering.</p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.72.0">React Hook Form 7.72 - Built-in form-level validation</a> - Useful feature for cross-field validation.</p></li><li><p>&#128230; <a href="https://github.com/edmundhung/conform/releases/tag/v1.18.0">Conform 1.18 - Progressively enhance HTML forms with React</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7140">React Router 7.14 - Support for Vite 8, unstable RSC Framework Mode improvements</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-04-shadcn-apply">shadcn CLI 4.2 - New </a><code>shadcn apply</code><a href="https://ui.shadcn.com/docs/changelog/2026-04-shadcn-apply"> command to switch presets easily</a></p></li><li><p>&#128230; <a href="https://github.com/mui/material-ui/releases/tag/v9.0.0">Material UI 9.0 - Accessibility improvements, sx prop performance, and cleanup of deprecated APIs</a></p></li><li><p>&#128230; <a href="https://mantine.dev/changelog/9-0-0/">Mantine 9.0 - New components: Scheduling, FloatingWindow, OverflowList, Marquee, and more</a></p></li><li><p>&#128230; <a href="https://github.com/amannn/next-intl/releases/tag/v4.9.0">Next-Intl 4.9 - Support </a><code>&lt;Link transitionTypes&gt;</code></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=NBjycPpPHQQ">Web Dev Simplified - You Need To Start Using This Underrated React Hook - </a><code>useSyncExternalStore</code></p></li><li><p>&#127909; <a href="https://www.youtube.com/playlist?list=PL53Z0yyYnpWhsizNWtlnyM7XWFUSw437J">React Paris 2026 - YouTube Playlist</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_!SdVa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SdVa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SdVa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SdVa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SdVa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SdVa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c293f8a3-d2f1-4cb3-95a2-8abd57beb746_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_!SdVa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SdVa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SdVa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SdVa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc293f8a3-d2f1-4cb3-95a2-8abd57beb746_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!nz9k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nz9k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nz9k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nz9k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nz9k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nz9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg" width="1200" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:567,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No breakpoints, no console.log &#8212; just AI &amp; time travel&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="No breakpoints, no console.log &#8212; just AI &amp; time travel" title="No breakpoints, no console.log &#8212; just AI &amp; time travel" srcset="https://substackcdn.com/image/fetch/$s_!nz9k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nz9k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nz9k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nz9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfdd450e-bd66-4bd6-987e-df45bb507755_1200x567.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"><svg role="img" 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"><g><title></title><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"><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"><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=ThisWeekInReact8Apr26">No breakpoints, no console.log &#8212; just AI &amp; time travel</a></strong></p><p>15x faster TypeScript and JavaScript debugging than with breakpoints and <code>console.log</code>, while upgrading your AI agent into an expert debugger with real-time context.</p><p>Wallaby.js runs your tests as you type, feeding your AI assistant live runtime values, code coverage, error details, and execution paths &#8212; all right next to your code. With <a href="https://wallabyjs.com/blog/wallaby-v3.html?referrer=ThisWeekInReact8Apr26">Wallaby v3&#8217;s new engine</a> &#128640;, tests start instantly with cached results, prioritize active files, and stream updates in real time.</p><p>Built for testing, Wallaby includes a <strong>Time Travel Debugger</strong>, the ability to run only opened files, full-context AI integration, smart test runs, and more.</p><p><a href="https://wallabyjs.com/?referrer=ThisWeekInReact8Apr26">&#10145;&#65039; Learn More</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!bera!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bera!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bera!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bera!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bera!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bera!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg" width="1200" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native 0.85&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.85" title="React Native 0.85" srcset="https://substackcdn.com/image/fetch/$s_!bera!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bera!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bera!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bera!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99110b59-b258-4a30-b771-842830f4e60c_1200x701.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"><svg role="img" 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"><g><title></title><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"><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"><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/04/07/react-native-0.85">React Native 0.85</a></strong></p><p>React Native 0.85 notably ships with a new Shared Animation Backend built in collaboration with Software Mansion, alongside a few other improvements and breaking changes:</p><ul><li><p><strong>Shared Animation Backend</strong>: This new internal engine will soon be enabled in React Native 0.85.1 and power both Animated and Reanimated. It enables performance benefits for Reanimated, and the core Animated API will finally animate layout props through the native driver!</p></li><li><p><strong>DevTools Improvements</strong>: Multiple simultaneous CDP connections allow you to debug with DevTools, VS Code, and AI agents simultaneously without sessions dropping.</p></li><li><p><strong>Metro TLS Support</strong>: HTTPS and WSS during development for testing secure APIs.</p></li><li><p><strong>Breaking Changes</strong>: Jest preset moved to <code>@react-native/jest-preset</code>, dropped EOL Node versions, and removed <code>StyleSheet.absoluteFillObject</code>.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-apr8">Product for Engineers - What we wish we knew about building AI agents</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/35764">React PR - ViewTransition support for React Native Fabric</a> - Behind a flag, not ready for prime time, but this is one of many PRs showing that <code>&lt;ViewTransition&gt;</code> for React Native is being actively worked on!</p></li><li><p>&#128064; <a href="https://github.com/Shopify/react-native-skia/pull/3813">React Native Skia - First Graphite pre-release</a>- Google&#8217;s next-gen Skia renderer (Vulkan/Metal/Dawn) comes to RN Skia, now available in the <code>@next</code> distribution channel.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/expo-brownfield-how-to-add-expo-to-your-existing-native-app-without-a-rewrite">Expo brownfield: How to add Expo to your existing native app without a rewrite</a> - SDK 55 introduced a new &#8220;isolated&#8221; approach to integrate Expo in an existing native app. The Expo app is built ahead of time and distributed as a native binary artifact</p></li><li><p>&#128220; <a href="https://heartit.tech/react-native-jsi-deep-dive-part-1-the-runtime-you-never-see/">React Native JSI Deep Dive Series</a> - Comprehensive 12-part series covering JSI internals, from C++ architecture to TurboModule integration.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/how-we-optimized-agent-device-for-mobile-app-automation">How We Optimized Agent Device for Mobile App Automation</a> - Deep dive on reducing LLM token usage by 50% for AI-driven mobile testing through accessibility snapshots and smarter context management.</p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/react-native/%F0%9F%9A%80react-native-windows-v0-82-is-here/">RN Windows 0.82 - Fabric-only, XAML UI Hosting</a> - Community modules can now embed native XAML controls directly in Fabric. New accessibility override API gives third-party modules fine-grained control over screen reader behavior.</p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-builder-bob/releases/tag/create-react-native-library%400.60.0">Create React Native Library 0.60 - Experimental C++ TurboModule, Vite web support for examples</a> - New templates can now scaffold experimental C++ TurboModules for native development. You can now test both native and web support without custom configuration.</p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-2-4-0">Maestro CLI 2.4 - iOS 26 support, new </a><code>list-device</code><a href="https://maestro.dev/blog/maestro-cli-2-4-0"> commands for easier device selection</a></p></li><li><p>&#128230; <a href="https://sheet.lodev09.com/blog/release-3-10">True Sheet 3.10 - iOS 26 scroll edge effects, grabber accessibility</a></p></li><li><p>&#128230; <a href="https://nitroplayer.riteshshukla.in/">Nitro Player 1.0 - Audio player with playlist management, playback controls, and support for Android Auto and CarPlay</a></p></li><li><p>&#128230; <a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.6.0">Skia 2.6 - New immutable Path API</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v2.31.0">Gesture Handler 2.31 - Various bug fixes, fix unresponsive handlers</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://discourse.llvm.org/t/rfc-jsir-a-high-level-ir-for-javascript/90456">JSIR - A High-Level IR for JavaScript (RFC)</a> - Google&#8217;s new JavaScript IR (Intermediate Representation) proposal for static analysis. Already used internally for code analysis and deobfuscation, notably decompiling Hermes bytecode.</p></li><li><p>&#128220; <a href="https://socket.dev/blog/hidden-blast-radius-of-the-axios-compromise">The Hidden Blast Radius of the Axios Compromise</a> - Last week, the popular <code>axios</code> library got compromised through a <a href="https://socket.dev/blog/axios-maintainer-confirms-social-engineering-behind-npm-compromise">sophisticated social engineering attack</a>. Even if your app doesn&#8217;t depend on the library, you may still be affected through transitive dependencies or using <code>npx</code> in critical CI workflows.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/">What To Know in JavaScript (2026 Edition)</a> - Comprehensive roundup covering ES2025/2026 features, framework updates, runtime landscape, and build tools.</p></li><li><p>&#128220; <a href="https://polypane.app/blog/the-intl-api-the-best-browser-api-youre-not-using/">The Intl API: The best browser API you&#8217;re not using</a></p></li><li><p>&#128230; <a href="https://www.bram.us/2026/04/02/view-transitions-toolkit/">View Transitions Toolkit - Utility functions for View Transitions</a> - Filling in gaps for advanced View Transitions patterns. Feature detection, animation optimization, playback control, and automatic navigation types.</p></li><li><p>&#128230; <a href="https://eslint.org/blog/2026/04/eslint-v10.2.0-released/">ESLint 10.2 - Language-aware rules, Temporal support</a></p></li><li><p>&#128230; <a href="https://github.com/evanw/esbuild/releases/tag/v0.28.0">esbuild 0.28 - Import Text proposal, integrity checks</a></p></li><li><p>&#128230; <a href="https://github.com/sindresorhus/ky/releases/tag/v2.0.0">Ky 2.0 - JavaScript HTTP client based on the Fetch API</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7HUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7HUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6d0d460-adad-429f-9123-074834af9dcd_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_!7HUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!7HUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6d0d460-adad-429f-9123-074834af9dcd_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!ez0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ez0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ez0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ez0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ez0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ez0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg" width="948" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:266,&quot;width&quot;:948,&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_!ez0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ez0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ez0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ez0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e54c34f-51d2-467f-ba9b-e59d0eb3c755_948x266.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"><svg role="img" 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"><g><title></title><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"><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"><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_!KLI5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KLI5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KLI5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KLI5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KLI5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KLI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg" width="1000" height="1121" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1121,&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_!KLI5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KLI5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KLI5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KLI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8ea7d8-c724-4f4d-b2cb-71727490100e_1000x1121.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"><svg role="img" 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"><g><title></title><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"><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"><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 275]]></title><description><![CDATA[&#9883;&#65039; Next.js, TanStack RSC, React Compiler, Inertia, Astro, Trusted Types, Signals | &#128241; ExecuTorch, Unistyles, RN.run, Preflight, Confetti, AI, Lynx | &#128256; Pretext, Axios, Node, Playwright, Turborep]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-275</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-275</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 03 Apr 2026 13:07:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tQOh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_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, we have news about popular React meta-frameworks. Next.js Adapters API should help host it anywhere without compromise. TanStack Start unveils a preview of its React Server Components. The React Compiler port to Rust is being actively worked on.</p><p>No major announcement in the React Native world, but still many interesting releases. React Native v0.85 should be released next week.</p><p>Axios has been compromised in a major supply chain attack. Stay safe and make sure to adopt security best practices!</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_!hfxy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hfxy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hfxy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hfxy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hfxy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hfxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a94156ca-7abc-4ca0-a858-d2bd12b65591_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_!hfxy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hfxy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hfxy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hfxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94156ca-7abc-4ca0-a858-d2bd12b65591_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!IMMp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IMMp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IMMp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IMMp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IMMp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IMMp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54003e91-1fed-4be1-b06f-74bdf77c8973_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_!IMMp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IMMp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IMMp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IMMp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54003e91-1fed-4be1-b06f-74bdf77c8973_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=11march&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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=11march&amp;utm_content=2nd">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=11march&amp;utm_content=2nd">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=11march&amp;utm_content=2nd">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!tQOh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tQOh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tQOh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tQOh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tQOh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tQOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d462314-95f6-441f-b4ea-17a4b21e893d_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 Across Platforms: Adapters, OpenNext, and Our Commitments&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 Across Platforms: Adapters, OpenNext, and Our Commitments" title="Next.js Across Platforms: Adapters, OpenNext, and Our Commitments" srcset="https://substackcdn.com/image/fetch/$s_!tQOh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tQOh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tQOh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tQOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d462314-95f6-441f-b4ea-17a4b21e893d_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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/nextjs-across-platforms">Next.js Across Platforms: Adapters, OpenNext, and Our Commitments</a></strong></p><p>Next.js 16.2 now ships with a stable, typed, versioned Adapter API. It was built in collaboration with many partners: OpenNext, Netlify, Cloudflare, AWS Amplify, and Google Cloud. This helps ensure Next.js works well on every platform across all its features. There&#8217;s now a public test suite to verify your adapter, and Vercel also relies on it.</p><p>The <a href="https://nextjs.org/ecosystem-working-group">Next.js Ecosystem Working Group</a> explains Vercel&#8217;s commitment. Partners will not participate in Next.js design decisions and roadmap, but can still impact it through feedback. They will be kept in the loop early, have time to adapt, and get direct support to fix adapter breakage.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!TpX8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TpX8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TpX8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TpX8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TpX8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TpX8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg" width="1200" height="656" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStart Start RSC preview&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="TanStart Start RSC preview" title="TanStart Start RSC preview" srcset="https://substackcdn.com/image/fetch/$s_!TpX8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TpX8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TpX8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TpX8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F391193d1-9165-45d3-bfc1-c2d9eb0beaf4_1200x656.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"><svg role="img" 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"><g><title></title><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"><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"><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://youtu.be/8XGcc-FRPuo?si=VnH91DpiPI35PFB4&amp;t=1167">TanStart Start RSC preview</a></strong></p><p>Tanner Linsley gave a talk at React Paris last week. The 2nd part unveils for the first time what React Server Components will look like in TanStack Start, to be released very soon.</p><p>My highlights:</p><ul><li><p><strong>Primitives</strong>: You have full flexibility to decide how to compose these RSC APIs, and can adopt them incrementally. RSC flight payloads are just streams of text; you can sync/cache/persist/manipulate these on your own terms.</p></li><li><p><strong>Composite Components</strong>: You don&#8217;t need <code>&#8217;use client&#8217;</code> directives, although they are supported. This new concept creates an explicit boundary between the server and the client. I assume it should be possible to co-locate client/server components in the same file.</p></li><li><p><strong>No Server Actions</strong>: A design decision for security reasons, but you can use server functions with validation.</p></li></ul><p>What strikes me is just how different this is from Next.js. It feels more like a library than a framework, and it seems more in sync with the philosophy that initially attracted me to React: you make your own decisions, even though sometimes more flexibility means more glue code and ways to shoot yourself in the foot. In any case, I agree with Tanner: we deserve another React meta-framework&#8212;one that&#8217;s less opinionated and innovates in a different direction.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://crowdin.info/AII2d2o">Lingui - Lightweight, developer-first i18n tooling for modern product teams</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/36173">React Compiler PR - WIP port of React Compiler to Rust</a> - As previously announced, the React Compiler is being ported to Rust through AI. The algorithm is the same, based on a Rust-based Babel AST, already passing 100% of the Babel integration fixture tests. The goal is to integrate nicely with Babel, SWC, and OXC.</p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/35816">React PR - Enable Trusted Types integration</a> - The browser Trusted Types API is now Baseline Newly Available, and React now integrates with it to prevent XSS and force you to sanitize unsafe inputs. For example, with <code>dangerouslySetInnerHTML={{__html: policy.createHTML(text)}}</code>.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/92012">Next.js PR - </a><code>experimental.useOffline with retries + hook to show offline indicator</code></p></li><li><p>&#128064; <a href="https://github.com/TanStack/query/pull/10359">TanStack Query ESLint PR - Add </a><code>prefer-query-options</code><a href="https://github.com/TanStack/query/pull/10359"> rule</a></p></li><li><p>&#128467;&#65039; <a href="https://www.dotjs.io/?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=EB">dotJS 2026</a> - &#127467;&#127479; Paris - 18 September - Early bird tickets are available until April 14th 6 PM CET, save 100&#8364; on the next price. dotJS comes with dotAI on September 17, book now your early bird ticket for each conference, or a combo to attend both.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-router-signal-graph">TanStack Router&#8217;s New Reactive Core: A Signal Graph</a> - They refactored the router state store, splitting it into many small stores using signals, leading to more efficient fine-grained subscriptions. The original <code>router.state</code> is still a public API, but now derived from the smaller store.</p></li><li><p>&#128220; <a href="https://tigerabrodi.blog/when-do-you-really-need-starttransition">When Do You Really Need startTransition?</a> - When an update triggers expensive rendering.</p></li><li><p>&#128220; <a href="https://julesblom.com/writing/colocated-svg-defs">Hoistable SVG Defs in React</a> - How to colocate SVG <code>&lt;defs&gt;</code> with components instead of centralizing them.</p></li><li><p>&#128220; <a href="https://handlewithcare.dev/blog/making_react_prosemirror_really_really_fast/">Making React ProseMirror really, really fast</a></p></li><li><p>&#128220; <a href="https://neciudan.dev/lets-build-dynamic-shimmer-skeletons">Build your own shimmer skeleton that never goes out of sync</a></p></li><li><p>&#128220; <a href="https://inside-react.vercel.app/blog/how-does-react-fiber-render-your-ui">How Does React Fiber Render Your UI</a></p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-apr1">Product for Engineers - WTF does a product manager do? (and why engineers should care)</a></p></li><li><p>&#128230; <a href="https://laravel.com/blog/inertia-v3-whats-changed-since-the-first-beta">Inertia 3.0 - Build React/modern SPAs with server-based routers</a> - This solution to integrate React and other frontend frameworks with traditional backends (optimized for Laravel) now comes with a Vite 8 plugin, SSR in dev, optimistic updates, and more.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-db-0.6-app-ready-with-persistence-and-includes">TanStack DB 0.6 - Persistence, Offline Support, and Hierarchical Data</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-610/">Astro 6.1 - Improved image optimization, markdown config, expose i18n fallback routes</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_!My1S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!My1S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!My1S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!My1S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!My1S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!My1S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e17d273-4537-492e-95b8-aeb63d03d02d_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_!My1S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!My1S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!My1S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!My1S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e17d273-4537-492e-95b8-aeb63d03d02d_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!QV59!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QV59!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QV59!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QV59!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QV59!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QV59!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.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_!QV59!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QV59!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QV59!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QV59!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc6901fa-1603-478f-8163-0ad33f33a5cc_2879x1420.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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!nKU1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nKU1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nKU1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nKU1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nKU1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nKU1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg" width="1200" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;RN ExecuTorch 0.8&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="RN ExecuTorch 0.8" title="RN ExecuTorch 0.8" srcset="https://substackcdn.com/image/fetch/$s_!nKU1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nKU1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nKU1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nKU1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2454471-4b97-43c3-a8c6-2505239e4b5c_1200x972.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"><svg role="img" 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"><g><title></title><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"><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"><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/software-mansion/react-native-executorch/releases/tag/v0.8.0">RN ExecuTorch 0.8</a></strong></p><p>Software Mansion just dropped the biggest release to date for React Native ExecuTorch. Version 0.8 expands the library&#8217;s capabilities far beyond its initial scope, introducing official support for bare React Native applications (no longer strictly tied to Expo) and deep integration with Vision Camera.</p><p><strong>Key callouts:</strong></p><ul><li><p><strong>Vision Camera Integration:</strong> You can now seamlessly run ExecuTorch models directly on camera frames in real-time.</p></li><li><p><strong>New Computer Vision Models:</strong> The release introduces powerful new CV hooks, such as <code>useInstanceSegmentation</code> and <code>useSemanticSegmentation</code>.</p></li><li><p><strong>Bare RN Support:</strong> You can now use ExecuTorch in bare React Native apps by utilizing the bare React Native resource fetcher instead of the Expo one.</p></li><li><p><strong>Expanded NLP:</strong> Continues to grow its Natural Language Processing suite with implementations for Speech-to-Text, Text-to-Speech, Text Embeddings, and more.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128064; <a href="https://vue.lynxjs.org/">Lynx Vue</a> - Vue + Lynx = Vue Native? An AI-powered attempt to bridge native development with a popular framework.</p></li><li><p>&#128467;&#65039; <a href="https://appjs.co/?utm_source=thisweekinreact">App.js Conf</a> - &#127477;&#127473; Krak&#243;w - 27-29 May - Join Charlie Cheever, William Candillon, Jay Meistrich, Perttu L&#228;hteenlahti, and more! Prices increase in May&#8212;secure your seat now. Get a 15% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-fig-keeps-millions-eating-safely-with-a-five-engineer-team-and-expo">Fig case study</a> - How five engineers can scale to millions of users with Expo to provide crucial info about dietary needs.<br>&#128230; <a href="https://github.com/RamboWasReal/react-native-preflight">Preflight - Simplify Maestro E2E testing for React Native</a> - deep link to any screen, inject state, compare visual regressions with reports, router agnostic.</p></li><li><p>&#128230; <a href="https://github.com/AlirezaHadjar/react-native-fast-confetti/releases/tag/v2.0.0-beta.2">Fast Confetti 2.0</a> - Rewritten composition API and physics engine, more customization and natural feeling animations.</p></li><li><p>&#128230; <a href="https://www.reactnative.run/">ReactNative.run</a> - Run React Native in a browser, Metro bundler mapped to the web. Similar concept to Expo Snack.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.11.0%20">Agent Device 0.11</a> - iOS Simulator no longer takes focus from the current window + lots of fixes and small features</p></li><li><p>&#128230; <a href="https://www.callstack.com/blog/brownie-a-type-safe-shared-state-workflow-for-brownfield-react-native">Brownie 3.5 - Shared-State Workflow for Brownfield now with Android support.</a></p></li><li><p>&#128230; <a href="https://github.com/Guccio163/react-native-reshuffled">Reshuffled 0.2 - Nitro-powered grid layout - onDragEnd worklet callbacks</a></p></li><li><p>&#128230; <a href="https://github.com/infinitered/reactotron/releases/tag/reactotron-app%403.9.0">Reactotron 3.9 - MCP server integration</a></p></li><li><p>&#128230; <a href="https://github.com/pawicao/react-native-header-motion/releases/tag/v1.0.0">React Native Header Motion 1.0 - New context-first header API, explicit navigation bridging, better performance</a></p></li><li><p>&#128230; <a href="https://github.com/jpudysz/react-native-unistyles/releases/tag/v3.2.0">Unistyles 3.2 - Add support for dropShadow, Suspense trees, RTL ShadowTree updates on Android</a></p></li><li><p>&#128230; <a href="https://github.com/MeliValesca/react-native-morph-card">Morph Card - Native card-to-modal morph transition</a></p></li><li><p>&#129302; <a href="https://github.com/software-mansion-labs/skills/tree/main/skills/react-native-best-practices">Software Mansion skills</a> - Best practices, AI skills for animations, gestures, SVG, and libraries maintained by SWM.</p></li><li><p>&#129302; <a href="https://github.com/react-navigation/skills">React Navigation AI skills</a> - Official guidelines that help with migration to newer versions and static config.</p></li><li><p>&#129302; <a href="https://www.callstack.com/blog/announcing-codex-plugins-for-react-native-development">Codex plugins for React Native development</a> - Build and test RN apps in Codex.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=t3rTRMDoev8">William Candillon - React Native WebGPU in 100 seconds</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=EWZZ-qekCW0">Beto - react-i18next in React Native &amp; Expo</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-358-react-native-for-meta-quest-part-2-developer-friendly">React Native Radio 358 - React Native for Meta Quest Part 2: Developer Friendly</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#9888;&#65039; <a href="https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan">axios Compromised on npm - Malicious Versions Drop Remote Access Trojan</a> - <code>axios@1.14.1</code> and <code>axios@0.30.4</code> have been compromised for approximately 4 hours on 30 March, and you might have too if you installed dependencies during that time frame. Even if you don&#8217;t use it directly, it&#8217;s probably a transitive dependency in your projects. Make sure to follow the defensive measures, such as adding <code>min-release-age=7d</code> to your <code>.npmrc</code>.</p></li><li><p>&#128220; <a href="https://willybrauner.com/journal/signal-the-push-pull-based-algorithm">Signals, the push-pull based algorithm</a></p></li><li><p>&#128230; <a href="https://github.com/chenglou/pretext">Pretext - Text measurement and layout algorithm in pure TypeScript</a> - This innovative lib went viral this week, with fun/impressive but useless demos everywhere. However, the lib unlocks real new possibilities that are impossible or inefficient to achieve with DOM/CSS, as explained in this related article: <a href="https://denodell.com/blog/youre-looking-at-the-wrong-pretext-demo">You&#8217;re Looking at the Wrong Pretext Demo</a>.</p></li><li><p>&#128230; <a href="https://developer.chrome.com/blog/element-scoped-view-transitions">Chrome 147 - </a><code>Element.startViewTransition()</code> - The first browser to ship element-scoped view transitions, enabling multiple view transitions to run simultaneously.</p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.59.0">Playwright 1.59 - Screencast recording, observability for agents, </a><code>await using</code> - New features that could be helpful to give feedback to AI agents, and post review videos in PRs.</p></li><li><p>&#128230; <a href="https://vercel.com/blog/making-turborepo-ninety-six-percent-faster-with-agents-sandboxes-and-humans">Turborepo 2.9 - 96% faster with agents, sandboxes, and humans</a></p></li><li><p>&#128230; <a href="https://github.com/huggingface/transformers.js/releases/tag/4.0.0">Transformers.js 4.0 - Machine Learning for the web - New WebGPU backend</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v25.9.0">Node.js 25.9 - Test runner module mocking improvements, </a><code>using</code><a href="https://nodejs.org/en/blog/release/v25.9.0"> + AsyncLocalStorage, </a><code>stream/iter</code><a href="https://nodejs.org/en/blog/release/v25.9.0"> API</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CtH_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CtH_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2eb40e50-a649-40ad-88a7-06c825890f59_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_!CtH_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!CtH_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2eb40e50-a649-40ad-88a7-06c825890f59_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#129325; Fun</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!awSM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!awSM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 424w, https://substackcdn.com/image/fetch/$s_!awSM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 848w, https://substackcdn.com/image/fetch/$s_!awSM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!awSM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!awSM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg" width="1158" height="236" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:236,&quot;width&quot;:1158,&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_!awSM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 424w, https://substackcdn.com/image/fetch/$s_!awSM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 848w, https://substackcdn.com/image/fetch/$s_!awSM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!awSM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9cd7593-ad16-4f19-8ab8-5e6b23a43c3e_1158x236.jpeg 1456w" sizes="100vw" loading="lazy"></picture><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_!KOBM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KOBM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KOBM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KOBM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KOBM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KOBM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg" width="1000" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&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_!KOBM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KOBM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KOBM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KOBM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1fa4771-d6ec-4e7e-97e4-1d6b9a28a376_1000x692.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"><svg role="img" 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"><g><title></title><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"><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"><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 274]]></title><description><![CDATA[&#9883;&#65039; Next.js, React Router, Storybook, HeroUI, Remotion, Lucide, useEffect | &#128241; Reanimated, Worklets, Nitro Fetch, Navigation, Rozenite, MMKV, Windows, Swift | &#128256; TypeScript, Signals, Zero, Valibot]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-274</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-274</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 27 Mar 2026 14:14:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pTvN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, Seb here &#128075;!</p><p>This week: a new Next.js release, a React Aria-based UI library, Remotion updates, Storybook MCP, and more.</p><p>On React Native, multi-threading keeps improving (Worklets, Reanimated), and React Navigation v8 looks close.</p><p>Sorry for the weird duplicate email last week, just a mistake &#128517;</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_!_TYJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_TYJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_TYJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_TYJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_TYJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_TYJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86e3b5b7-3a59-4954-b093-e49a68213420_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_!_TYJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_TYJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_TYJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_TYJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86e3b5b7-3a59-4954-b093-e49a68213420_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!2bkQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2bkQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2bkQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2bkQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2bkQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2bkQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8f279ae-1817-464c-9c6f-29af5c971bca_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_!2bkQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2bkQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2bkQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2bkQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f279ae-1817-464c-9c6f-29af5c971bca_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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=11march&amp;utm_content=2nd">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=11march&amp;utm_content=2nd">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=11march&amp;utm_content=2nd">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!pTvN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pTvN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pTvN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pTvN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pTvN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pTvN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2cd2caf-cfa0-4864-995c-ec43eefca740_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 16.2&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.2" title="Next.js 16.2" srcset="https://substackcdn.com/image/fetch/$s_!pTvN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pTvN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pTvN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pTvN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2cd2caf-cfa0-4864-995c-ec43eefca740_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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-2">Next.js 16.2</a></strong></p><p>A great minor release that comes with significant performance improvements, but also impactful DX improvements and new interesting features:</p><ul><li><p>~400% faster <code>next dev</code> startup</p></li><li><p>~50% faster rendering thanks to a React core RSC contribution</p></li><li><p>Redesigned error page</p></li><li><p>Server Function logging in dev</p></li><li><p><code>next dev --inspect</code> to attach a Node.js debugger</p></li><li><p>Link <code>transitionTypes</code></p></li><li><p>Dev Overlay now renders <code>Error.cause</code> and a hydration diff indicator to identify client/server</p></li><li><p>Many new experimental features</p></li><li><p><a href="https://nextjs.org/blog/next-16-2-ai">AI improvements</a>: generates <code>AGENTS.md</code> to read versioned docs for agents, browser log forwarding, agent devtools CLI.</p></li><li><p><a href="https://nextjs.org/blog/next-16-2-turbopack">Turbopack improvements</a>: Faster builds, Server Fast Refresh, tree shaking of dynamic imports, PostCSS config, Subresource Integrity, inline loader config, and more.</p></li></ul><p>Related resources:</p><ul><li><p>&#128220;<a href="https://aurorascharff.no/posts/implementing-nextjs-16-use-cache-with-next-intl-internationalization/">Implementing Next.js 16 &#8216;use cache&#8217; with next-intl Internationalization</a> - Recently updated to include usage of the new <code>experimental.rootParams</code> feature, letting cached components read the locale directly instead of receiving it as a prop.</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/error-handling-in-nextjs-with-catch-error">Error Handling in Next.js with catchError</a> - This new <code>unstable_catchError()</code> API is a framework-aware alternative to <code>react-error-boundary</code> that discards Next.js control flow errors and can refetch RSC data.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=PXq6awYzfT8">Ankita Kulkarni - Next.js 16.2 Just Changed AI Coding Forever</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-mar25">Product for Engineers - WTF does a product manager do? (and why engineers should care)</a></p></li><li><p>&#128220; <a href="https://neciudan.dev/name-your-effects">Start naming your useEffect functions, you will thank me later</a> - Advocates for giving an inline name to Effect functions to convey your intent, even if it&#8217;s encapsulated within a custom hook. If you can&#8217;t find a decent name, maybe the Effect does too much or should not exist.</p></li><li><p>&#128220; <a href="https://saschb2b.com/blog/use-hook-react">use(): The Hook That Breaks the Rules (On Purpose)</a></p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/test-ids-are-an-a11y-smell">Test IDs are an a11y smell</a></p></li><li><p>&#128220; <a href="https://raphaelbronsveld.com/blog/type-safety-in-react-router">Type Safety in React Router</a></p></li><li><p>&#128220; <a href="https://pavi2410.com/blog/post-react-compiler-coding-guide/">Post-React Compiler React Coding Guide (For AI Agents)</a></p></li><li><p>&#128184; <a href="https://blog.sentry.io/setting-up-next-js-source-maps-sentry/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjs&amp;utm_content=newsletter-link-blog-sourcemaps-learnmore">Sentry - Why your Next.js stack traces point to random chunks (and how to fix it)</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7132">React Router 7.13.1 &amp; 7.13.2</a> - Recent patches introduced new unstable APIs such as the <code>getRequest()</code> API for RSCs, and a future flag to access &#8220;pass-through&#8221; (un-normalized) <code>Request</code> objects. The <code>&lt;Link unstable_mask&gt;</code> makes it easier to implement URL masking, letting you replicate Instagram-like UX: open gallery images in a modal, and render them full screen on refresh.</p></li><li><p>&#128230; <a href="https://heroui.com/docs/react/releases/v3-0-0">HeroUI 3.0</a> - We usually don&#8217;t feature most UI libraries, but this one, based on React Aria and Tailwind, has been cooking for a while, and looks more polished than the average UI lib. Although it&#8217;s not a cross-platform abstraction, it offers a React Native variant using similar composition patterns and design tokens.</p></li><li><p>&#128230; <a href="https://github.com/storybookjs/storybook/releases/tag/v10.3.0">Storybook 10.3 - MCP, Vite 8, Next.js 16.2, ESLint 10</a> - There&#8217;s a dedicated article on the <a href="https://storybook.js.org/blog/storybook-mcp-for-react/">Storybook MCP for React</a><strong>.</strong></p></li><li><p>&#128230; <a href="https://lucide.dev/guide/version-1">Lucide Icons 1.0</a> - Quite popular icon solution in React and shacn/ui.</p></li><li><p>&#128230; <a href="https://github.com/facebook/lexical/releases/tag/v0.42.0">Lexical 0.42 - Extensible text editor framework from Meta</a></p></li><li><p>&#128230; <a href="https://github.com/ddoemonn/hiraki">Hiraki - Zero-dependency React drawer component</a></p></li><li><p>&#128230; <a href="https://github.com/vercel-labs/json-render/pull/240">json-render Ink - Generative UI for the terminal, comes with 27 React components</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=EayVHo7XTEg">Jonny Burger - Remotion is getting even better!</a> - Cool features landed recently in the React video creation tool, such as Light Leaks, Sound Effects, Rspack, and AI-related improvements. Let&#8217;s not forget the <a href="https://www.youtube.com/watch?v=ppYO5COPGXk">integration with Vercel Sandbox</a>: I wouldn&#8217;t be surprised if we could soon fully vibe-code videos directly in the cloud.</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_!QIeC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QIeC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QIeC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QIeC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QIeC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QIeC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dde36c70-a2bd-4335-a144-5f77b69b1b80_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_!QIeC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QIeC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QIeC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QIeC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdde36c70-a2bd-4335-a144-5f77b69b1b80_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!habS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!habS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!habS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!habS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!habS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!habS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a84abe91-c9ae-4463-95ef-2813945f2cf4_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 for Fire TV App Development&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 for Fire TV App Development" title="React Native for Fire TV App Development" srcset="https://substackcdn.com/image/fetch/$s_!habS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!habS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!habS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!habS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84abe91-c9ae-4463-95ef-2813945f2cf4_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"><svg role="img" 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"><g><title></title><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"><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"><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/4cGtUp9">React Native for Fire TV App Development</a></strong></p><p>Your existing React Native codebase can now run on Fire TV with minimal changes,&#8239;thanks to Amazon Developer&#8217;s new operating system, Vega.&#8239;What&#8217;s&#8239;included:&#8239;&#8239;</p><ul><li><p>40+ open-source libraries you already rely on, like reanimated&#8239;</p></li><li><p>Reduced bundle size&#8239;-&#8239;React Native is built into the OS and dynamically linked&#8239;</p></li><li><p>Vega Module Resolver Preset (VMRP)&#8239;to&#8239;automatically replace libraries with their Vega-platform ported equivalencies&#8239;</p></li><li><p>Vega Studio, a VS code-extension,&#8239;for building, testing, and&#8239;optimizing&#8239;Vega apps&#8239;</p></li></ul><p>Ready&#8239;to&#8239;reach new audiences?&#8239;Check out&#8239;our&#8239;getting started guide.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!3atr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3atr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3atr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3atr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3atr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3atr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg" width="1200" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Worklets 0.8 - Shareable, Bundle mode improvements&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="Worklets 0.8 - Shareable, Bundle mode improvements" title="Worklets 0.8 - Shareable, Bundle mode improvements" srcset="https://substackcdn.com/image/fetch/$s_!3atr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3atr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3atr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3atr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9632f3a6-ae4e-4d63-8fda-71cf386b370c_1200x480.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"><svg role="img" 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"><g><title></title><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"><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"><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://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.8.0">Worklets 0.8 - Shareable, Bundle mode improvements</a></p><p>It&#8217;s now easier to use the Bundle mode, which unlocks running <a href="https://x.com/swmansion/status/2036489933490110922">more complex things in background threads</a>. Also read the dedicated article on <a href="https://x.com/swmansion/status/2034667004297183312">Shareable &#8211; shared memory&#8217;s missing piece</a>, a runtime-bound shared memory primitive that was extracted from Reanimated, and that you can now use for non-animation use cases too!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128272; <a href="https://www.aikido.dev/blog/glassworm-strikes-react-packages-phone-numbers">Glassworm Strikes Popular React Native Phone Number Packages in Supply Chain Attack</a> - Affects <code>react-native-country-select</code> and <code>react-native-international-phone-number</code>.</p></li><li><p>&#128220; <a href="https://codewithbeto.dev/blog/glow-input-reanimated-css">Glow Effect on TextInput with Reanimated CSS Animations</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-fieldy-adopted-expo-for-their-ai-wearable">From skeptic to convert: how Fieldy adopted Expo for their AI wearable</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases">Reanimated 4.3 - CSS animations for SVG, Shared Values on multiple threads, typesafety</a></p></li><li><p>&#128230; <a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation%2Fcore%407.17.0">React Navigation 7.17 - New </a><code>.with()</code><a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation%2Fcore%407.17.0"> method on static config to add a wrapper around the navigator</a> - Also available in v8.alpha. React Navigation <a href="https://x.com/reactnavigation/status/2036819119194964031">wants us to use the Static API</a> more. It unlocks automatic type inference and deep linking, and yet covers most dynamic use cases.</p></li><li><p>&#128230; <a href="https://github.com/googlemaps/react-native-navigation-sdk">React Native Navigation SDK</a> - TIL that Google provides an official React Native library for Google Maps (in beta).</p></li><li><p>&#128230; <a href="https://www.swift.org/blog/swift-6.3-released/">Swift 6.3 - C interop, module selectors, Swift Build preview, Android SDK, and more</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v0.2.0">Nitro Fetch 0.2 - Add support for Streaming, formData, AbortController, RN 0.85</a></p></li><li><p>&#128230; <a href="https://github.com/microsoft/react-native-windows/releases/tag/react-native-windows_v0.82.0">React Native Windows 0.82 - New-Architecture only</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases">Rozenite 1.5 &amp; 1.6 - DevTools for AI Agents, new File System plugin</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-mmkv/releases/tag/v4.3.0">MMKV 4.3 - MMKV upgrade, </a><code>compareBeforeSet</code><a href="https://github.com/mrousavy/react-native-mmkv/releases/tag/v4.3.0"> optimization, configure default log level at build time</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.6.0">Uniwind 1.6 - Border curve utilities</a></p></li><li><p>&#128230; <a href="https://github.com/wix/Detox/releases">Detox 20.48-50 - Support simulator launch </a><code>--arch</code><a href="https://github.com/wix/Detox/releases">, liquidGlass overlay</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.10.0">Agent Device 0.10 - Can control macOS apps</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=zUfPhL_EU2Y">Beto - React Navigation v8 Crash Course &#8212; Liquid Glass, Tabs &amp; More</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=OwgUx22bU0U">notJust.dev - State of React Native - What&#8217;s new in 2026</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-357-react-native-082084-expo-55">RNR 357 - React Native 0.82&#8211;0.84 &amp; Expo 55</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://shift.infinite.red/fix-flaky-jest-tests-in-ci-with-maxworkers-and-why-it-works-e3d3189f35a4">Fix Flaky Jest Tests in CI with maxWorkers (and why it works)</a> - Tests parallelization can lead to timeouts, but you can fine-tune parameters to reduce test time and flakiness.</p></li><li><p>&#128220; <a href="https://adventures.nodeland.dev/archive/who-is-responsible-for-ai-generated-code/">Who Is Responsible for AI-Generated Code?</a> - Will Node.js ban AI-generated code from its core, even when there&#8217;s a human in the loop?</p></li><li><p>&#128220; <a href="https://43081j.com/2026/03/three-pillars-of-javascript-bloat">The Three Pillars of JavaScript Bloat</a></p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/">TypeScript 6.0</a> - A &#8220;bridge&#8221; release toward the 7.0 Go rewrite, which is almost complete. This release also changes defaults (<code>strict: true</code>, <code>types: []</code>...), improves subpath imports, adds types for Temporal and upsert, and more.</p></li><li><p>&#128230; <a href="https://jovidecroock.com/blog/mixed-signals/">Mixed Signals - Bridging the Server-Client Boundary with Signals</a> - The Preact team is working on a new transport-agnostic solution in which the reactive signal graph spans the network boundary.</p></li><li><p>&#128230; <a href="https://wasmer.io/posts/edgejs-safe-nodejs-using-wasm-sandbox">Edge.js - Running Node apps inside a WebAssembly Sandbox</a></p></li><li><p>&#128230; <a href="https://zero.rocicorp.dev/docs/release-notes/1.0">Zero 1.0 - Sync engine is now stable e</a></p></li><li><p>&#128230; <a href="https://arrow-js.com/">ArrowJS - UI framework for the agentic era</a></p></li><li><p>&#128230; <a href="https://valibot.dev/blog/valibot-v1.3-release-notes/">Valibot 1.3 - Smarter pipelines, result caching, and new validators</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hu_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53329bea-59b9-41aa-81ad-3ecc1557a3e4_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_!Hu_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Hu_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53329bea-59b9-41aa-81ad-3ecc1557a3e4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!rqty!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rqty!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rqty!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rqty!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rqty!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rqty!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg" width="1000" height="307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:307,&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_!rqty!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rqty!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rqty!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rqty!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aa761bc-7d70-40e7-8b51-5ff8b4087b5e_1000x307.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"><svg role="img" 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"><g><title></title><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"><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"><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 #273]]></title><description><![CDATA[&#9883;&#65039; RedwoodSDK, Next.js, TanStack, RSC, Async React, SSR, Base UI, AI | &#128241; Expo UI, Ease, Expo APIs, Keyboard, Flow, DnD, AI | &#128256; TC39, Temporal, Vite, Vite+, Vitest, Oxlint, Node.js, Bun]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-273</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-273</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 20 Mar 2026 14:34:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4Ntm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.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, RedwoodSDK 1.0 dropped, and other meta-frameworks improved their SSR performance. A bunch of content related to Async React and the TanStack too!</p><p>On the React Native side, Expo UI support for Jetpack Compose is quite exciting. A new animation library could also be an interesting alternative to Reanimated CSS transitions.</p><p>Temporal has finally reached stage 4! We also have great announcements from the Vue.js conf that remain relevant for React developers, notably Vite 8.</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_!HvBH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HvBH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HvBH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HvBH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HvBH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HvBH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/795ff951-5f98-4d6a-b002-7a0b1d4729b5_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_!HvBH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HvBH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HvBH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HvBH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F795ff951-5f98-4d6a-b002-7a0b1d4729b5_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!XtrK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XtrK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XtrK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XtrK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XtrK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XtrK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b6955c1-4b49-4e93-b21d-b10145b09618_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;Cut Code Review Time &amp; Bugs in Half&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="Cut Code Review Time &amp; Bugs in Half" title="Cut Code Review Time &amp; Bugs in Half" srcset="https://substackcdn.com/image/fetch/$s_!XtrK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XtrK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XtrK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XtrK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b6955c1-4b49-4e93-b21d-b10145b09618_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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/twir">Cut Code Review Time &amp; Bugs in Half</a></strong></p><p>Code reviews are critical but time-consuming. CodeRabbit acts as your AI co-pilot, providing instant Code review comments and potential impacts of every pull request.</p><p>Beyond just flagging issues, CodeRabbit provides one-click fix suggestions and lets you define custom code quality rules using AST Grep patterns, catching subtle issues that traditional static analysis tools might miss.</p><p>CodeRabbit reviews 1 million PRs every week across 3 million repositories and is used by 100 thousand Open-source projects.</p><p>CodeRabbit is free for all open-source repo&#8217;s.</p><p><a href="https://coderabbit.link/twir">Get Started Today</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!4Ntm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Ntm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Ntm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Ntm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Ntm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Ntm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg" width="1000" height="528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:528,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;RedwoodSDK 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="RedwoodSDK 1.0" title="RedwoodSDK 1.0" srcset="https://substackcdn.com/image/fetch/$s_!4Ntm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Ntm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Ntm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Ntm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46556031-4c15-430c-ba30-aa1f76939162_1000x528.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"><svg role="img" 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"><g><title></title><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"><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"><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://rwsdk.com/">RedwoodSDK 1.0</a></strong></p><p>The former RedwoodJS meta-framework has <a href="https://rwsdk.com/blog/redwoodjs-to-redwoodsdk">pivoted to RedwoodSDK</a>, and it now has its first stable release. This time, it bets on Vite, React Server Components, and Cloudflare (using Durable Objects for its <code>useSyncedState()</code> realtime feature). It promises explicit APIs for clarity (no convention, no magic behavior) through composable web-based primitives.</p><p>The choice of being tightly coupled to Cloudflare might surprise you, but they explain it in this <a href="https://rwsdk.com/blog/why-cloudflare-unified-platform">article</a>. They are building abstractions on top of Cloudflare Bindings and Durable Objects to become service-agnostic while remaining platform-optimized. Similarly, Evan You has recently announced <a href="https://void.cloud/">Void.cloud</a> &#8211; a Vite-native deployment platform based on Cloudflare &#8211; and explained that <a href="https://x.com/youyuxi/status/2032501581644497139">&#8220;the lock-in is what makes the DX possible&#8221;</a>. Time will tell how this story compares to Next.js and OpenNext &#129322;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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>&#128064; <a href="https://github.com/vercel/next.js/pull/90933">Next.js PR - Update vercel/og and Satori</a> - This greatly improves the performance of <code>ImageResponse</code> and unlocks new features.</p></li><li><p>&#128467; <a href="https://react.paris/?utm_source=thisweekinreact">React Paris - Workshop Day</a> - &#127467;&#127479; Paris - 25 Mar. Deep-dive into React Query and/or nuqs with industry experts. Limited seats available &#8212; get 50% off with code &#8220;TWIR_WS&#8221;.</p></li><li><p>&#128220; <a href="https://www.aha.io/engineering/articles/why-we-rolled-our-own-rsc-framework">Why we rolled our own React Server Components framework</a> - The Aha! engineering team built their own customizable RSC framework. The Vite RSC plugin absorbs much of the complexity. This article shows how you can do it too, and when it could make sense to do so.</p></li><li><p>&#128220; <a href="https://x.com/alvinsng/status/2033969062834045089">Why we banned React&#8217;s useEffect</a> - The Factory team chose to forbid direct usage of <code>useEffect()</code> through an ESLint rule, reducing bugs and complexity. Its usage often compensates for something React already gives better primitives for.</p></li><li><p>&#128220; <a href="https://dev.to/playfulprogramming/two-react-design-choices-developers-dont-like-but-cant-avoid-d6g">Two React Design Choices Developers Don&#8217;t Like&#8212;But Can&#8217;t Avoid</a> - Ryan Carniato explains why React defers state updates and has an effect dependency array. While designing Solid 2.0, he realized that the Async world has constraints that even signal-based frameworks need to take into consideration.</p></li><li><p>&#128220; <a href="https://blog.platformatic.dev/react-ssr-framework-benchmark-tanstack-start-react-router-nextjs">React SSR Benchmark: TanStack, React Router, Next.js</a> - A stress-test of popular React meta-frameworks that led framework authors to fix many performance bottlenecks.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-start-5x-ssr-throughput">TanStack Start - 5x SSR Throughput after profiling SSR Hot Paths</a> - Based on the benchmark above, the TanStack team explains the methodology used to uncover SSR bottlenecks and how they significantly improved the performance under heavy load.</p></li><li><p>&#128220; <a href="https://www.nonsoo.com/posts/async-react">From Fiber to Async React</a> - An interactive deep dive into React Async features.</p></li><li><p>&#128220; <a href="https://inside-react.vercel.app/blog/making-sense-of-key-prop-in-react">Making sense of &#8216;key&#8217; prop in React</a> - A refresher on why keys matter and how <code>index</code> or <code>Math.random()</code> can break state and reconciliation.</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-mar18">Product for Engineers - The engineeringification of everything</a></p></li><li><p>&#128230; <a href="https://nextjs.org/blog/next-16-2-ai">Next.js 16.2 - AI Improvements</a> - Agents are asked to read versioned docs at <code>node_modules/next/dist/docs/</code>, browser logs can be forwarded to the terminal, Dev Server lockfile, and a new experimental agent DevTools CLI.</p></li><li><p>&#128230; <a href="https://github.com/hakimel/reveal.js/releases/tag/6.0.0">Reveal.js 6.0 - Presentation Framework - New </a><code>@revealjs/react</code><a href="https://github.com/hakimel/reveal.js/releases/tag/6.0.0"> integration package</a></p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-3-0">Base UI 1.3 - Drawer is stable, Label for Combobox/Select/Slider, and more</a></p></li><li><p>&#128230; <a href="https://vercel.com/changelog/streamdown-2-5">Streamdown 2.5 - Inline KaTeX support, staggered streaming animations, and more</a></p></li><li><p>&#128230; <a href="https://vercel.com/changelog/ai-elements-1-9">AI Elements 1.9 - New JSXPreview to render incomplete JSX, agent skills, and more</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/query/releases/tag/%40tanstack/query-core%405.91.0">TanStack Query 5.91 - New </a><code>environmentManager</code><a href="https://github.com/TanStack/query/releases/tag/%40tanstack/query-core%405.91.0"> API</a></p></li><li><p>&#128377;&#65039; <a href="https://cant-maintain.saschb2b.com/">Can&#8217;t Maintain - React Component API Game</a> - A fun interactive quiz to teach you component API design lessons.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=9yI5cgFAhTw">Alem Tuzlak - TanStack AI Just Got a Huge Upgrade: Generation Hooks, Lazy Tools, Realtime &amp; Middleware</a> - On the <a href="https://tanstack.com/blog">TanStack blog</a>, you&#8217;ll find many updates about their AI packages. Not strictly about React, but you&#8217;ll learn about React-specific integrations such as a <code>useRealtimeChat()</code> that hides the complexity of connecting directly to a voice AI provider, or generation hooks that integrate nicely with TanStack Start.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=yti156CvGlc">Austin Davis - I Tried TanStack Form and I&#8217;m Not Going Back</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/988/cloudflare-s-next-js-slop-fork">Syntax.fm 988 - Cloudflare&#8217;s Next.js Slop Fork</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_!og06!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!og06!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!og06!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!og06!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!og06!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!og06!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b11b996c-593a-47a7-9998-d11e7aa42499_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_!og06!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!og06!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!og06!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!og06!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11b996c-593a-47a7-9998-d11e7aa42499_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!x5aj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x5aj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x5aj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x5aj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x5aj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x5aj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg" width="1430" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f39f149-a35a-49fd-ae2c-0d8053cfffc9_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_!x5aj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x5aj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x5aj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x5aj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f39f149-a35a-49fd-ae2c-0d8053cfffc9_1430x715.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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!x4yS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x4yS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x4yS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x4yS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x4yS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x4yS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfbe26a3-3f21-4b16-9398-fea14e6ef998_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 UI in SDK 55&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 UI in SDK 55" title="Expo UI in SDK 55" srcset="https://substackcdn.com/image/fetch/$s_!x4yS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x4yS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x4yS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x4yS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfbe26a3-3f21-4b16-9398-fea14e6ef998_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"><svg role="img" 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"><g><title></title><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"><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"><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/blog/expo-ui-in-sdk-55-jetpack-compose-now-available-for-react-native-apps">Expo UI in SDK 55 - Jetpack Compose now available</a></strong></p><p>Expo SDK 55 brings major updates to Expo UI, moving Jetpack Compose support to beta and refining SwiftUI APIs to match Apple&#8217;s official conventions more closely. Instead of reimplementing native components in JavaScript, Expo UI exposes the native UI frameworks directly to React Native.</p><ul><li><p><strong>Jetpack Compose support:</strong> now includes enough Material Design 3 components (like <code>LazyColumn</code>, <code>ModalBottomSheet</code>, and <code>DockedSearchBar</code>) to build complete apps, which was validated by building a full Wikipedia clone.</p></li><li><p><strong>SwiftUI: now it feels like SwiftUI:</strong> renamed and restructured SwiftUI components to match their SwiftUI counterparts. <code>DateTimePicker</code> is now <code>DatePicker</code>, <code>Switch</code> is now <code>Toggle</code>, and <code>CircularProgress</code> is now <code>ProgressView</code>.</p></li><li><p><strong>Familiar API surface:</strong> It uses React&#8217;s compound component pattern (e.g., <code>ListItem.Leading</code>) to express Compose&#8217;s composable lambdas in JSX, and aligns the modifier system so it works consistently across platforms.</p></li><li><p><strong>AI-Friendly:</strong> Because the APIs intentionally mirror native Compose and SwiftUI documentation, AI assistants can easily generate correct Expo UI code relying on their existing native training data.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!zc9u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zc9u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zc9u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zc9u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zc9u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zc9u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg" width="1105" height="317" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:317,&quot;width&quot;:1105,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native Ease - Lightweight declarative animations powered by platform APIs&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 Ease - Lightweight declarative animations powered by platform APIs" title="React Native Ease - Lightweight declarative animations powered by platform APIs" srcset="https://substackcdn.com/image/fetch/$s_!zc9u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zc9u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zc9u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zc9u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8edfc56-0760-49ad-ac36-441b75251829_1105x317.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"><svg role="img" 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"><g><title></title><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"><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"><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/AppAndFlow/react-native-ease">React Native Ease - Lightweight declarative animations powered by platform APIs</a></strong></p><p>New animation library designed to handle simple transitions with maximum performance. While Reanimated is incredibly flexible, it runs JS on every frame on the UI thread, which can be overkill and cause flickering if the thread lags. <code>react-native-ease</code> solves this by leveraging Core Animation on iOS and Animator on Android directly, resulting in zero JS overhead.</p><ul><li><p><strong>CSS-like API:</strong> Offers a highly simplified, declarative API inspired by CSS transitions. You simply wrap elements in an <code>&lt;EaseView&gt;</code> component and pass an <code>animate</code> prop.</p></li><li><p><strong>Built for the basics:</strong> Perfect for non-layout properties like opacity, transforms, background color, and border radius. It prevents the need to create hundreds of shared values just for simple press animations in lists.</p></li><li><p><strong>AI Migration Skill:</strong> It includes an AI agent skill that can automatically scan your codebase, identify simple Animated/Reanimated implementations, and migrate them over to <code>react-native-ease</code>.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/the-next-generation-of-expo-apis-medialibrary-and-contacts">The next generation of Expo APIs: MediaLibrary and Contacts</a> - Following the Filesystem update, Contacts and Media Library are getting the new object-oriented API treatment. The use of Shared Objects and Shared Refs offers better performance and simpler querying through deeper native module integration.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/handling-navigation-in-react-native-brownfield-apps">Handling Navigation in React Native Brownfield Apps</a> - Navigation for brownfield apps can be tricky. <code>@callstack/brownfield-navigation</code> aims to simplify this process by wiring navigation in a clean, typed, and maintainable way.</p></li><li><p>&#128230; <a href="https://kirillzyusko.github.io/react-native-keyboard-controller/blog/chat-scroll-view">Keyboard Controller 1.2 - Chat Scroll View</a> - Tackles layout thrashing during keyboard animations. This <a href="https://medium.com/@iosemagno/how-we-eliminated-keyboard-animation-stutter-in-flutter-and-why-the-same-problem-haunts-react-2e15c37438b0">related article</a> explains why Flutter and React Native suffer from the same keyboard animation stutter.</p></li><li><p>&#128230; <a href="https://github.com/jbroma/fast-flow-transform">Fast Flow Transform - Strip Flow types 20x faster than with Babel</a> - This tool might help remove Babel entirely from your React Native pipeline and adopt a full Rust-based toolchain. Note that SWC is also working on <a href="https://github.com/swc-project/swc/pull/11702">Flow types stripping</a>.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/react-native-sandbox/releases/tag/v0.5.0">React Native Sandbox 0.5 - Now supports Android</a> - Allows you to run multiple, isolated React Native instances within a single application</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/pull/214">Agent Device 0.8.4 - Screenshot diff support</a> - CLI tool for pixel-level image comparison.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-streamdown">React Native Streamdown - Markdown streaming for React Native</a> - Can render incomplete Markdown documents, useful for streaming LLM chats.</p></li><li><p>&#128230; <a href="https://github.com/entropyconquers/react-native-reanimated-dnd">React Native Reanimated DnD 2.0 - Drag-and-drop library using Reanimated 4 and Gesture Handler</a></p></li><li><p>&#128230; <a href="https://github.com/dannyhw/vite-plugin-rnw/releases/tag/v0.0.11">Vite Plugin RNW 0.0.11 - Vite 8 support for React Native Web</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Z3FoZ4r_WY8">Simon Grimm - How to Build Smart TV Apps with React Native (Vega OS Guide)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=oAIqn44Y63c">Beto - This New React Native Animation Library Is Insane (Ease)</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=uI_8SP7awsA&amp;list=PLSk21zn8fFZDX-LeaD7C3HjUr-R7a6-Kg">Software Mansion Podcast 1 - AI Made 20 Years of Learning Obsolete in 2 Months &#8211; Simon Grimm x Tomek Zawadzki</a> - SWM is launching its new React Native podcast, while Rocket Ship is <a href="https://podcast.galaxies.dev/episodes/why-i-m-pausing-the-rocket-ship-podcast-for-now">taking a break</a>.</p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-356-how-vercel-built-the-v0-app-with-react-native">React Native Radio 356 - How Vercel Built the v0 App with React Native</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://socket.dev/blog/tc39-advances-temporal-to-stage-4">TC39 Advances Temporal to Stage 4 Alongside Several ECMAScript Proposals</a> - Great news for Temporal, being standardized in ECMAScript 2026. Import Text is also super useful and now stage 3.</p></li><li><p>&#128220; <a href="https://bloomberg.github.io/js-blog/post/temporal/">Temporal: The 9-Year Journey to Fix Time in JavaScript</a> - From the origins of the Date API to the backstory of how Temporal got standardized. Remains to define how it will integrate with existing Web APIs, such as date inputs.</p></li><li><p>&#128220; <a href="https://blog.platformatic.dev/why-nodejs-needs-a-virtual-file-system">Why Node.js Needs a Virtual File System</a> - A <code>node:vfs</code> API should land as experimental in Node 24, and polyfills are already available for Node 22. Being able to load code generated at runtime can be quite useful!</p></li><li><p>&#128230; <a href="https://vite.dev/blog/announcing-vite8">Vite 8.0 - Faster Rust-based Rolldown bundler</a> - A major Vite release just dropped, based on the new unified Rust-based toolchain. The React plugin is also updated, and there&#8217;s a compatibility preset for the React Compiler.</p></li><li><p>&#128230; <a href="https://voidzero.dev/posts/announcing-vite-plus-alpha">Vite+ Alpha - The Unified Toolchain for the Web</a> - The Void0 company finally decided that it will be free and under MIT license.</p></li><li><p>&#128230; <a href="https://oxc.rs/blog/2026-03-11-oxlint-js-plugins-alpha">Oxlint JS Plugins Alpha</a> - Oxlint is already compatible with many ESLint rules, including React hooks and React Compiler rules. What&#8217;s most interesting is how they achieve good performance thanks to the low-level &#8220;raw transfer&#8221; mechanism.</p></li><li><p>&#128230; <a href="https://vitest.dev/blog/vitest-4-1.html">Vitest 4.1 - Support for Vite 8, test tags, new </a><code>aroundEach/All</code><a href="https://vitest.dev/blog/vitest-4-1.html"> hooks, and more</a></p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.11">Bun 1.3.11 - </a><code>Bun.cron</code><a href="https://bun.com/blog/bun-v1.3.11">, smaller on Linux, many bugfixes</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8e8d36f-e886-4dff-81d2-b7f0214f0e9a_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_!LNY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!LNY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8e8d36f-e886-4dff-81d2-b7f0214f0e9a_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!Mc0d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mc0d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mc0d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mc0d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mc0d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mc0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg" width="1000" height="1118" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1118,&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_!Mc0d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mc0d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mc0d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mc0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d92c1b-6c45-4a61-a582-575c1d647157_1000x1118.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"><svg role="img" 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"><g><title></title><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"><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"><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 272]]></title><description><![CDATA[Astro, Compiler, Next.js, shadcn, Aria, Helmet, Preact | Navigation, Expo Agent, Observe, Widgets, Activity, Evals, MMKV, Hermes | Node.js, Source Maps, TanStack Intent, TypeG]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-272</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-272</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 13 Mar 2026 14:29:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3NsF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone! <strong>Filip and Tymek from <a href="https://swmansion.com/?utm_source=thisweekinreact">Software Mansion</a></strong> here! &#128075;</p><p>Hope your week is going well &#128516; In today&#8217;s news, we bring you a slightly calmer React section, but there is much more going on in React Native. Astro 6.0 has been released, Expo announces an agentic platform and new SDK for observability and metrics, and React Navigation developers are planning to add a new way to load data in screens.</p><p>There&#8217;s more &#8212; interesting canary PRs for Next.js, React Native Evals, TypeScript 6.0 RC announcement, new guides from Expo, and beyond!</p><p>Let&#8217;s dive deep into the content &#127881;</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_!fmmY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fmmY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fmmY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fmmY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fmmY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fmmY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da044907-5d20-4e48-9457-324fe44b2d83_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_!fmmY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fmmY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fmmY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fmmY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda044907-5d20-4e48-9457-324fe44b2d83_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!ZLCI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZLCI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZLCI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZLCI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZLCI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZLCI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg" width="1456" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Next.js Source Maps: From Random Chunks to Real Code&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 Source Maps: From Random Chunks to Real Code" title="Next.js Source Maps: From Random Chunks to Real Code" srcset="https://substackcdn.com/image/fetch/$s_!ZLCI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZLCI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZLCI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZLCI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc00bd098-fac7-4bfb-b78f-6c1c8147d6df_2520x945.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"><svg role="img" 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"><g><title></title><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"><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"><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/setting-up-next-js-source-maps-sentry/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjs&amp;utm_content=newsletter-first-sponsor-blog-sourcemaps-learnmore">Next.js Source Maps: From Random Chunks to Real Code</a></strong></p><p>When <a href="https://sentry.io/for/nextjs/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjs&amp;utm_content=newsletter-first-sponsor-product-trysentry">Next.js builds your app</a>, it compiles and minifies your code into chunks like <strong>static/chunks/12345-something.js</strong>. When errors happen, your stack traces point there. Not to the code you actually wrote.</p><p>This blog walks through how <strong>source maps</strong> and <strong>debug IDs</strong> wire things together, and how to configure Sentry to show real file names and line numbers in production.</p><ul><li><p>What actually happens to your code during build</p></li><li><p>Why dev tools show readable traces but Sentry shows chunks</p></li><li><p>How to simulate a production build so Sentry gets your source maps</p></li><li><p>Troubleshooting missing or stale source maps</p></li></ul><p><strong><a href="https://blog.sentry.io/setting-up-next-js-source-maps-sentry/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjs&amp;utm_content=newsletter-first-sponsor-blog-sourcemaps-learnmore">Read the guide &#10145;&#65039;</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!3NsF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3NsF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3NsF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3NsF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3NsF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3NsF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg" width="1456" height="624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:624,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Astro 6.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="Astro 6.0" title="Astro 6.0" srcset="https://substackcdn.com/image/fetch/$s_!3NsF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3NsF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3NsF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3NsF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7457220-1e63-4cbf-afa8-28a9535750b6_1500x643.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"><svg role="img" 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"><g><title></title><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"><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"><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://astro.build/blog/astro-6/">Astro 6.0</a></strong></p><p>Astro 6.0 is out with a redesigned dev server, built-in font optimization, live content collections, and stable CSP support. It requires Node 22+, Vite 7, and Zod 4.</p><p>Here&#8217;s what&#8217;s new:</p><ul><li><p>Rebuilt on Vite&#8217;s Environment API web server, so you now run your exact production runtime locally.</p></li><li><p>Built-in Fonts API - configure fonts from local files or providers like Google. Astro handles backbone logic, including downloading, caching, and preloading links.</p></li><li><p>Stable CSP support - with one config flag, Astro auto-hashes scripts and styles, and generates headers.</p></li><li><p>Experimental Rust compiler - drop-in replacement for the Go-based compiler with better performance and diagnostics via <code>@astrojs/compiler-rs</code>.</p></li><li><p>Experimental queued rendering and route caching.</p></li></ul><p>To upgrade to the latest Astro version, all you need to do is execute <code>npx @astrojs/upgrade</code> - an interactive CLI will handle the rest.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-mar11">Product for Engineers - The hidden danger of shipping fast</a></p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/90701">Next.js PR - Add Link </a><code>transitionTypes</code><a href="https://github.com/vercel/next.js/pull/90701"> prop</a> - Calls <code>React.addTransitionType</code> for each type during navigation, making it easy to trigger custom View Transitions per link.</p></li><li><p>&#128038; <a href="https://x.com/en_JS/status/2031606726689173846">Joe Savona - &#8220;React Compiler: Rust edition is coming soon&#8221;</a> - They are apparently porting the TypeScript-based compiler to Rust using AI.</p></li><li><p>&#128220; <a href="https://inside-react.vercel.app/blog/how-state-updates-work-internally">How state updates work internally</a> - A detailed technical explanation of why <code>setState</code> doesn&#8217;t update the value immediately. Walks through Fiber&#8217;s linked-list hook storage and shows why setting state via function versus value behaves differently when called multiple times.</p></li><li><p>&#128220; <a href="https://www.patreon.com/posts/seven-years-to-typescript-152144830">Seven Years to TypeScript: Migrating 11,000 Files at Patreon</a> - Documents Patreon&#8217;s full frontend migration from JS to TS across 11,000 files and 1M+ lines of code, including old React conventions, patterns, and APIs (React Classes, PropTypes, HOC). The real work came in phases - building typed foundations first, then combining codemods and AI workflows.</p></li><li><p>&#128220; <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-cloudflare-rewrites-nextjs">Cloudflare rewrites Next.js as AI rewrites commercial open source</a> - A well-sourced summary of Cloudflare&#8217;s Vinext situation. It will likely take more than a rewrite to make it a viable solution.</p></li><li><p>&#128220; <a href="https://amplifying.ai/research/claude-code-picks">What Claude Code Actually Chooses</a> - Analyzed 2,430 real Claude Code sessions across 20 tool categories. Depicts which React libs Claude picks, driving extra growth.</p></li><li><p>&#128220; <a href="https://www.smashingmagazine.com/2026/03/building-dynamic-forms-react-next-js/">Building Dynamic Forms In React And Next.js</a> - Compares two approaches to complex forms: component-driven versus schema-driven (SurveyJS).</p></li><li><p>&#128220; <a href="https://dev.to/link2twenty/react-singletons-arent-as-evil-as-you-think-44m8">React: Singletons aren&#8217;t as evil as you think</a> - Shows the better solution for the popular Singleton pattern in React by using the approach with <code>TypedEvent</code> and <code>useSyncExternalStore</code>.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/tutorials/access-react-router-context-with-asynclocalstorage">How to Access React Router Context with AsyncLocalStorage</a> - Shows how to use Node&#8217;s <code>AsyncLocalStorage</code> to store request-scoped data. Cleaner than prop-drilling through your whole route tree.</p></li><li><p>&#128220; <a href="https://dev.to/unadlib/react-compiler-and-beyond-capability-boundaries-of-compiler-driven-ui-frameworks-4928">React Compiler and Beyond: Capability Boundaries of Compiler-Driven UI Frameworks</a> - A comparison between the React Compiler and Fict, a compiler-first framework that moves dependency tracking to compile time and propagates updates through a signal graph instead.</p></li><li><p>&#128184; <a href="https://certificates.dev/blog/react-docs-refresh-useactionstate-and-useoptimistic-if-you-tried-learning-useactionstate-or-useoptimistic-from-the-original-react-19-docs-and-came-away-confused-now-is-a-great-time-to-go-back-both-pages-have-been-completely-reworked-with-ne?friend=TWIR">Certificates.dev - React Docs Refresh: useActionState and useOptimistic by Aurora Scharff</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-03-cli-v4">shadcn/cli 4.0 - Skills, presets, dry-run, diff, monorepo, updated primitives</a></p></li><li><p>&#128230; <a href="https://github.com/staylor/react-helmet-async/pull/260">React Helmet Async 3.0 - React 19 support</a></p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-16-0.html">React Aria 1.16 - Multi-select ComboBox, Tree Sections</a></p></li><li><p>&#128230; <a href="https://react-spectrum.adobe.com/releases/v1-2-0.html">React Spectrum 1.2 - ListView, unavailable menu items</a></p></li><li><p>&#128230; <a href="https://vercel.com/changelog/streamdown-2-4">Streamdown 2.4 - Customization hooks, accessibility features</a></p></li><li><p>&#128230; <a href="https://github.com/preactjs/preact/releases/tag/10.29.0">Preact 10.29 - Implement </a><code>flushSync</code></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=S26VdcWQzRQ">Web Dev Simplified - New Tanstack Hotkeys Library is Amazing</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=uNR28b8fgpg">Shruti Kapoor - Image Asset Optimizations: Performance Optimizations in React</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=U7ghineC5Zs">Hamed Bahram - TanStack Start: Server Components Without the Mental Gymnastics, with Tanner Linsley</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_!yCSE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yCSE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yCSE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yCSE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yCSE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yCSE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3bde0fd-963a-411c-ab1a-8b945bfe3e29_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_!yCSE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yCSE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yCSE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yCSE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3bde0fd-963a-411c-ab1a-8b945bfe3e29_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!rJBa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rJBa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rJBa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rJBa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rJBa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rJBa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6468474a-95e1-45d6-857a-701d80a9934d_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_!rJBa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rJBa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rJBa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rJBa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6468474a-95e1-45d6-857a-701d80a9934d_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&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=2nd">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=2nd">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=2nd">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!KRaW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KRaW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KRaW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KRaW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KRaW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KRaW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg" width="1000" height="451" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Navigation 8 - March Progress Report&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 Navigation 8 - March Progress Report" title="React Navigation 8 - March Progress Report" srcset="https://substackcdn.com/image/fetch/$s_!KRaW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KRaW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KRaW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KRaW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa69390b7-c37e-44b8-a766-02323297a2f3_1000x451.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"><svg role="img" 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"><g><title></title><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"><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"><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://reactnavigation.org/blog/2026/03/10/react-navigation-8.0-march-progress/">React Navigation 8 - March Progress Report</a></strong></p><p>This week, the React Navigation team shares a progress update on the upcoming 8.0 release, which has been in alpha since December 2025.</p><p>The version bumps the minimum requirements to React 19 and React Native 0.83, unlocking native APIs like Activity and Suspense. Here&#8217;s what&#8217;s new:</p><ul><li><p><code>inactiveBehavior</code> option - allows control over how offscreen screens are handled</p></li><li><p>Deep links by default - static config now auto-converts screen names to URL paths, no explicit setup needed</p></li><li><p>Schema validation support - deep link params can be parsed and typed with Zod, Valibot, or ArkType</p></li><li><p>Native symbols - new SFSymbol and MaterialSymbol components for iOS and Android icon systems</p></li><li><p>Material Design 3 themes - MaterialLightTheme and MaterialDarkTheme using Android&#8217;s dynamic PlatformColor</p></li></ul><p>The beta will be released once the rewritten React Native Screens integration lands.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128227; <a href="https://expo.dev/blog/expo-agent-beta">Introducing Expo Agent (private beta): build real, production-quality native apps from your browser</a> - Expo is launching in private beta a new offer that lets you implement cross-platform apps directly from a web UI, with great DX. This looks particularly useful to have an agent trained to leverage the native platforms (SwiftUI/Jetpack Compose) or the scripting layer (RN/OTA) when appropriate.</p></li><li><p>&#128227; <a href="https://expo.dev/changelog/introducing-expo-observe">Introducing Expo Observe (private preview)</a> - New observability tool in private preview to track real-world app performance in production. Lets you compare across builds to catch regressions and drill into individual sessions for device info and P90/P99 percentiles.</p></li><li><p>&#128227; <a href="https://android-developers.googleblog.com/2026/03/a-new-era-for-choice-and-openness.html">Google is expanding billing choice on Google Play for users and developers</a> - Google now allows alternative billing systems on Google Play, cuts fees to 15&#8211;20% for apps and 10% for subscriptions, and simplifies sideloading of alternative app stores.</p></li><li><p>&#128064; <a href="https://github.com/react-navigation/react-navigation/pull/13001">React Navigation PR - Data Loading</a> - The library plans to tackle data loading, and prototyping new APIs such as <code>UNSTABLE_loader</code> and <code>UNSTABLE_getLoaderForRoute</code> to do so. This could help prefetch data for a route before navigating to it, improving the perceived performance and UX.</p></li><li><p>&#128038; <a href="https://x.com/tmikov/status/2029355999086493953">Tzvetan Mikov - &#8220;Hermes finally has native support for stripping erasable TypeScript annotations&#8221;</a> - Once released, Hermes will be able to run TypeScript code natively, without transpilation, similarly to what Node.js and Bun are doing.</p></li><li><p>&#128467;&#65039; <a href="https://paradise.swmansion.com/?utm_source=newsletter&amp;utm_medium=affiliate">React Native Paradise</a> &#8211; &#127469;&#127479; Vir, Croatia &#8211; April &amp; May. A week-long React Native workshop in a villa, in small groups, led by experienced devs from Software Mansion. Mention &#8220;TWIR&#8221; during your reservation and get 100 EUR off per person.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/home-screen-widgets-and-live-activities-in-expo">Home screen widgets and Live Activities in Expo</a> - An intro to expo-widgets, currently in alpha for iOS. This new widget solution leverages Expo UI to create a tree that maps directly to SwiftUI primitives.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/keeping-screens-visible-with-activity-mode-hidden">Keeping Screens Visible With </a><code>&lt;Activity mode="hidden&gt;"</code> - How to freeze effects on a hidden screen without breaking swipe-back gestures.</p></li><li><p>&#128220; <a href="https://bitglow.de/blog/app-flavors-with-expo-eas/">App Flavors with Expo &amp; EAS</a> - Useful to create variants of your app and white labelling.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/expo-brownfield-how-to-add-expo-to-your-existing-native-app-without-a-rewrite">Expo brownfield: How to add Expo to your existing native app without a rewrite</a></p></li><li><p>&#128220; <a href="https://codewithbeto.dev/blog/haptic-feedback-expo-router-native-tabs">Adding Haptic Feedback to Expo Router Native Tabs</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/react-native/releases/tag/v0.85.0-rc.0">React Native 0.85 rc.0 - Removed </a><code>Stylesheet.absoluteFill</code><a href="https://github.com/facebook/react-native/releases/tag/v0.85.0-rc.0">, dropped support for EOL Node.js versions</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/releases/tag/0.4.0">Enriched Markdown 0.4 - LaTeX Support, Image caching</a></p></li><li><p>&#128230; <a href="https://github.com/jpudysz/react-native-unistyles/releases/tag/v3.1.0">Unistyles 3.1 - Smaller babel plugin, StyleSheet.addChangeListener, optional edge-to-edge, Nitro 0.35+</a></p></li><li><p>&#128230; <a href="https://github.com/Shopify/flash-list/releases/tag/v2.3.0">FlashList 2.3 - New </a><code>inverted</code><a href="https://github.com/Shopify/flash-list/releases/tag/v2.3.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-mmkv/releases/tag/v4.2.0">MMKV 4.2 - </a><code>.length</code><a href="https://github.com/mrousavy/react-native-mmkv/releases/tag/v4.2.0">, new encryption features</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.5.0">Uniwind 1.5 - tv selectorn, focus selector for pressables</a></p></li><li><p>&#128230; <a href="https://github.com/Rednegniw/react-native-view-recorder">React Native View Recorder - Capture any React Native View to a video or an imager</a></p></li><li><p>&#128230; <a href="https://github.com/Guccio163/react-native-reshuffled">React Native Reshuffled - High-performance, Nitro-powered grid layout</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.4.0">Rozenite 1.4 - Storage-plugin, improved redux-devtools-plugin</a></p></li><li><p>&#128230; <a href="https://github.com/IronTony/rozenite-navigation-inspector">Rozenite Navigation Inspector - DevTools plugin for inspecting navigation state</a></p></li><li><p>&#128279; <a href="https://www.callstack.com/blog/announcing-react-native-evals">React Native Evals</a> - A proposition for a standardised benchmark of AI models against common React Native development tasks.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=dhN7eeqOVeE">Beto - 6 Expo UI Tricks That Save You Hours of Debugging</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-355-react-native-skia-for-high-performance-ui-with-william-candillon">RNR 355 - React Native Skia for High-Performance UI with William Candillon</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule">Node.js is moving to one major release per year, starting with Node 27</a></p></li><li><p>&#128220; <a href="https://bloomberg.github.io/js-blog/post/standardizing-source-maps/">Source Maps: Shipping Features Through Standards</a> - How Bloomberg helped standardize source maps, and a sneak peek at 5 improvement ideas being worked on.</p></li><li><p>&#128220; <a href="https://www.solberg.is/unknown-to-typed">Unknown to Typed</a> - How to deal with <code>unknown</code> data that arrives at your boundary. Every <code>as</code> in your TypeScript is a small lie and should be a conscious decision.</p></li><li><p>&#128220; <a href="https://blog.swmansion.com/breaking-down-the-jelly-slider-9ab9239f6d80">TypeGPU - Breaking out the jelly slider</a> - A breakdown of the jelly slider, which has recently attracted a lot of attention, from idea to implementation.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/from-docs-to-agents">TanStack Intent - A distribution model for agent skills</a> - Framework-agnostic CLI that lets library maintainers ship versioned &#8220;Agent Skills&#8221; alongside npm packages.</p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-rc/">TypeScript 6.0 RC</a> - The last JS-based release before the native Go port in 7.0. In many ways, it will act as the bridge between TypeScript 5.9 and 7.0.</p></li><li><p>&#128230; <a href="https://arktype.io/docs/blog/2.2">ArkType 2.2 - Validated functions, type-safe regex</a></p></li><li><p>&#128230; <a href="https://github.com/parcel-bundler/lightningcss/releases/tag/v1.32.0">Lightning CSS 1.32 - Mark imports as external, mix-blend-mode support, visitors can add dependencies</a></p></li><li><p>&#128230; <a href="https://www.bram.us/2026/03/11/view-transitions-mock-is-a-non-visual-polyfill-for-same-document-view-transitions/">View-Transitions-Mock - A non-visual Polyfill for Same-Document View Transitions</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Uw4b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b328e3-dbc7-4fc3-bde9-9df62050cecf_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_!Uw4b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Uw4b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b328e3-dbc7-4fc3-bde9-9df62050cecf_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!d3fe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d3fe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d3fe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d3fe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d3fe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d3fe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg" width="1000" height="979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:979,&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_!d3fe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d3fe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d3fe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d3fe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa065281b-d0e2-4a5d-b5e8-7e5c971b6320_1000x979.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"><svg role="img" 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"><g><title></title><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"><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"><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_!YQqK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YQqK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YQqK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YQqK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YQqK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YQqK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg" width="1000" height="850" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:850,&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_!YQqK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YQqK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YQqK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YQqK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3a06fe-5c2f-4fe1-b446-e717ff38654d_1000x850.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"><svg role="img" 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"><g><title></title><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"><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"><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 271]]></title><description><![CDATA[Vinext, RSC, Activity, Async React, Next.js, TanStack | Expo 55, Router, Survey, Enriched, Maestro, Metro, Sparkling, Grab, Brownfield | TC39, Temporal, Navigation, npmx, Bun, Deno, Solid]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-271</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-271</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 06 Mar 2026 13:39:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cEKd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>This week is rather quiet in the React world, so we took a step back on Vinext, found great community blog posts, and weak signals.</p><p>On the React Native side, let&#8217;s welcome our new author, <a href="https://x.com/jaworek3211">Jan Jaworski</a>, who covered the new Expo SDK and the State of React Native survey results, among many other things.</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_!1oY1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1oY1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1oY1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1oY1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1oY1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1oY1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6cfac9c1-0d18-4dcd-acbb-8256595a43e1_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_!1oY1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1oY1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1oY1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1oY1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfac9c1-0d18-4dcd-acbb-8256595a43e1_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!kNDX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kNDX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kNDX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kNDX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kNDX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kNDX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7abe84f4-9377-42b3-b847-11ba89ab2dfa_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_!kNDX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kNDX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kNDX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kNDX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7abe84f4-9377-42b3-b847-11ba89ab2dfa_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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=2nd">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=2nd">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=2nd">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><p><strong>What is Vinext really worth?</strong></p><p>Last week, we <a href="https://thisweekinreact.com/newsletter/270#react">covered Vinext</a>, Cloudflare&#8217;s AI-driven reimplementation of Next.js on top of Vite. Now that the dust has settled, let&#8217;s see what the community and the Next.js team have to say.</p><ul><li><p>&#128272; <a href="https://www.hacktron.ai/blog/hacking-cloudflare-vinext">Vibe-Hacking Cloudflare&#8217;s Vibe-Coded Next.js Replacement</a> - Show that AI-generated code passing functional tests can still miss security hardening, and automated AI tooling can help find those vulnerabilities.</p></li><li><p>&#128038; <a href="https://x.com/rauchg/status/2026864132423823499">Guillermo Rauch - &#8220;We&#8217;ve identified, responsibly disclosed, and confirmed 2 critical, 2 high, 2 medium, 1 low security vulnerabilities&#8221;</a></p></li><li><p>&#128038; <a href="https://x.com/feedthejim/status/2027156055617364272">Jimmy Lai mentions that Vinext&#8217;s 94% API coverage is misleading</a> - In reality, Vinext only passes a limited number of the 13,000+ Next.js test suite (13% dev, 20% e2e, 10% production). Many edge cases are likely misbehaving.</p></li><li><p>&#128038; <a href="https://x.com/dok2001/status/2027449223319351526">The </a><code>cio.gov</code><a href="https://x.com/dok2001/status/2027449223319351526"> website using Vinext is &#8220;basically a static site&#8221;</a> - This deployment doesn&#8217;t really dogfood the whole API surface of Next.js.</p></li><li><p>&#128214; <a href="https://vercel.com/kb/guide/migrate-to-vercel-from-cloudflare">Vercel docs - Migrate to Vercel from Cloudflare</a> - It&#8217;s no secret that Vercel/Cloudflare CEOs do not like each other. The timing of this newly published docs page feels&#8230; noteworthy.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=abbeIUOCzmw">Fireship - Cloudflare just slop forked Next.js</a></p></li></ul><p>While the AI-generated port is undeniably impressive, it&#8217;s likely too early to adopt it in production. It also remains unclear whether Cloudflare intends to support the project over the long term and make it production-ready.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://blog.sentry.io/setting-up-next-js-source-maps-sentry/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjs&amp;utm_content=newsletter-react-link-blog-sourcemaps-learnmore">Next.js minifies your code into mush. Source maps fix that. Learn how to wire up Sentry so your stack traces are actually readable</a></p></li><li><p>&#128227; <a href="https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-react-foundation">Linux Foundation Announces the Formation of the React Foundation</a></p></li><li><p>&#128064; <a href="https://github.com/reactjs/react.dev/pull/8300">React.dev PR - Add RSC Sandboxes</a> - The React docs website has merged infrastructure to run full-stack interactive playgrounds. However, it hasn&#8217;t been used on any public page yet. The server-related features (RSC, async components, use, Suspense, Server Functions, Actions, streaming) run locally in a Web Worker.</p></li><li><p>&#128064; <a href="https://github.com/TheAlexLichter/oxlint-react-compiler-rules">Oxlint + React Compiler Rules integration demo</a> - Oxlint supports loading ESLint plugins via the <code>jsPlugins,</code> so technically it can run the React Compiler rules too.</p></li><li><p>&#128214; <code>&lt;ViewTransition&gt;</code><a href="https://react.dev/reference/react/ViewTransition#animating-enter-exit-with-activity"> docs - New example - Animating enter/exit with Activity</a></p></li><li><p>&#128172; <a href="https://github.com/vercel/next.js/issues/85470">Next.js issue - Server requests and latency increased after upgrading from Next.js 15 to 16</a> - Users noticed an increase in server requests after upgrading. Andrew explains this is due to a new fine-grained segment prefetching system that maximizes caching efficiency. A new <code>prefetchInlining</code> flag is coming to give you control over this behavior until they implement a sensible heuristic.</p></li><li><p>&#128172; <a href="https://github.com/adobe/react-spectrum/discussions/9696#discussioncomment-15942257">Devon from React Aria explains the limits of the native </a><code>&lt;dialog&gt;</code><a href="https://github.com/adobe/react-spectrum/discussions/9696#discussioncomment-15942257"> vs JS/React abstractions</a></p></li><li><p>&#128467; <a href="https://reactsummit.com/?utm_source=thisweekinreact">React Summit</a> - &#127475;&#127473; Amsterdam - 12 &amp; 16 Jun. Join thousands of React devs live in Amsterdam or online. Learn from top contributors and enjoy the festival-style vibes! Register now using promo code TWIR (-10%)</p></li><li><p>&#128220; <a href="https://twofoldframework.com/blog/error-rendering-with-rsc">Error rendering with RSC</a> - Great deep-dive into how errors flow through the 3 RSC rendering environments (RSC server, SSR, browser). Only the browser supports Error Boundaries, so RSC/SSR errors need a clear path to reach the client side and get displayed.</p></li><li><p>&#128220; <a href="https://inside-react.vercel.app/blog/understanding-why-react-fiber-exists">Understanding Why React Fiber Exists</a> - Greatly explains why React abandoned recursive reconciliation in favor of the Fiber architecture, making it possible to pause rendering and accept new user inputs.</p></li><li><p>&#128220; <a href="https://www.mux.com/blog/react-is-changing-the-game-for-streaming-apps-with-the-activity-component">React is changing the game for streaming apps with the Activity component</a> - Practical use case for <code>&lt;Activity&gt;</code> to preserve playback state when hiding video/audio players. Don&#8217;t forget to pause the player using an Effect cleanup function.</p></li><li><p>&#128220; <a href="https://stackinsight.dev/blog/memory-leak-empirical-study/">Frontend Memory Leaks: A 500-Repository Static Analysis</a> - A study scanned 500 repos across many frameworks and breaks down the results. Gives an overview of the most frequent React-related memory leaks, notably the lack of a <code>useEffect</code> cleanup function.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/tutorials/create-a-per-request-database-instance-with-middleware">Create a Per-Request Database Instance with React Router Middleware</a> - Shows how to wrap each request in a database transaction.</p></li><li><p>&#128184; <a href="https://certificates.dev/laravel?friend=TWIR">Certificates.dev - Validate your cross-stack capability with a comprehensive Certification for Laravel. Limited-time launch offer: 40% off!</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/store/releases/tag/%40tanstack%2Fstore%400.9.0">TanStack Store 0.9 - API breaking changes, using faster alien-signals library</a></p></li><li><p>&#128230; <a href="https://github.com/vitejs/vite-plugin-react/releases/tag/plugin-react%406.0.0-beta.0">Vite Plugin React beta.0 - Drop Vite 7 support, remove Babel dependency</a></p></li><li><p>&#128230; <a href="https://aralroca.com/blog/next-translate-3-0">Next-translate 3.0 - Turbopack, Next.js 16, and a New Chapter</a></p></li><li><p>&#128230; <a href="https://marmelab.com/blog/2026/02/26/react-admin-february-2026-update.html">React-Admin 5.12, 5.13, 5.14 - February 2026 Update</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=EnzKA0fQkBM">Jack Herrington - TanStack Start SSR: 3 Reasons To Love It</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=KLRRstvrvVI">Josef Bender - New TanStack Package: Exclusive First Look</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/de32a7b9">This Month in React 2026-02 - CloudFlare remakes Next with AI; Vercel big mad. We talk too much about AI Agents</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_!zDem!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zDem!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zDem!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zDem!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zDem!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zDem!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebdf66f8-6fc2-4c9a-b012-125c67aeb132_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_!zDem!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zDem!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zDem!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zDem!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febdf66f8-6fc2-4c9a-b012-125c67aeb132_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!5ZrU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ZrU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5ZrU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5ZrU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5ZrU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ZrU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a98ef24a-d433-44f7-bc8c-de8f36929cd6_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;Add a powerful Form Builder to your app in hours!&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="Add a powerful Form Builder to your app in hours!" title="Add a powerful Form Builder to your app in hours!" srcset="https://substackcdn.com/image/fetch/$s_!5ZrU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5ZrU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5ZrU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5ZrU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa98ef24a-d433-44f7-bc8c-de8f36929cd6_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"><svg role="img" 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"><g><title></title><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"><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"><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://formengine.io/react-form-builder-library/?utm_source=thisweekinreact&amp;utm_medium=sponsor2-040326&amp;utm_campaign=mui-designer&amp;utm_content=dragdrop&amp;utm_term=deploy-across">Add a powerful Form Builder to your app in hours!</a></strong></p><p><strong>Why developers use it instead of building it?</strong></p><ul><li><p><strong>Plug &amp; play custom components:</strong> Wrap any React component and drop it into the builder &#8212; it just works. No internal APIs to learn, no hacky overrides</p></li><li><p><strong>Deep customization:</strong> Add custom validations, actions, and logic through a clean API</p></li><li><p><strong>JSON output you control:</strong> Every form saves as a portable JSON schema &#8212; store it, version it, own it</p></li><li><p><strong>Self-hosted &amp; white-label ready:</strong> Run it on your infrastructure, brand it as your own</p></li></ul><p><strong>Perfect for:</strong> internal tools, admin panels, no-code platforms, SaaS products with custom form needs, and enterprise workflow automation.</p><p><strong>Commercial license. Serious support. No vendor lock-in on your data.</strong></p><p>Quick Start &#8594; <strong>Working form builder embedded in your app in under an hour</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!spMO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!spMO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!spMO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!spMO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!spMO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!spMO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.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 55&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 55" title="Expo SDK 55" srcset="https://substackcdn.com/image/fetch/$s_!spMO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!spMO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!spMO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!spMO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5531a06d-275d-4e89-935a-25a4c3fb91cf_1600x900.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"><svg role="img" 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"><g><title></title><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"><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"><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-55">Expo SDK 55</a></strong></p><p>Expo SDK 55 is out now as a stable release! It brings React Native 0.83, React 19.2, Expo Router 55, and a massive amount of improvements across the entire ecosystem.</p><p><strong>React Native 0.82 &amp; 0.83 Highlights:</strong></p><ul><li><p><strong>The New Architecture</strong> is now a requirement. You can try out new AI skills to help you with the update process.</p></li><li><p><strong>React 19.2 Integration:</strong> Brings the new <code>&lt;Activity&gt;</code> API (for preserving state in hidden component trees) and <code>useEffectEvent</code>.</p></li><li><p><strong>DOM Node APIs:</strong> Native components now provide DOM-like nodes via refs, allowing you to traverse the UI tree and measure layouts just like on the web.</p></li><li><p><strong>Revamped DevTools:</strong> A brand-new DevTools desktop app that no longer requires a browser, featuring dedicated Network and Performance panels. Web Performance APIs are also now stable.</p></li><li><p><strong>Optimized Android Debugging:</strong> A new <code>debugOptimized</code> build type speeds up your dev environment, allowing animations and re-renders to hit ~60FPS while still allowing JS debugging.</p></li><li><p><strong>Experimental Hermes V1:</strong> Available as an opt-in, bringing meaningful performance improvements for bundle loading and Time to Interactive (TTI).</p></li></ul><p><strong>Expo SDK 55 Highlights:</strong></p><ul><li><p><strong><a href="https://expo.dev/blog/expo-router-v55-more-native-navigation-more-powerful-web">Expo Router v55</a></strong> <strong>with Native Features:</strong> Added support for the native Apple Zoom transition, a new iOS <code>Stack.Toolbar</code> API, experimental SplitView, and a new Colors API for dynamic Material 3 and adaptive iOS colors. Yes, the versioning scheme has changed: it&#8217;s v55, not v7.</p></li><li><p><strong>AI Tooling:</strong> You can try out new AI skills to help you with the update process. Expo also introduced Model Context Protocol (MCP) tools for CLI actions/EAS services, alongside the official <code>expo/skills</code> repository.</p></li><li><p><strong>Developer Experience:</strong> A small but welcome improvement is the ability to discover active dev servers on iOS with no QR code scanning needed!</p></li><li><p><strong><a href="https://expo.dev/blog/ship-smaller-ota-updates-bundle-diffing-comes-to-ota-updates-in-sdk-55">Smaller OTA updates</a></strong>: ship up to 75% smaller OTA updates thanks to Hermes bytecode bundle diffing.</p></li></ul><p>This release also shapes <a href="https://blog.swmansion.com/the-future-of-video-in-react-native-moving-from-expo-av-to-expo-video-6f4f78e51196">the future of video in React Native</a>. The legacy <code>expo-av</code> module has been removed and replaced by <code>expo-video</code> &amp; <code>expo-audio</code>, which feature an improved API, synchronous calls, and better state management with atomic state updates.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!cEKd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cEKd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cEKd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cEKd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cEKd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cEKd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg" width="1456" height="648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;State of React Native 2025&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="State of React Native 2025" title="State of React Native 2025" srcset="https://substackcdn.com/image/fetch/$s_!cEKd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cEKd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cEKd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cEKd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92f1e0c4-3d3b-459a-8376-a62605512a3c_1626x724.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"><svg role="img" 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"><g><title></title><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"><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"><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://results.2025.stateofreactnative.com/en-US/">State of React Native 2025</a></strong></p><p>The results for the State of React Native 2025 survey are officially out! This year marks the <strong>10th anniversary</strong> of React Native, alongside hitting a massive milestone of <strong>4 million weekly downloads</strong> (double last year&#8217;s numbers!). The ecosystem is maturing rapidly, and the survey reflects a highly positive shift in the overall developer experience. Software Mansion devs break it down on their <a href="https://www.youtube.com/watch?v=YWEsoSosQXQ">YouTube channel</a>.</p><p>Here are some of the highlights that we&#8217;ve found interesting:</p><ul><li><p><strong>The New Architecture Era:</strong> The New Architecture is now the default and has already reached an impressive <strong>~80% adoption rate</strong>. Combined with recent React Native releases shipping with zero user-facing breaking changes, the dreaded &#8220;upgrade pain&#8221; is finally fading into the past.</p></li><li><p><strong>Navigation:</strong> <strong>React Navigation</strong> and <strong>Expo Router</strong> dominate the space. While deep linking and TypeScript inference remain the top developer pain points, upcoming updates (like React Navigation 8) are specifically targeting these exact issues. We are also seeing a massive push toward new native primitives like native tabs, split views, and zoom transitions.</p></li><li><p><strong>Styling:</strong> The community is heavily leaning into Tailwind-style utility classes (<strong>NativeWind</strong>) and <strong>react-native-unistyles</strong>. While the &#8220;lack of a standard CSS API&#8221; was a top complaint, React Native is rapidly closing the gap by shipping web-compatible features natively&#8212;like box shadows, gradients, and CSS filters&#8212;with more on the way.</p></li><li><p><strong>Graphics &amp; Animations:</strong> <strong>React Native Reanimated</strong> remains the undisputed king of animations, with developers highly praising the new Shared Element Transitions. Meanwhile, <strong>React Native Skia</strong> is maturing fast, empowering developers to build much more ambitious and performant custom graphics without native code.</p></li><li><p><strong>Community Stewardship:</strong> With the recent launch of the independent <strong>React Foundation</strong> (hosted by the Linux Foundation), the future stewardship of React Native looks incredibly stable.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-mar4">PostHog - Monitor and debug errors in your React Native app with crash reporting and stack traces. 100k exceptions free every month</a></p></li><li><p>&#128202; <a href="https://www.revenuecat.com/state-of-subscription-apps-2025/#h-download-to-paid-by-framework">State of Subscription Apps 2025</a>: Revenue by mobile app framework shows that React Native apps perform the best in earnings.</p></li><li><p>&#128064; <a href="https://react-native-vision-camera.com/docs/guides/vision-camera-v5">Vision Camera 5 preview</a> - The upcoming release now has a dedicated documentation section detailing its new features.</p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/981">AbortController RFC</a> - A proposal to better align React Native&#8217;s implementation with the web standard and support the missing APIs.</p></li><li><p>&#128038; <a href="https://x.com/swmansion/status/2028898707681251493">RNRepo now supports iOS</a> - Faster build times thanks to pre-built library artifacts.</p></li><li><p>&#128038; <a href="https://x.com/aleqsio/status/2028946936951169234">React Native Worktree skill - enables multiple agents to use simulators without conflicts</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/sparkling-the-missing-app-layer-for-lynx-js">Sparkling: The Missing App Layer for Lynx.js?</a> - The Callstack team explores the previously mentioned Lynx framework.</p></li><li><p>&#128220; <a href="https://medium.com/doctolib/building-reliable-ai-chat-on-mobile-01015d74422e">Building reliable AI Chat on mobile</a> - An insight into the challenges of building a great user experience for mobile AI chat interfaces. Also announcing a FlatList-compatible library to address these challenges.</p></li><li><p>&#128220; <a href="https://codewithbeto.dev/blog/expo-ui-tips">Expo UI tips</a> - Non-obvious solutions and techniques to make your app make use of native features to look and feel better.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/react-native-monorepo-with-pnpm-workspaces">React Native Monorepo with PNPM Workspaces</a></p></li><li><p>&#128230; <a href="https://github.com/native-html/render">@native-html/render - Render HTML as native views</a> - This old package has been refreshed and is now officially maintained by Software Mansion.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/react-native-grab">Grab - Touch-to-grab context tool for React Native UI changes</a> - Similar to React-Grab on the web, this convenient tool permits giving accurate context to LLMs.</p></li><li><p>&#128230; <a href="https://github.com/mrousavy/nitro/releases/tag/v0.34.0">Nitro 0.34</a>, and <a href="https://github.com/mrousavy/nitro/releases/tag/v0.35.0">Nitro 0.35</a> with an API breaking change to fix a memory leak issue.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched/releases/tag/v0.5.0">Enriched 0.5 - HTML normalizer, preserve rich formatting, and more</a></p></li><li><p>&#128230; <a href="https://x.com/ReactNativeRwd/status/2027333392254017948">Enriched Markdown 0.3 - RTL support, GFM support (tables, task lists, and autolinks)</a></p></li><li><p>&#128230; <a href="https://www.callstack.com/blog/announcing-react-native-brownfield-v3-with-expo-config-plugin">Brownfield 3.0 - New Expo Config plugin</a></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/visual-testing">Maestro CLI 2.2 - Visual Testing capabilities</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/metro/releases/tag/v0.84.1">Metro 0.84.1 - HTTPS support in Metro server</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.4.0">Uniwind 1.4 - Scoped theme</a></p></li><li><p>&#128230; <a href="https://github.com/kuatsu/react-native-boost/releases/tag/v1.0.0">Boost 1.0 - A Babel plugin that automatically optimizes your apps</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.7.0">Agent Device 0.7 - TV support, push notifications, clipboard commands, network dump, dogfood skill</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-354-react-native-screens-with-krzysztof-magiera">React Native Radio 354 - React Native Screens with Krzysztof Magiera</a> - Deep dive and sneak peek into the upcoming 5.0 rewrite built exclusively for the New Architecture.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/tc39/agendas/blob/main/2026/03.md">TC39 - Agenda for the 113th meeting - 10-12 March</a> - Next week, major proposals such as Temporal and Explicit Resource Management could move to stage 4.</p></li><li><p>&#128227; <a href="https://web.dev/blog/baseline-navigation-api">Navigation API - a better way to navigate, is now Baseline Newly Available</a> - The modern alternative to the History API is ready for prime time. Part of Interop 2026, the remaining browser incompatibilities should be fixed by the end of the year.</p></li><li><p>&#128227; <a href="https://npmx.dev/blog/alpha-release">Announcing npmx: a fast, modern browser for the npm registry</a></p></li><li><p>&#128230; <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/148">Firefox 148</a> - Unlocks cross-browser support for CSS <code>shape()</code>, <code>position-try-order</code>, and Trusted Types to prevent XSS attacks. Speaking of XSS, Firefox is also the first browser to land the new <a href="https://hacks.mozilla.org/2026/02/goodbye-innerhtml-hello-sethtml-stronger-xss-protection-in-firefox-148/">Sanitizer API and </a><code>setHTML()</code>.</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.10">Bun 1.3.10 - New REPL, ES decorators, faster event loop, barrel optimization, and more</a></p></li><li><p>&#128230; <a href="https://deno.com/blog/v2.7">Deno 2.7 - Temporal API, Windows ARM, and npm overrides</a></p></li><li><p>&#128230; <a href="https://github.com/solidjs/solid/releases/tag/v2.0.0-beta.0">Solid 2.0 beta - Async is first&#8209;class, computations can return Promise, the graph knows how to suspend/resume</a></p></li><li><p>&#128230; <a href="https://better-auth.com/blog/1-5">Better Auth 1.5 - New CLI, OAuth 2.1 Provider, Electron integration, i18n support, and more</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uoh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uoh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a0587da-55f7-45e1-8569-8fe0ff108930_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_!uoh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!uoh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a0587da-55f7-45e1-8569-8fe0ff108930_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!uLhK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uLhK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uLhK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uLhK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uLhK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uLhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg" width="1456" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&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_!uLhK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uLhK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uLhK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uLhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc49ed12-2b61-41b6-ab5d-75053d5d50a7_1466x516.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"><svg role="img" 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"><g><title></title><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"><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"><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_!3Gzv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Gzv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3Gzv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3Gzv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3Gzv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Gzv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg" width="1456" height="1517" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1517,&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_!3Gzv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3Gzv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3Gzv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3Gzv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34987359-1802-4adf-a23e-ea7a47fb7db4_1468x1530.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"><svg role="img" 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"><g><title></title><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"><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"><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 270]]></title><description><![CDATA[Next.js, React Router, TanStack, Ink, Async, AI | Hermes, React Navigation, CSS Grid, Maestro, QuickPush, Screens, Expo Skills, Async Storage | Node, Oxfmt, TypeScript, Border Shape, Sprites]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-270</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-270</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 27 Feb 2026 18:38:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cf5W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello everyone, Krzysztof and Kacper from <a href="https://swmansion.com/">Software Mansion</a> here &#128075;</p><p>The React Foundation officially launched. Cloudflare rebuilt the whole Next.js in a week using AI. In the meantime, the real Next.js is adding version-matched docs so agents always have context on new and recently updated APIs.</p><p>On the React Native side, Hermes is moving beyond mobile: Hermes-node brings the engine to Node.js as a potential V8 swap. CSS Grid is also coming to React Native, and TanStack Router has an early PoC running natively.</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_!9aSY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9aSY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9aSY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9aSY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9aSY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9aSY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_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_!9aSY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9aSY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9aSY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9aSY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b4a5f9e-6605-47e8-9728-c9e7ccbb6396_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!cKkW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cKkW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cKkW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cKkW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cKkW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cKkW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/408a4572-3a04-46d0-a58b-3a76abb6b672_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_!cKkW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cKkW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cKkW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cKkW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408a4572-3a04-46d0-a58b-3a76abb6b672_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=2nd">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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=2nd">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=2nd">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=2nd">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!Ee-P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ee-P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ee-P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ee-P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ee-P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ee-P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7798aeb3-6d16-4e27-b879-e92c2d37269c_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 we rebuilt Next.js with AI in one week&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 we rebuilt Next.js with AI in one week" title="How we rebuilt Next.js with AI in one week" srcset="https://substackcdn.com/image/fetch/$s_!Ee-P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ee-P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ee-P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ee-P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7798aeb3-6d16-4e27-b879-e92c2d37269c_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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/">How we rebuilt Next.js with AI in one week</a></strong></p><p>A single Cloudflare engineer rebuilt the Next.js API surface (App Router, RSC, Server Actions, middleware) on Vite in one week using AI for $1,100. Using Oxc/Rolldown, it builds 4.4x and produces 57% smaller bundles. Using the Vite Environment API, it overcomes OpenNext limits, making it compatible with edge runtimes such as Cloudflare Workers.</p><p>What started as a bold experiment became <a href="https://github.com/cloudflare/vinext">vinext</a>. It passes 2000+ tests and has 94% test coverage of the Next.js 16 API surface. The <code>cio.gov</code> website already runs it in production. It also introduces new concepts such as &#8220;Traffic-aware Pre-Rendering&#8221;.</p><p>This AI-driven port was only possible because Next.js has a well-documented API surface and a comprehensive test suite. A reminder of something TDD practitioners have known for years, but seems more important than ever today: the real value lies in the specification, the test suite, and the API design. Even Guillermo Rauch now believes that <a href="https://x.com/rauchg/status/2026091504280944802">most software will start as markdown spec files</a> implemented by coding agents. In <a href="https://saewitz.com/tests-are-the-new-moat">Tests Are The New Moat</a>, the author argues that we may see more open-source projects with private test suites: that&#8217;s what SQLite is already doing.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns</a></p></li><li><p>&#128227; <a href="https://react.dev/blog/2026/02/24/the-react-foundation">The React Foundation has officially launched, hosted by the Linux Foundation</a> - React, React Native, and supporting projects like JSX are no longer owned by Meta. Huawei joined the previously announced founding members.</p></li><li><p>&#128214; <a href="https://nextjs.org/docs/app/guides/ai-agents">Next.js - AI Agents Guide</a> - Upcoming Next.js releases will include version-matched docs to provide agents with up-to-date context, improving <a href="https://nextjs.org/evals">Next.js Evals</a> success rate by ~20%.</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/building-design-components-with-action-props-using-async-react/">Aurora Scharff - Building Design Components with Action Props using Async React</a> - Pattern for encapsulating optimistic updates, pending indicators, and rollback inside reusable components</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/creating-query-abstractions">TkDodo - Creating Query Abstractions</a> - Using <code>queryOptions</code> is an alternative to hooks for achieving a reusable data object. This approach allows you to use the object even outside of React components.</p></li><li><p>&#128220; <a href="https://kentcdodds.com/blog/how-i-used-cursor-to-migrate-frameworks">Kent C. Dodds - Migrating Remix v2 to React Router v7 with Cursor</a> - Showcases how he used Composer for large-scale dependency upgrades completed in a day.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/articles/react-router-loaders-and-actions-as-integration-points">React Router Loaders and Actions as Integration Points</a> - Testing routing with business logic in isolation is tough due to complex mocking. The author suggests that mixing unit and e2e tests can solve that.</p></li><li><p>&#128220; <a href="https://sergiodxa.com/tutorials/create-a-multi-directory-route-organization-in-react-router">Create a Multi-Directory Route Organization in React Router</a> - By using <code>flatRoutes</code>, you can maintain a scalable structure with better logic separation in a growing React Router application.</p></li><li><p>&#128220; <a href="https://zenn.dev/smartvain/articles/coding-agent-kills-framework-nextjs-reverse-truth?locale=en">Removing Next.js Taught Me Why Frameworks Are Still Essential Even for AI</a> - The author tried building with HTML and vanilla JS, then concludes that frameworks are necessary precisely because we are in the era of agents, giving them useful constraints. Note that Elon Musk predicts something different: AI will bypass coding and directly create binaries (<a href="https://x.com/XFreeze/status/2021699619927781842">tweet</a>).</p></li><li><p>&#128220; <a href="https://www.nutrient.io/blog/react-usetransition-guide/">React&#8217;s useTransition: The hook you&#8217;re probably using wrong</a></p></li><li><p>&#128220; <a href="https://tympanus.net/codrops/2026/02/24/from-flat-to-spatial-creating-a-3d-product-grid-with-react-three-fiber/">Creating a 3D Product Grid with React Three Fiber</a></p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-feb25">Product for Engineers - 10x job posts for 10x engineers</a></p></li><li><p>&#128230; <a href="https://github.com/vadimdemedes/ink/releases/tag/v6.8.0">Ink 6.8 - </a><code>renderToString()</code><a href="https://github.com/vadimdemedes/ink/releases/tag/v6.8.0">, React DevTools v7, performance caching</a></p></li><li><p>&#128230; <a href="https://github.com/tomkp/react-split-pane/releases/tag/v3.2.0">Split Pane 3.2 - </a><code>pointerType</code><a href="https://github.com/tomkp/react-split-pane/releases/tag/v3.2.0"> in ResizeEvent</a></p></li><li><p>&#128230; <a href="https://vercel.com/changelog/chat-sdk">Vercel Chat SDK - Lets you build chatbots, supports JSX syntax</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Cw8scPKibe8">Josef Bender - Build a blog with type-safe Markdown and TanStack Start</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=1fUBWAETmkk">Fireship - TanStack Start in 100 Seconds</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=_L3uM8hD1wg">Hamed Bahram - Master nuqs in 1 hour - URL state in NextJs with Fran&#231;ois Best</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_!ka6z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ka6z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ka6z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ka6z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ka6z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ka6z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0661292-36f5-440f-ab5f-45c84b11d035_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_!ka6z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ka6z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ka6z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ka6z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0661292-36f5-440f-ab5f-45c84b11d035_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!qxIe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qxIe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qxIe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qxIe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qxIe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qxIe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6148fc5f-ab8e-44dd-b9d6-bd48b7417459_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 building MUI forms manually! Try FormEngine Core &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 building MUI forms manually! Try FormEngine Core " title="Stop building MUI forms manually! Try FormEngine Core " srcset="https://substackcdn.com/image/fetch/$s_!qxIe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qxIe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qxIe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qxIe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6148fc5f-ab8e-44dd-b9d6-bd48b7417459_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"><svg role="img" 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"><g><title></title><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"><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"><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://formengine.io/lightweight-react-json-schema-form-builder-library-for-mui?utm_source=thisweekinreact&amp;utm_medium=link&amp;utm_campaign=mui&amp;utm_content=lightweight&amp;utm_term=sponsor2-250226">Stop building MUI forms manually! Try FormEngine Core</a></strong></p><p>Tired of rewriting the same MUI forms across projects? <strong>FormEngine Core</strong> lets you build once in JSON and deploy everywhere no deep React knowledge required.</p><p><strong>Why developers are switching</strong></p><ul><li><p><strong>Write once, use anywhere:</strong> One JSON schema works across all your apps</p></li><li><p><strong>Native MUI support:</strong> Ready-to-use component package</p></li><li><p><strong>Lightweight:</strong> 188.54 KB gzipped (FormEngine Core + MUI)</p></li><li><p><strong>Next.js &amp; Remix ready:</strong> Drop-in support for modern frameworks</p></li><li><p><strong>Localization:</strong> Powerful form localization with Fluent.js</p></li><li><p><strong>Custom actions:</strong> Interactive logic through custom JavaScript</p></li></ul><p><strong>Perfect for:</strong> backend-driven forms, conditional logic, complex forms, admin panels, and multi-step wizards.<br><strong>Open source &amp; free forever</strong> no vendor lock-in, no nonsense. Trusted by enterprises.<br><a href="https://formengine.io/lightweight-react-json-schema-form-builder-library-for-mui?utm_source=thisweekinreact&amp;utm_medium=link&amp;utm_campaign=mui&amp;utm_content=lightweight&amp;utm_term=sponsor2-250226">Quick Start = Working form in 60 seconds</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!cf5W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cf5W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cf5W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cf5W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cf5W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cf5W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg" width="1000" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Hermes-node&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="Hermes-node" title="Hermes-node" srcset="https://substackcdn.com/image/fetch/$s_!cf5W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cf5W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cf5W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cf5W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6c2620-058b-4b5c-825d-a20f8b99d175_1000x520.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"><svg role="img" 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"><g><title></title><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"><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"><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://x.com/tmikov/status/2024609186936660170">Hermes-node</a></strong></p><p>Tzvetan Mikov from the Hermes team announced Hermes-node, a CLI version of Hermes compatible with the Node.js API. Since Hermes-node acts as a compatibility layer, it can use original Node.js module implementations without needing to rewrite them - most work out of the box. You can think of this as simply swapping the V8 engine for Hermes. If combined with compiling Hermes to binary code, this feature could bring significant benefits to the entire Node.js ecosystem.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://fandf.co/3My3pHO">Amazon Developer &#8211; Build Fire TV&#8239;apps with React Native on Vega OS.&#8239;Port your apps,&#8239;expand your reach, and monetize.&#8239;</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react-native/pull/55665">React Native PR - CSS Grid is coming to React Native</a></p></li><li><p>&#128064; <a href="https://github.com/kirillzyusko/react-native-keyboard-controller/pull/1314">Keyboard Controller PR - New </a><code>&lt;KeyboardChatScrollView&gt;</code><a href="https://github.com/kirillzyusko/react-native-keyboard-controller/pull/1314"> component</a> - Eliminates re-layouts during keyboard animations to improve performance</p></li><li><p>&#128038; <a href="https://x.com/tannerlinsley/status/2024945690737254601">Tanner Linsley announced</a> a PoC of TanStack Router running in React Native (<a href="https://github.com/TanStack/router/compare/feat/react-native">GitHub code</a>)</p></li><li><p>&#128038; <a href="https://x.com/reactnavigation/status/2025525954618052746">React Navigation 8 is experimenting with </a><code>&lt;Activity&gt;</code><a href="https://x.com/reactnavigation/status/2025525954618052746"> for freezing and unmounting inactive screens</a></p></li><li><p>&#128038; <a href="https://x.com/jmeistrich/status/2024455646368977393">Jay Meistrich is testing Legend List v3 in production (Legend App), resulting in significant performance improvements</a></p></li><li><p>&#128220; <a href="https://adrov.me/brownfield-navigation/">Brownfield React Native app with multiple screens</a> - Fixes a ReactFragment lifecycle race condition on Android and a static RN View Factory pattern on iOS - both needed to avoid crashes when pushing multiple RN screens.</p></li><li><p>&#128220; <a href="https://addjam.com/blog/2026-02-18/our-experience-adding-e2e-testing-react-native-maestro/">The experience of adding E2E testing to React Native with Maestro</a> - A case study on the benefits of using Maestro over Detox: simpler, platform-agnostic configuration, fewer technical quirks, and a lower barrier to entry.</p></li><li><p>&#128220; <a href="https://reactnative.dev/blog/2026/02/24/react-native-comes-to-meta-quest">React Native Comes to Meta Quest</a> - Meta officially announced support for Horizon OS, allowing developers to build VR applications using their existing Android tools and knowledge.</p></li><li><p>&#128220; <a href="https://sentry.engineering/blog/do-you-really-need-an-mcp-to-build-your-app">Do you need an MCP to build your native app?</a> - A simple Markdown file with basic instructions can work better and is more affordable than a complex MCP from Xcode.</p></li><li><p>&#128230; <a href="https://codewithbeto.dev/tools/quickPush">QuickPush 2.0 - MacOS menu bar app for testing Expo Push Notification</a> - Paid tool, can be used for free by compiling it from sources.</p></li><li><p>&#128230; <a href="https://github.com/react-native-vibe-code/react-native-vibe-code-sdk">RN Vibe Code - an open-source IDE for vibe coding</a> - Runs in the browser.</p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.1.0">Sentry React Native 8.1 - </a><code>enableTombstone</code><a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.1.0"> for native crash reporting on Android 12+, iOS view filtering for session replay</a></p></li><li><p>&#128230; <a href="https://github.com/PostHog/posthog-js/releases/tag/posthog-react-native%404.36.0">Posthog React Native 4.36 - Manual session replay control</a> - New <code>startSessionRecording</code>, <code>stopSessionRecording</code>, and <code>isSessionReplayActive</code> methods.</p></li><li><p>&#128230; <a href="https://github.com/stripe/stripe-react-native/releases/tag/v0.59.0">Stripe React Native 0.59 - Connect Embedded Components (preview), Radar session support</a></p></li><li><p>&#128230; <a href="https://github.com/DataDog/dd-sdk-reactnative/releases/tag/3.1.0">Datadog 3.1.0 - Feature Flags</a> - Using an open standard for feature flag management.</p></li><li><p>&#128230; <a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation/bottom-tabs%407.14.0">Bottom Tabs 7.14 - Support hiding the native tab bar</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.24.0">Screens 4.24 - Last release with Legacy Architecture support, Split View enhancements, iOS 26 fixes</a> - Next version will drop support for RN &lt; 0.82 and only support the New Architecture.</p></li><li><p>&#128230; <a href="https://github.com/react-native-async-storage/async-storage/releases/tag/%40react-native-async-storage%2Fasync-storage%403.0.0">Async Storage 3.0 - Instance-based storage, promise-only API, renamed batch methods</a> - Breaking major, consult migration guide to v3.</p></li><li><p>&#128230; <a href="https://github.com/Rednegniw/number-flow-react-native">Number Flow 0.2 - New library that provides Text component with build in rolling counter animation</a></p></li><li><p>&#128230; <a href="https://github.com/mientjan/react-native-markdown-renderer/releases/tag/v4.0.0">Markdown Renderer 4.0</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-quick-crypto/releases/tag/v1.0.12">Quick Crypto 1.0.12 - Full NodeJS Crypto API compatibility</a></p></li><li><p>&#129302; <a href="https://expo.dev/expo-skills">Expo Skills - Official collection</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/playlist?list=PLZ3MwD-soTTHSEF1_8J3JTTe6SfHGTc8w">React Universe Meetup x Zalando - All the talks are online</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=do1NdvGQRlg">Callstack - Using Apple Intelligence Seamlessly With @react-native-ai/apple</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=ohFPD_hWUzU">Callstack - MLC LLM + React Native: On-Device AI Without the Pain</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/c2223e49">Rocket Ship 92 - React Native 0.84, Hermes V1 &amp; A TanStack React Native Framework?</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://www.joshwcomeau.com/animation/sprites/">Josh Comeau - Sprites on the Web</a></p></li><li><p>&#128220; <a href="https://una.im/border-shape/">border-shape: the future of the non-rectangular web</a></p></li><li><p>&#128220; <a href="https://nodesource.com/blog/is-nodejs-single-threaded-or-not">Is Node.js Single-Threaded&#8230; or Not?</a></p></li><li><p>&#128220; <a href="https://lukasniessen.medium.com/micro-frontends-when-they-make-sense-and-when-they-dont-a1a06b726065">Micro Frontends: When They Make Sense and When They Don&#8217;t</a></p></li><li><p>&#128220; <a href="https://httptoolkit.com/blog/dictionary-compression-performance-zstd-brotli/">Slashing Web Traffic by 90%: The Power of Dictionary Compression</a></p></li><li><p>&#128230; <a href="https://oxc.rs/blog/2026-02-24-oxfmt-beta">Oxfmt Beta - Prettier-compatible, 30x faster</a></p></li><li><p>&#129302; <a href="https://vercel.com/blog/skills-night-69000-ways-agents-are-getting-smarter">Skills Night: 69,000+ ways agents are getting smarter</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=wvt5JNUXXLM">Theo - The Future of TypeScript</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8sdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8sdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6904dc44-228a-4a07-82ee-706a68ec3d17_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_!8sdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!8sdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6904dc44-228a-4a07-82ee-706a68ec3d17_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!orI8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!orI8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!orI8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!orI8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!orI8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!orI8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg" width="1000" height="1080" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&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_!orI8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!orI8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!orI8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!orI8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe08a857c-ed77-48d4-9c47-568f8d13bf77_1000x1080.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"><svg role="img" 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"><g><title></title><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"><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"><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 269]]></title><description><![CDATA[State of React, TanStack, Next.js, Tailwind, Base UI, Doctor | Hermes, Sparkling, Yoga, Enriched, Voltra, AI | Interop, Electrobun, Module Federation, Biome, pnpm]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-269</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-269</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 20 Feb 2026 13:38:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-niH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>Huge thanks &#10084;&#65039; &#8212; <strong>we just hit <a href="https://2025.stateofreact.com/en-US/resources/#blogs_news_magazines">#1 resource</a></strong> on the State of React 2025 survey. Wild.</p><p>This week leans heavily into TanStack and Next.js content, plus a few notable releases worth your time.</p><p>On mobile, Hermes is clearly ramping up, and ByteDance just lowered the barrier to building Lynx apps.</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_!gwRo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gwRo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gwRo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gwRo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gwRo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gwRo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31591081-126b-43f3-908d-4db17ab39fed_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_!gwRo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gwRo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gwRo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gwRo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31591081-126b-43f3-908d-4db17ab39fed_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!5g4H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5g4H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5g4H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5g4H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5g4H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5g4H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55beb498-c081-4adc-a8f0-503d03b21b88_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;Cut Code Review Time &amp; Bugs in Half&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="Cut Code Review Time &amp; Bugs in Half" title="Cut Code Review Time &amp; Bugs in Half" srcset="https://substackcdn.com/image/fetch/$s_!5g4H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5g4H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5g4H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5g4H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55beb498-c081-4adc-a8f0-503d03b21b88_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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/twir">Cut Code Review Time &amp; Bugs in Half</a></strong></p><p>Code reviews are critical but time-consuming. CodeRabbit acts as your AI co-pilot, providing instant Code review comments and potential impacts of every pull request.</p><p>Beyond just flagging issues, CodeRabbit provides one-click fix suggestions and lets you define custom code quality rules using AST Grep patterns, catching subtle issues that traditional static analysis tools might miss.</p><p>CodeRabbit reviews 1 million PRs every week across 3 million repositories and is used by 100 thousand Open-source projects.</p><p>CodeRabbit is free for all open-source repo&#8217;s.</p><p><a href="https://coderabbit.link/twir">Get started today</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!-niH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-niH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-niH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-niH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-niH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-niH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg" width="1000" height="607" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:607,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;State of React 2025 - Survey Results&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="State of React 2025 - Survey Results" title="State of React 2025 - Survey Results" srcset="https://substackcdn.com/image/fetch/$s_!-niH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-niH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-niH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-niH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b32b50-969d-4f8b-82ed-083d4c3b394f_1000x607.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"><svg role="img" 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"><g><title></title><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"><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"><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://2025.stateofreact.com/">State of React 2025 - Survey Results</a></strong></p><p>The State of React 2025 survey results are out. It&#8217;s impossible to summarize it all here, but here&#8217;s what I&#8217;ve taken away:</p><ul><li><p><code>useEffect</code> remains the most disliked hook</p></li><li><p><code>&lt;Suspense&gt;</code> increased in both adoption and satisfaction</p></li><li><p>React Server Components and Server Functions divide</p></li><li><p>Although usage is still low, <code>&lt;Activity&gt;</code> reaches a 100% satisfaction score</p></li><li><p>TanStack Query and Zustand remain the favorite libraries</p></li><li><p>Your favorite resources are the official docs, this newsletter (&#10084;&#65039;), Syntax.fm, Theo.</p></li></ul><p>Read also the <a href="https://certificates.dev/blog/breaking-down-state-of-react-2025-results">breakdown from Aurora Scharff</a>, who wrote the survey conclusion.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128272; <a href="https://socket.dev/blog/high-severity-rce-vulnerability-disclosed-in-next-mdx-remote">High-Severity RCE Vulnerability Disclosed in next-mdx-remote</a> - Member that MDX is code and it&#8217;s unsafe to evaluate untrusted MDX strings.</p></li><li><p>&#128467; <a href="https://react.paris/?utm_source=thisweekinreact">React Paris 2026</a> - &#127467;&#127479; Paris - 26 &amp; 27 March. Last chance to join! Ticket sales close on March 4th - don&#8217;t miss this premier React event. Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://vercel.com/blog/we-ralph-wiggumed-webstreams-to-make-them-10x-faster">Vercel - We Ralph Wiggumed WebStreams to make them 10x faster</a> - For Next.js and other React/SSR/RSC heavy workloads, the Node.js native implementation of WebStreams can be major a bottleneck. They implemented a much faster spec-compliant alternative, until upstream performance improvements land in Node.js. No doubt Next.js is going to benefit from all this soon.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/agentic-future">Building Next.js for an agentic future</a> - The Next.js team realized they need to treats agents as first-class users, thinking from their perspective.</p></li><li><p>&#128220; <a href="https://rednegra.net/blog/20260212-virtual-scroll/">Virtual Scrolling for Billions of Rows</a> - 5 vertical scrolling techniques from the <code>`hightable`</code> React virtualization library.</p></li><li><p>&#128220; <a href="https://shadcnspace.com/blog/radix-ui-vs-base-ui">Radix UI vs Base UI - Detailed Guide</a></p></li><li><p>&#128220; <a href="https://dev.to/elvissautet/nextjs-finally-has-competition-2lg7">Next.js Finally Has Competition (TanStack Start)</a></p></li><li><p>&#128220; <a href="https://engineering.gusto.com/the-journey-to-a-safer-frontend-why-we-removed-react-fc-095ff0b3e2e4">The Journey to a Safer Frontend: Why Gusto Removed</a> <code>React.FC</code></p></li><li><p>&#128184; <a href="https://r2trck.com/twir-7?utm_medium=email-media-newsletter&amp;utm_source=twir-cpa&amp;utm_campaign=the-secret-to-faster-rag-systems-cpa&amp;utm_content=paid&amp;utm_term=1-1-2026">The Secret to Faster RAG Systems by ElevenLabs</a></p></li><li><p>&#128230; <a href="https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.2.0">Tailwind 4.2 - Webpack plugin, new utilities and color palettes</a> - The Webpack plugin has been contributed by Tim Neutkens and should lead to <a href="https://x.com/timneutkens/status/2024140710786523301">significant</a> performance improvements for frameworks like Next.js (even for Turbopack).</p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-2-0">Base UI 1.2 - Drawer component, support lazy/async components in </a><code>render</code><a href="https://base-ui.com/react/overview/releases/v1-2-0">, new </a><code>useFilteredItems</code><a href="https://base-ui.com/react/overview/releases/v1-2-0"> hook</a> - The new Drawer component is in preview (<a href="https://base-ui.com/react/components/drawer">docs</a>) for now. Unlike Radix, it&#8217;s not based on Vaul (now unmaintained).</p></li><li><p>&#128230; <a href="https://tanstack.com/hotkeys/latest">TanStack Hotkeys alpha</a> - This brand-new TanStack library is framework-agnostic, but initially comes with a first-class React integration. It provides a type-safe API, normalizes modifiers across platforms, supports multi-step keyboard sequences, and more.</p></li><li><p>&#128230; <a href="https://tanstack.com/start/latest/docs/framework/react/guide/import-protection">TanStack Start 1.161 - Import protection</a> - Ensures your code runs in the right client/server environment.</p></li><li><p>&#128230; <a href="https://github.com/preactjs/preact/releases/tag/11.0.0-beta.1">Preact 11.0 beta.1</a> - By the way, TanStack query now <a href="https://github.com/TanStack/query/releases/tag/%40tanstack%2Fpreact-query%405.91.0">supports Preact</a>.</p></li><li><p>&#128230; <a href="https://github.com/millionco/react-doctor">React Doctor - Scan your codebase, let coding agents diagnose/fix your React code</a></p></li><li><p>&#128230; <a href="https://github.com/vercel-labs/json-render/releases/tag/%40json-render%2Fshadcn%400.7.0">json-render 0.7 - Generative UI framework - Add 30+ shadcn/ui components, and more</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Ab01W6h4Giw">Austin Davis - TanStack Router - How to Become a Routing God in React</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=3jJ2Xz-oWt8">Josef Bender - TanStack Loaders vs Context: What I Got Wrong</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=vKsh_qrv7lM">Shruti Kapoor - Build a YouTube content dashboard with generative UI (Tambo)</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_!MQeh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MQeh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MQeh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MQeh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MQeh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MQeh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf3207f-89cd-4659-a3b8-ddded00588ee_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_!MQeh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MQeh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MQeh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MQeh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf3207f-89cd-4659-a3b8-ddded00588ee_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!06xX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!06xX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!06xX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!06xX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!06xX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!06xX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2144332b-902b-4078-a197-b616e79b196d_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;Free Workshop: Debug React Apps With AI From Dev to Prod&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="Free Workshop: Debug React Apps With AI From Dev to Prod" title="Free Workshop: Debug React Apps With AI From Dev to Prod" srcset="https://substackcdn.com/image/fetch/$s_!06xX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!06xX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!06xX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!06xX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2144332b-902b-4078-a197-b616e79b196d_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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/seer-workshop-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerworkshop&amp;utm_content=newsletter-workshop-register">Free Workshop: Debug React Apps With AI From Dev to Prod</a></strong></p><p>&#129504; <strong><a href="https://sentry.io/product/seer/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerlaunch&amp;utm_content=newsletter-product-trysentry">Seer</a></strong><a href="https://sentry.io/product/seer/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerlaunch&amp;utm_content=newsletter-product-trysentry"> is Sentry&#8217;s AI debugging agent</a>. It root causes errors, suggests fixes, and catches bugs in code review before they hit production.</p><p>This free 4-part workshop series covers the full workflow: production error triage, root cause analysis, AI code review, and debugging via MCP. Each session goes hands-on with a specific feature so you can actually set it up and use it in your own projects. No fluff, just walkthroughs you can follow along with.</p><p><strong><a href="https://sentry.io/resources/seer-workshop-series/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerworkshop&amp;utm_content=newsletter-workshop-register">Register today</a></strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!wdm3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wdm3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wdm3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wdm3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wdm3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wdm3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;WebAssembly Comes to Hermes&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="WebAssembly Comes to Hermes" title="WebAssembly Comes to Hermes" srcset="https://substackcdn.com/image/fetch/$s_!wdm3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wdm3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wdm3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wdm3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02497a37-4596-47fb-9fe7-2fbf2a60b6de_1536x614.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"><svg role="img" 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"><g><title></title><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"><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"><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://x.com/tmikov/status/2023821160241393839">WebAssembly Comes to Hermes</a></strong></p><p>An exciting early preview of WebAssembly support in Hermes, unlocking new ways to integrate C, C++, Rust, and more into your React Native app. It&#8217;s even possible to precompile WASM to Hermes bytecode <code>.hbc</code> files.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!h5Hg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h5Hg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h5Hg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h5Hg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h5Hg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h5Hg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.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;Sparkling - Unlocks Lynx at TikTok Scale&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="Sparkling - Unlocks Lynx at TikTok Scale" title="Sparkling - Unlocks Lynx at TikTok Scale" srcset="https://substackcdn.com/image/fetch/$s_!h5Hg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h5Hg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h5Hg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h5Hg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fea7be2-9317-4fb3-9f50-7536eeb029f9_1818x896.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"><svg role="img" 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"><g><title></title><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"><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"><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://tiktok.github.io/sparkling/">Sparkling - Unlocks Lynx at TikTok Scale</a></strong></p><p>ByteDance unveiled Lynx last year as an interesting framework-agnostic alternative to React Native. So far, the DX has been limited, and there has been no easy way to create a new Lynx app from scratch. Sparkling changes that, and offers the tooling that Lynx apps deserve. By the way, <a href="https://lynxjs.org/blog/lynx-3-6">Lynx 3.6</a> is out, improving support for React, AI, and CSS.</p><p>See also:</p><ul><li><p>&#128230; <a href="https://lynxjs.org/blog/lynx-3-6">Lynx 3.6 - Lynx for AI, ReactLynx hooks, CSS for Design</a></p></li><li><p>&#127909; <a href="https://www.callstack.com/events/sparkling-a-new-framework-for-lynx">Sparkling: A New Framework for Lynx</a> - A 2h event with Callstack and the Lynx team.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-feb18">Product for Engineers - 10x job posts for 10x engineers</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/yoga/pull/1874">Yoga PR - Add core Yoga support for CSS </a><code>calc()</code></p></li><li><p>&#128220; <a href="https://expo.dev/blog/the-production-playbook-for-ota-updates">Expo - The production playbook for OTA updates</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/agent-device-ai-native-mobile-automation-for-ios-android">Agent Device: iOS &amp; Android Automation for AI Agents</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/a-practical-guide-to-react-native-monorepo-with-yarn-workspaces">A Practical Guide to React Native Monorepo With Yarn Workspaces</a></p></li><li><p>&#128230; <a href="https://www.react-native-ai.dev/docs/json-ui/getting-started">@react-native-ai/json-ui alpha - Generative UI, tailor-made for small, local language models</a> - Similar to json-render, but on-device.</p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.0.0">Sentry React Native 8.0 - Capture App Start errors and crashes</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.4.0">Agent Device 0.4 - CLI to control iOS/Android devices - Supports testing on physical devices</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched/releases/tag/v0.4.0">Enriched 0.4 - Rich text editor - Support animated gifs, pasting images, checkbox lists</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/releases/tag/0.2.0">Enriched Markdown 0.2 - Layout controls, a11y, font scaling, strikethrough/underline</a> - The next release will be even better, <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/issues/47#issuecomment-3914681397">bringing full GitHub Flavored Markdown support</a> (support for tables/autolinks already merged).</p></li><li><p>&#128230; <a href="https://github.com/arekkubaczkowski/react-native-bottom-sheet-stack/releases/tag/v1.8.0">Bottom Sheet Stack 1.8 - Stack manager for bottom sheets and modals - Now library-agnostic, including built-in adapters</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v1.2.0">Voltra 1.2 - Widgets/Live Activities framework - New iOS layout engine, improved Expo support, new </a><code>getActiveWidgets()</code><a href="https://github.com/callstackincubator/voltra/releases/tag/v1.2.0"> API</a></p></li><li><p>&#129302; <a href="https://skills.sh/callstack/react-native-testing-library/react-native-testing">React Native Testing Library Skill</a></p></li><li><p>&#129302; <a href="https://skills.sh/react-native-community/skills/upgrade-react-native">React Native Community - Upgrade RN Skill</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=ycYM_zKEF_4">Beto - How to Add Rich Push Notifications in Expo (iOS Images)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=nARu6acI5kM">Simon Grimm - How I&#8217;d Learn React Native Today (2026 Edition)</a></p></li><li><p>&#127897;&#65039; <a href="https://www.callstack.com/podcasts/local-first-voice-ai-and-app-security">React Universe on Air - From Teddy Bears to Voice Agents: Kraen Hansen on Voice AI, Local-First &amp; App Security</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://webkit.org/blog/17818/announcing-interop-2026/">Interop 2026</a> - Web browsers unveiled their focus areas for the year. This includes new features (cross-document view transitions, scroll-driven animations, container style queries&#8230;), but also stabilizing carryovers from Interop 2025 (anchor positioning, navigation API&#8230;).</p></li><li><p>&#128064; <a href="https://www.w3.org/TR/2026/WD-selectors-5-20260217/">Selectors Level 5 - W3C First Public Working Draft</a> - Preview of new CSS selectors and pseudo-classes being worked.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/fun-with-typescript-generics/">Fun with TypeScript Generics</a></p></li><li><p>&#128220; <a href="https://cpojer.net/posts/fastest-frontend-tooling">Fastest Frontend Tooling for Humans &amp; AI</a></p></li><li><p>&#128230; <a href="https://module-federation.io/blog/v2-stable-version.html">Module Federation 2.0 - Micro-Frontend Architecture</a> - Adds support for SSR among many other things. They also plan to add support for React Server Components later.</p></li><li><p>&#128230; <a href="https://blackboard.sh/blog/electrobun-v1/">Electrobun 1.0 - Build ultra fast, tiny, and cross-platform desktop apps with TypeScript</a> - An alternative to Tauri based on Bun/Zig.</p></li><li><p>&#128230; <a href="https://developer.chrome.com/blog/new-in-devtools-145">Chrome 145 DevTools</a> - The performance panel now includes Soft Navigation markers, improving the DX when troubleshooting client-side navigation (SPA/CSR apps).</p></li><li><p>&#128230; <a href="https://biomejs.dev/blog/biome-v2-4/">Biome 2.4 - Embedded Snippets, HTML Accessibility, and Better Framework Support</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/10.30">pnpm 10.30 - Improves </a><code>pnpm why</code><a href="https://pnpm.io/blog/releases/10.30">, showing an easier-to-understand reverse dependency tree</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FPDb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FPDb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a2ffaa-00e7-4e32-bd75-d93c247e6716_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_!FPDb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!FPDb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a2ffaa-00e7-4e32-bd75-d93c247e6716_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!AUsz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AUsz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AUsz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AUsz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AUsz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AUsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg" width="1456" height="1259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1259,&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_!AUsz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AUsz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AUsz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AUsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb86f3818-5a54-4b97-9e17-80bffb0fc80f_1466x1268.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"><svg role="img" 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"><g><title></title><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"><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"><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_!M3UT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M3UT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 424w, https://substackcdn.com/image/fetch/$s_!M3UT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 848w, https://substackcdn.com/image/fetch/$s_!M3UT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!M3UT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M3UT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg" width="1044" height="1222" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1222,&quot;width&quot;:1044,&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_!M3UT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 424w, https://substackcdn.com/image/fetch/$s_!M3UT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 848w, https://substackcdn.com/image/fetch/$s_!M3UT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!M3UT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a71f78-a1c5-406b-bfb5-d2c981145cf4_1044x1222.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"><svg role="img" 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"><g><title></title><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"><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"><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 268]]></title><description><![CDATA[Bulletproof Comps, Render Types, Tambo, Logo Soup, React Compiler, Ink, Streamdown | RN 0.84, Gestures, Rozenite, Storybook, JSON Render, Targets, TrueSheet | TypeScript, ESLint, Webpack, Vitest, VSCo]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-268</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-268</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 13 Feb 2026 12:57:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jnaO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>This week, we have a good variety of React content, with great community articles and various releases. Many generative UI solutions are emerging, and I&#8217;m curious to better understand how they differ from one another.</p><p>React Native 0.84 just dropped, and Gesture Handler 3 is in beta. Expo SDK 55 should also be out soon.</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_!6Bc9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Bc9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6Bc9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6Bc9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6Bc9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Bc9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0632a084-5d05-4c19-b3c5-488567facb30_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_!6Bc9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6Bc9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6Bc9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6Bc9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0632a084-5d05-4c19-b3c5-488567facb30_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!W2qV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W2qV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W2qV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W2qV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W2qV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W2qV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg" width="1430" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a82f802f-411a-4995-a551-c27234a35b0a_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;Seer: AI that debugs React errors and writes the fix&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="Seer: AI that debugs React errors and writes the fix" title="Seer: AI that debugs React errors and writes the fix" srcset="https://substackcdn.com/image/fetch/$s_!W2qV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W2qV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W2qV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W2qV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82f802f-411a-4995-a551-c27234a35b0a_1430x715.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"><svg role="img" 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"><g><title></title><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"><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"><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/product/seer/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerlaunch&amp;utm_content=newsletter-product-trysentry">Seer: AI that debugs React errors and writes the fix</a></strong></p><p>Most AI coding tools only see your source code. <strong><a href="https://blog.sentry.io/seer-debug-with-ai-at-every-stage-of-development/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerlaunch&amp;utm_content=newsletter-blog-launch-learnmore">Seer, Sentry&#8217;s AI debugging agent</a></strong>, uses everything Sentry knows about how your React application behaves in production&#8212;component trees, state updates, user interactions, and runtime errors&#8212;to debug locally, in your PR, and in production.</p><p><strong>How it works:</strong></p><ul><li><p>Seer scans &amp; analyzes issues using all Sentry&#8217;s available context.</p></li><li><p>In development, Seer debugs alongside you as you build</p></li><li><p>In review, Seer alerts you to bugs that are likely to break production</p></li><li><p>In production, Seer can find a bug&#8217;s root cause, suggest a fix, open a PR automatically, or send the fix to your preferred IDE.</p></li></ul><p><a href="https://sentry.io/product/seer/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy27q1-seerlaunch&amp;utm_content=newsletter-product-trysentry">Try Sentry for free</a> &#10145;&#65039;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!cJwE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cJwE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cJwE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cJwE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cJwE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cJwE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg" width="1200" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Building Bulletproof React Components&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="Building Bulletproof React Components" title="Building Bulletproof React Components" srcset="https://substackcdn.com/image/fetch/$s_!cJwE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cJwE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cJwE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cJwE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed38d37-86bb-4600-a129-b191ea4e94b5_1200x400.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"><svg role="img" 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"><g><title></title><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"><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"><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://shud.in/thoughts/build-bulletproof-react-components">Building Bulletproof React Components</a></strong></p><p>A great read from an experienced Vercel engineer, sharing various lessons to harden your React components. The goal is to make them survive real-world usage (SSR, hydration, multiple instances, concurrency, portals, etc.) rather than just working on the happy path.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://formengine.io/lightweight-react-json-schema-form-builder-library-for-mui?utm_source=thisweekinreact&amp;utm_medium=link&amp;utm_campaign=mui&amp;utm_content=lightweight&amp;utm_term=nodeepreactknowledgerequired">FormEngine Core &#8211; Lightweight React JSON Schema form builder library for MUI with true cross-app reuse. No deep React knowledge required</a></p></li><li><p>&#128220; <a href="https://barvian.me/react-exit-animations">A React trick to improve exit animations</a> - Freezing the component&#8217;s content while it&#8217;s animating to avoid visual glitches.</p></li><li><p>&#128220; <a href="https://winfunc.com/blog/recent-0-days-in-nodejs-and-react-were-found-by-an-ai">The Recent CVEs in React and Node.js Were Found by an AI</a> - Interesting to see the process of security researchers to find the recent RSC DoS vulnerability, and how it can be automated.</p></li><li><p>&#128220; <a href="https://anita-app.com/blog/articles/react-compiler-and-why-class-objects-work-against-memoization.html">React Compiler and why class objects can work against memoization</a> - Prefer plain data and pure helpers that the React compiler can observe as inputs.</p></li><li><p>&#128220; <a href="https://www.sanity.io/blog/the-logo-soup-problem">The logo soup problem (and how to solve it)</a> - Brand logos come in various logo shapes, aspect ratios, padding, and weights. Creating a visually aesthetic logo grid is surprisingly complex, but we now have a React library to help normalize them.</p></li><li><p>&#128220; <a href="https://techhub.iodigital.com/articles/nextjs-at-enterprise-level">Next.js at Enterprise Level</a></p></li><li><p>&#128220; <a href="https://spin.atomicobject.com/authenticated-routes-tanstack-router/">Authenticated Routes with TanStack Router</a></p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-feb11">Product for Engineers - How I actually get good advice</a></p></li><li><p>&#128230; <a href="https://tambo.co/blog/posts/introducing-tambo-generative-ui">Tambo 1.0 - Generative UI SDK for React</a> - An interesting full-stack solution for generative UI with React, tackling problems such as UI state persistence, streaming, and more. Comes with a backend that you can deploy on their cloud or self-host.</p></li><li><p>&#128230; <a href="https://github.com/HorusGoul/eslint-plugin-react-render-types">eslint-plugin-react-render-types - Brings Flow&#8217;s Render Types to TypeScript via JSDoc</a> - Render Types is a really cool feature of Flow that lets you express constraints on React composition patterns, loved by many engineers at Meta. TypeScript doesn&#8217;t support this capability natively, but this ESLint plugin enables it.</p></li><li><p>&#128230; <a href="https://github.com/blazejkustra/react-compiler-marker">React Compiler Marker - Universal IDE extension, shows which components are optimized by the Compiler</a> - Recently switched to an LSP, unlocking support for additional IDEs: IntelliJ/WebStorm/Neovim.</p></li><li><p>&#128230; <a href="https://github.com/mmarinovic/React2AWS">React2AWS - Write AWS infrastructure like you write React components</a> - Generates production-ready Terraform from JSX components and Tailwind-inspired classNames &#129322;, fun idea.</p></li><li><p>&#128230; <a href="https://github.com/vadimdemedes/ink/releases/tag/v6.7.0">Ink 6.7 CLI renderer - Add support for React concurrent rendering, synchronized updates</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-02-blocks">shadcn/ui - All blocks now available for both Radix and Base UI</a></p></li><li><p>&#128230; <a href="https://github.com/brucetoo/visual-agentic-dev">Visual Agentic Dev - Immersive React dev environment that lives within the browser</a></p></li><li><p>&#128230; <a href="https://github.com/vercel/streamdown/releases/tag/streamdown%402.2.0">Streamdown 2.2 - Animated streaming, improves support for custom HTML elements, completes ReactMarkdown props</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=GlaFgKgtJM4">Wawa Sensei - 3 React Three Fiber Mistakes I&#8217;ll Never Make Again</a></p></li><li><p>&#127897;&#65039; <a href="https://www.reactiflux.com/transcripts/tmir-2026-01">This Week in React - Oops more CVEs. AI has React &#8220;skills&#8221;, Astro exits and Tailwind struggles</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_!6q6V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6q6V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6q6V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6q6V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6q6V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6q6V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4867e0d-75fe-4df7-9870-bd462b36a909_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_!6q6V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6q6V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6q6V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6q6V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4867e0d-75fe-4df7-9870-bd462b36a909_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!RVjO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RVjO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RVjO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RVjO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RVjO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RVjO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_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 Performance, v2&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 Performance, v2" title="React Performance, v2" srcset="https://substackcdn.com/image/fetch/$s_!RVjO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RVjO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RVjO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RVjO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a2bdd5-4ebb-49d4-94f1-bca3c9b964a6_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"><svg role="img" 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"><g><title></title><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"><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"><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://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">React Performance, v2</a></strong></p><p>Make React apps fast where it actually matters.</p><p>An advanced performance course from <strong>Steve Kinney</strong>, focused on diagnosing real bottlenecks and fixing slow, janky React apps using modern React 19 patterns.</p><ul><li><p>&#128640; <strong>Modern React</strong>: Suspense, transitions, deferred values, hydration, server actions</p></li><li><p>&#128269; <strong>Debug Faster</strong>: Find unnecessary re-renders with React DevTools &amp; the Profiler</p></li><li><p>&#129504; <strong>Smart Optimization</strong>: Memoization, virtualization, code splitting, optimistic UI</p></li><li><p>&#9889; <strong>Feel-Fast UX</strong>: Learn how React Fiber prioritizes work to keep apps responsive</p></li></ul><p>&#9201; 4+ hours &#8226; &#11088; 4.8 rating<br>&#127979; From <strong>Frontend Masters</strong></p><p>&#128073; Watch the course: <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">https://frontendmasters.com/courses/react-performance-v2/</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128241; React-Native</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SL_h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SL_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SL_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SL_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SL_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SL_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg" width="1456" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native 0.84&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.84" title="React Native 0.84" srcset="https://substackcdn.com/image/fetch/$s_!SL_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SL_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SL_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SL_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d65e1-4fe6-4150-96d5-1aa7e214b0df_1636x380.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong><a href="https://reactnative.dev/blog/2026/02/11/react-native-0.84">React Native 0.84</a></strong></p><p>A new version of React Native just dropped. The highlights:</p><ul><li><p>Hermes V1 is now enabled by default for automatic performance gains and reduced memory usage</p></li><li><p>Precompiled binaries on iOS by default for faster builds, with an opt-out to build from source</p></li><li><p>Legacy Architecture Components removed for both iOS and Android</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!jnaO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jnaO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jnaO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jnaO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jnaO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jnaO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg" width="1200" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Gesture Handler 3.0 beta - Hook-Based API, Deeper Reanimated Integration &amp; More&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="Gesture Handler 3.0 beta - Hook-Based API, Deeper Reanimated Integration &amp; More" title="Gesture Handler 3.0 beta - Hook-Based API, Deeper Reanimated Integration &amp; More" srcset="https://substackcdn.com/image/fetch/$s_!jnaO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jnaO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jnaO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jnaO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc907029c-58e1-4e7f-904e-e1d6b7754689_1200x364.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"><svg role="img" 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"><g><title></title><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"><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"><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.swmansion.com/introducing-gesture-handler-3-0-hook-based-api-deeper-reanimated-integration-more-9185b0c8e305">Gesture Handler 3.0 beta - Hook-Based API, Deeper Reanimated Integration &amp; More</a></strong></p><p>This new major version has been overhauled internally. It drops support for the Legacy Architecture, unlocking new capabilities, such as attaching gestures to text fragments. No APIs were removed, but a new hooks-based API makes it compatible with the React Compiler. They also improved the integration with Reanimated and Animated.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://radon.swmansion.com/?utm_source=TWIR3">Radon by Software Mansion - Join 42k+ React Native developers using Radon for faster, more efficient React Native development.</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react-native/pull/55463">React Native PR - Support React Portal with Fabric</a> - React Native portals have been all the rage lately. Teleport just launched 1.0 last week, and we now have an experimental PR that kicks off the discussion of bringing first-class portal support to React Native, at the shadow-tree level (cross-platform).</p></li><li><p>&#128038; <a href="https://x.com/wcandillon/status/2020814389142605857">William Candillon sharing WebGPU + Skia demos</a> - You can seamlessly interleave one into the other from both sides.</p></li><li><p>&#128197; <a href="https://appjs.co/#speak">App.js Conf is looking for speakers! Apply to share your insights and stories about building with React Native &amp; Expo!</a> - The CFP is open until 28th February, and you can also get a 10% discount on tickets with our code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://www.chmal.it/blog/building-rozenite-the-injection/">Building Rozenite: The injection</a> - Explains how Rozenite is able to add specialized panels to the React Native DevTools, by hijacking a request.</p></li><li><p>&#128220; <a href="https://theguardian.engineering/blog/faster-cheaper-messier-lessons-from-switch-to-self-hosted-github-actions">Faster, cheaper, messier: lessons from our switch to self-hosted GitHub Actions</a> - Feedback from The Guardian after migrating their iOS app build from GitHub cloud runners to a self-hosted Mac Mini.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-modernize-mobile-retail-apps-with-expo">How to modernize mobile retail apps with Expo</a></p></li><li><p>&#128230; <a href="https://github.com/dannyhw/react-native-storybook-tools">React Native Storybook Tools</a> - RN Storybook maintainer created a new VSCode extension that lets you seamlessly navigate from/to your stories, and a Rozenite devtool plugin.</p></li><li><p>&#128230; <a href="https://github.com/vercel-labs/json-render/releases/tag/%40json-render%2Fcore%400.5.0">JSON Render 0.5 - Support for React Native</a> - The generative UI library from Vercel now comes with a React Native integration. See also this <a href="https://x.com/ctatedev/status/2020767354108453020">X video demo</a>.</p></li><li><p>&#128230; <a href="https://github.com/TheWidlarzGroup/react-native-video-feed">React Native Video Feed</a> - Starter for building TikTok-style video feeds, based on react-native-video v7 (still in beta).</p></li><li><p>&#128230; <a href="https://github.com/EvanBacon/expo-apple-targets">Expo Apple Target 4.0 - Add support for 20+ new targets</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-material-palette">React Native Material Palette - Android Palette API, extracts prominent colors from images</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-executorch/releases/tag/v0.7.0">React Native ExecuTorch 0.7 - Local speech synthesis</a> - If you are excited about offline-first AI, check also their <a href="https://github.com/software-mansion/react-native-executorch/discussions/736">roadmap toward v1</a>.</p></li><li><p>&#128230; <a href="https://github.com/arunabhverma/expo-paste-input">Expo Paste Input - Paste images and GIFs directly from the system clipboard, flexible native wrapper around </a><code>TextField</code></p></li><li><p>&#128230; <a href="https://sheet.lodev09.com/blog/side-sheets">True Sheet 3.9 - Side Sheets for iPad and Tablets</a></p></li><li><p>&#128230; <a href="https://github.com/brunobar79/expo-openclaw-chat">Expo OpenClaw Chat - Minimal SDK for Expo apps to connect to OpenClaw gateway</a></p></li><li><p>&#128230; <a href="https://hyochan.github.io/react-native-iap/blog/14.7.9/">React Native IAP 14.7.9 - 14.7.9 - tvOS, macOS &amp; watchOS Support</a></p></li><li><p>&#129302; <a href="https://github.com/callstackincubator/agent-skills/tree/main/skills/upgrading-react-native">Callstack Agent Skills updated - New skills to upgrade React Native / Expo</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=_XGlN4jvIaA">Beto - Expo Router iOS 26 Tutorial: Native Tabs, Toolbars, Zoom Transitions (SDK 55)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=CIlrfQSSkyc">Software Mansion - Radon, An IDE for React Native &amp; Expo</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=7EaQlJaFV4I">Callstack - What Is the React Native AI SDK? A Complete Intro &amp; Quickstart</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-353-node-api-support-for-react-native-with-krn-hansen">RNR 353 - Node-API Support for React Native with Kr&#230;n Hansen</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/41aa2d87">Rocket Ship 91 - Gesture Handler v3, AI Agents Everywhere, Animated Components &amp; Tiny Harvest Momentum</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/microsoft/TypeScript/issues/63085">TypeScript 6.0 Iteration Plan</a> - The last JS-based version (no 6.1 planned) is about to drop in beta (last minute edit: <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-6-0-beta/">6.0 beta is out</a>). A bridge release that prepares us for the faster 7.0 Go rewrite. One notable change is to turn strict mode on by default.</p></li><li><p>&#128064; <a href="https://webpack.js.org/blog/2026-04-02-roadmap-2026/">Webpack - Roadmap 2026</a> - The historical bundler plans to ship several new features, such as native CSS module, TS loader, multi-threading support, a universal runtime target, a unified minimizer API, and more. They also published v5.105 recently, with support for <code>tsconfig.json</code> alias resolution.</p></li><li><p>&#128214; <a href="https://main.vitest.dev/guide/test-tags.html">Vitest 4.1 beta - Test tags</a> - This upcoming feature lets you categorize tests under tags that you can configure independently. For example, you could tag a test as flaky to assign it a specific retry/timeout policy.</p></li><li><p>&#128220; <a href="https://domenic.me/jsdom-claude-code/">The Wrong Work, Done Beautifully</a> - The author of <code>jsdom</code> reflects on the usefulness of his popular library compared to headless browsers. However, Claude Code restored his enthusiasm for maintaining the project. By the way, v28.0 is out.</p></li><li><p>&#128220; <a href="https://www.atriiy.dev/blog/rolldown-high-performance-code-splitting">How Rolldown Works: High-Performance Code Splitting with Bitset Logic</a></p></li><li><p>&#128230; <a href="https://almostnode.dev/">Almostnode - Node.js in your browser</a> - This lightweight and open alternative to WebContainers can run Next.js and Vite apps.</p></li><li><p>&#128230; <a href="https://developer.chrome.com/release-notes/145">Chrome 145 - </a><code>Map.prototype.getOrInsert()</code><a href="https://developer.chrome.com/release-notes/145">, CSS </a><code>text-justify</code><a href="https://developer.chrome.com/release-notes/145">, </a><code>letter-spacing</code> - They also announced an <a href="https://developer.chrome.com/blog/webmcp-epp">early preview of WebMCP</a> in Chrome 146, letting you expose tools for AI agents to interact with your websites/apps.</p></li><li><p>&#128230; <a href="https://eslint.org/blog/2026/02/eslint-v10.0.0-released/">ESLint 10.0 - Improves JSX references tracking, removes eslintrc configuration, smaller</a></p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.9">Bun 1.3.9 - </a><code>bun run &#8211;parallel / &#8211;sequential</code></p></li><li><p>&#128230; <a href="https://code.visualstudio.com/updates/v1_109">VSCode 1.109 - Improved Agent UX and extensibility</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nq67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nq67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa8f321-e981-4067-a88e-99d185410a9c_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_!Nq67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Nq67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa8f321-e981-4067-a88e-99d185410a9c_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!qqmN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qqmN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qqmN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qqmN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qqmN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qqmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg" width="1456" height="867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&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_!qqmN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qqmN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qqmN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qqmN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a5c55cd-3654-4ce4-8ced-905071bd591c_1468x874.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"><svg role="img" 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"><g><title></title><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"><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"><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_!uMXB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uMXB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uMXB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uMXB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uMXB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uMXB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&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_!uMXB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uMXB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uMXB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uMXB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01a38736-f33c-45a3-a36d-86f7280d21ab_1462x704.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"><svg role="img" 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"><g><title></title><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"><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"><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 267]]></title><description><![CDATA[Bun, Next-Intl, Grab, Aria, ViewTransition, Skills, Gatsby, R3f | Worklets, Teleport, Voltra, AI SDK, Screens, Tamagui, Xcode, Agent-Device | State of JS, Temporal, Babel, Astro, npmx]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-267</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-267</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 06 Feb 2026 09:50:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!F9JA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>You&#8217;ll have to get used to it: yet another week filled with AI content. From MCPs to Agent Skills to AI-specific CLIs, we don&#8217;t know where to turn anymore.</p><p>We&#8217;re delighted to be ranked once again among the <a href="https://2025.stateofjs.com/en-US/resources/#newsletters">top 5 newsletters in the State of JavaScript 2025 survey</a>. Thanks for your trust!</p><p>By the way, we&#8217;d love your feedback &#8212; what do you like about the newsletter, and how could we make it better in 2026?</p><p>Just hit reply and let us know! &#10084;&#65039;</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_!Frpq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Frpq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Frpq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Frpq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Frpq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Frpq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b588d8f-32c1-4a51-82b7-7fc50f454d3d_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_!Frpq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Frpq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Frpq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Frpq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b588d8f-32c1-4a51-82b7-7fc50f454d3d_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZUzu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZUzu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e51c4a8e-dfaa-474a-b73b-8d65c6f21b35_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_!ZUzu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!aW6g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aW6g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aW6g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aW6g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aW6g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aW6g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d03f9fb6-254d-42a3-ad33-7dcf97771b8e_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 Performance, v2&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 Performance, v2" title="React Performance, v2" srcset="https://substackcdn.com/image/fetch/$s_!aW6g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aW6g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aW6g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aW6g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd03f9fb6-254d-42a3-ad33-7dcf97771b8e_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"><svg role="img" 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"><g><title></title><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"><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"><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://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">React Performance, v2</a></strong></p><p>Make React apps fast where it actually matters.</p><p>An advanced performance course from <strong>Steve Kinney</strong>, focused on diagnosing real bottlenecks and fixing slow, janky React apps using modern React 19 patterns.</p><ul><li><p>&#128640; <strong>Modern React</strong>: Suspense, transitions, deferred values, hydration, server actions</p></li><li><p>&#128269; <strong>Debug Faster</strong>: Find unnecessary re-renders with React DevTools &amp; the Profiler</p></li><li><p>&#129504; <strong>Smart Optimization</strong>: Memoization, virtualization, code splitting, optimistic UI</p></li><li><p>&#9889; <strong>Feel-Fast UX</strong>: Learn how React Fiber prioritizes work to keep apps responsive</p></li></ul><p>&#9201; 4+ hours &#8226; &#11088; 4.8 rating</p><p>&#127979; From <strong>Frontend Masters</strong><br>&#128073; Watch the course: <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">https://frontendmasters.com/courses/react-performance-v2/</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZUzu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZUzu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e51c4a8e-dfaa-474a-b73b-8d65c6f21b35_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;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ZUzu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!ZUzu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe51c4a8e-dfaa-474a-b73b-8d65c6f21b35_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-feb4">PostHog - 8 learnings from 1 year of agents</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/35590">React DOM PR - Support for </a><code>SubmitEvent.submitter</code></p></li><li><p>&#128064; React.dev PRs - Revamp docs of <a href="https://github.com/reactjs/react.dev/pull/8264">useOptimistic</a>, <a href="https://github.com/reactjs/react.dev/pull/8284">useActionState</a>, and <a href="https://github.com/reactjs/react.dev/pull/8279">useEffectEvent</a>.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/reacts-viewtransition-element/">React&#8217;s ViewTransition Element</a> - Chris Coyier compares the pros and cons of using <code>&lt;ViewTransition&gt;</code> VS the native platform API <code>document.startViewTransition()</code> in a React app.</p></li><li><p>&#128220; <a href="https://www.inngest.com/blog/migrating-off-nextjs-tanstack-start">Why Inngest migrated off Next.js to TanStack Start - Reducing local dev time by 83%</a> - Ingress was an early adopter of RSCs but got bitten by them, experienced slow local DX despite using Turbopack. They share their migration strategy and lessons learned.</p></li><li><p>&#128220; <a href="https://albertsikkema.com/ai/development/tools/reverse-engineering/2026/01/23/reverse-engineering-figma-make-files.html">Reverse-Engineering Figma Make: Extracting React Apps from Binary Files</a> - Figma Make uses React, Radix UI, and Tailwind under the hood, and you can recreate the underlying React app from <code>.fig</code> files.</p></li><li><p>&#128220; <a href="https://github.blog/engineering/from-pixels-to-characters-the-engineering-behind-github-copilot-clis-animated-ascii-banner/">The engineering behind GitHub Copilot CLI&#8217;s animated ASCII banner</a> - Rendering reliable animated components to the terminal UI looks complex, even if you leverage the React Ink renderer.</p></li><li><p>&#128220; <a href="https://www.developerway.com/posts/debugging-with-ai">Can AI actually debug complex React/Next.js issues?</a> - Throwing 3 real-world bugs at Claude Opus, it could only fix one properly.</p></li><li><p>&#128220; <a href="https://alexocallaghan.com/react-design-system-library-mcp">React design system library MCP</a> - How to leverage the experimental Storybook MCP server</p></li><li><p>&#128184; <a href="https://r2trck.com/twir-4">Building AI Voice Agents at Scale &#8212; The executive playbook by ElevenLabs</a></p></li><li><p>&#128230; <a href="https://next-intl.dev/blog/precompilation">Next Intl 4.8 - Ahead-of-time compilation</a> - This can significantly reduce your bundle size. Instead of bundling a full ICU parser to the client, it&#8217;s now possible to precompile ICU messages to a minified AST interpreted by a lightweight runtime.</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.8">Bun 1.3.8 - </a><code>Bun.markdown</code><a href="https://bun.com/blog/bun-v1.3.8"> API</a> - Comes with a first-class <code>Bun.markdown.react()</code> API and claims to be much faster than React alternatives.</p></li><li><p>&#128230; <a href="https://www.react-grab.com/blog/1-0">React Grab 1.0 - Select context for coding agents directly from the website</a> - A convenient tool can make your coding agent 3x faster thanks to more precise prompts.</p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog">shadcn/ui updates - RTL support, unified Radix UI Package</a></p></li><li><p>&#128230; <a href="https://react-aria.adobe.com/releases/v1-15-0.html">React Aria 1.15 - New </a><code>render</code><a href="https://react-aria.adobe.com/releases/v1-15-0.html"> prop, Agent Skills, constrain dates on blur</a></p></li><li><p>&#128230; <a href="https://github.com/gatsbyjs/gatsby/releases/tag/gatsby%405.16.0">Gatsby 5.16 - Add support for React 19 and Node 24</a></p></li><li><p>&#128230; <a href="https://rspress.rs/blog/rspress-v2">Rspress 2.0 - Documentation framework - Theme styling, AI-native, Shiki highlighting, performance, new plugins</a></p></li><li><p>&#128230; <a href="https://github.com/pmndrs/react-three-fiber/releases/tag/v10.0.0-alpha.1">React Three Fiber 10.0 alpha - Backward compatible, WebGPU support, TSL hooks, new scheduler</a></p></li><li><p>&#128230; <a href="https://github.com/mutativejs/travels/releases/tag/v1.0.0">Travels 1.0 - Fast, framework-agnostic undo/redo library with React integrations</a></p></li><li><p>&#128230; <a href="https://www.xoid.dev/blog/introducing-prefill">Prefill - Partial application for React components</a></p></li><li><p>&#128230; <a href="https://blog.meteor.com/meteor-3-4-is-out-rspack-integration-4x-faster-builds-8x-smaller-bundles-and-extended-bundler-36600fb45976">Meteor 3.4 - Rspack integration, 4x faster builds, 8x smaller bundles, and extended bundler features</a></p></li><li><p>&#128230; <a href="https://github.com/Rel1cx/eslint-react/releases/tag/v2.9.0">ESLint React 2.9 - Extract React RSC sub-plugin, new RSC preset</a></p></li><li><p>&#128230; <a href="https://github.com/rstackjs/rsbuild-plugin-react-router/blob/main/CHANGELOG.md#010">Rsbuild Plugin React Router 0.1 - Behavior closer to React Router&#8217;s official Vite plugin</a></p></li><li><p>&#129302; <a href="https://github.com/remix-run/agent-skills">React Router Agent Skills</a></p></li><li><p>&#129302; <a href="https://skills.sh/vercel-labs/agent-skills/vercel-composition-patterns">React Composition Patterns Agent Skills</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=98PvcFL6DmE">Toby Mey - Where to put Auth in Next.js 16?</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=5NRAOnKc3c8">Remotion - Create motion graphics with AI &#8211; Simple tutorial for beginners</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_!deYG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!deYG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!deYG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!deYG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!deYG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!deYG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8339dbba-faf7-42b5-936a-ba68b79a37db_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_!deYG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!deYG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!deYG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!deYG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8339dbba-faf7-42b5-936a-ba68b79a37db_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZE6e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZE6e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!ZE6e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!ZE6e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!ZE6e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZE6e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_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_!ZE6e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!ZE6e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!ZE6e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!ZE6e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd7dbb12-edf8-40c7-bb5c-bb1d63708ed2_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!qH0E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qH0E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qH0E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qH0E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qH0E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qH0E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_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_!qH0E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qH0E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qH0E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qH0E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28aa9ee4-d1e3-4bdd-868b-3e1a0099782d_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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=26q1&amp;utm_content=2nd">Still writing tests manually?</a></strong></p><p>Notion, Dropbox 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=2nd">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=2nd">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=2nd">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gn0y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gn0y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Gn0y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Gn0y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Gn0y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gn0y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcfaabae-abcc-4477-b31c-b4bbd85fdad0_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_!Gn0y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Gn0y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Gn0y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Gn0y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcfaabae-abcc-4477-b31c-b4bbd85fdad0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!F9JA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F9JA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 424w, https://substackcdn.com/image/fetch/$s_!F9JA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 848w, https://substackcdn.com/image/fetch/$s_!F9JA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!F9JA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F9JA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg" width="1200" height="644" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:644,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Behind the Scenes of React Native Multithreading: Vision Camera V5 x React Native Worklets&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="Behind the Scenes of React Native Multithreading: Vision Camera V5 x React Native Worklets" title="Behind the Scenes of React Native Multithreading: Vision Camera V5 x React Native Worklets" srcset="https://substackcdn.com/image/fetch/$s_!F9JA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 424w, https://substackcdn.com/image/fetch/$s_!F9JA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 848w, https://substackcdn.com/image/fetch/$s_!F9JA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!F9JA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaaafa66-3547-468c-be94-b7bbd3647e32_1200x644.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"><svg role="img" 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"><g><title></title><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"><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"><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.swmansion.com/behind-the-scenes-of-react-native-multithreading-vision-camera-v5-x-react-native-worklets-a102c37b32ae">Behind the Scenes of React Native Multithreading: Vision Camera V5 x React Native Worklets</a></strong></p><p>Worklets have been extracted from Reanimated to become a first-class multithreading primitive. It has been integrated into the upcoming VisionCamera V5, enabling its real-time frame processor system to run directly on the Camera Thread.</p><p>Also, take a look at &#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.8.0-bundle-mode-preview-1">Worklets 0.8 - Bundle Mode preview</a>. It makes it possible to use third-party libraries and do network requests within worklets. This mode is opt-in but might become the default in the future.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zxqb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zxqb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Zxqb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Zxqb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Zxqb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zxqb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a26328d-c2f6-428b-8101-5300d42b47ae_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_!Zxqb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Zxqb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Zxqb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Zxqb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a26328d-c2f6-428b-8101-5300d42b47ae_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://radon.swmansion.com/?utm_source=TWIR2&amp;utm_medium=link2">Stop searching for components manually - try the Element Inspector in Radon to build React Native apps faster.</a></p></li><li><p>&#128220; <a href="https://www.chmal.it/blog/building-voltra-renderer">Building Voltra: Renderer</a> - The creator of the Widgets and Live Activities library explains how it works under the hood. It&#8217;s a custom renderer, but using <code>react-reconciler</code> wasn&#8217;t a great fit, so they took inspiration from React DOM SSR code instead.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-increase-mobile-app-downloads-and-retention">5 tips to increase mobile app downloads and retention in 2026</a></p></li><li><p>&#128230; <a href="https://kirillzyusko.github.io/react-native-teleport/blog/welcome">Teleport 1.0 - Brings true native portals to React Native</a> - The equivalent of <code>ReactDOM.createPortal</code> for mobile, with additional view re-parenting, re-use, and pre-rendering capabilities. It&#8217;s cross-platform and also supports web.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.21.0">Screens 4.21 - Android stack screen preloading, iOS xcassets icon catalogs support for key navigation UI elements</a> - Note that iOS xcassets icon catalogs are <a href="https://github.com/react-navigation/react-navigation/commit/5904082ab3f09787ea8a3581837057d7fd0033d0">already integrated into React Navigation for native tabs</a>.</p></li><li><p>&#128230; <a href="https://www.apple.com/newsroom/2026/02/xcode-26-point-3-unlocks-the-power-of-agentic-coding">Xcode 26.3 RC - Unlocks the power of agentic coding</a> - If you don&#8217;t want to use Xcode as an IDE, you can still leverage the new Xcode MCP and its <code>RenderPreview</code> tool to feed your AI with visual feedback (SwiftUI previews, it probably doesn&#8217;t work with RN views).</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device">Agent-Device - CLI to control iOS and Android devices for AI agents</a> - The equivalent of Vercel&#8217;s <code>agent-browser</code> for mobile. Support for TV/desktop apps planned.</p></li><li><p>&#128230; <a href="https://www.callstack.com/blog/announcing-ai-sdk-profiler-for-react-native">AI SDK Profiler - New Rozenite DevTools plugin</a> - Lets you inspect OpenTelemetry spans coming from the RN AI SDK</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/ai/releases/tag/v0.12.0">AI SDK 0.12 - Profiler plugin, ai v6, tool calling and re-ranking for Llama models</a></p></li><li><p>&#128230; <a href="https://tamagui.dev/blog/version-two">Tamagui 2.0 RC - Universal style library for React - More stable, easy, documented, fast, and feature-complete</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.3.0">Uniwind 1.3 - Support data attributes</a></p></li><li><p>&#128230; <a href="https://github.com/riteshshukla04/react-native-superconfig">Superconfig - 18x faster than react-native-config, using Nitro</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=2Pes2Y11yWM">Callstack - Implementing an Android TurboModule from Scratch</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/@reactnativelive">React Native Live - New monthly live show channel from Infinite Red</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=XkxmtLozKoA">Beto - Are You Leaking Your Environment Variables? React Native + Expo</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=mzRgSxf5oRk">Simon Grimm - 10 Tips You Need For Expo Router in 2026!</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-352-expo-launch-with-cedric-van-putten">RNR 352 - Expo Launch with Cedric van Putten</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eyXb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eyXb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!eyXb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!eyXb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!eyXb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eyXb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8228368-8498-4559-b5f3-9491a278f976_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_!eyXb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!eyXb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!eyXb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!eyXb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8228368-8498-4559-b5f3-9491a278f976_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128202; <a href="https://2025.stateofjs.com/en-US/">State of JavaScript 2025 - Survey Results</a> - React and Next.js keep growing in usage, but satisfaction is decreasing. Meanwhile, alternatives such as Astro and Solid have pretty high satisfaction scores.</p></li><li><p>&#128220; <a href="https://blogs.igalia.com/compilers/2026/01/31/implementing-the-temporal-proposal-in-javascriptcore/">Implementing the Temporal proposal in JavaScriptCore</a> - The JS Temporal API should be in all browsers relatively soon, with Safari being the last remaining browser. The implementation for JSC (Safari, Bun) is complete but not merged yet.</p></li><li><p>&#128220; <a href="https://nodejsdesignpatterns.com/blog/nodejs-path-traversal-security/">Node.js Path Traversal: Prevention &amp; Security Guide</a> - Explains how to secure your Node app from unsafe path inputs</p></li><li><p>&#128220; <a href="https://nolanlawson.com/2026/01/31/building-a-browser-api-in-one-shot/">Building a browser API in one shot</a> - With a good prompt created by an expert, Claude Opus can one-shot a decent TypeScript implementation of <code>IndexedDB</code>.</p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-5170/">Astro 5.17 - Dev toolbar placement, partitioned cookie, async file loader parser</a></p></li><li><p>&#128230; <a href="https://turborepo.dev/blog/2-8">Turborepo 2.8 - Git worktree support, Agent skills, AI-enabled</a></p></li><li><p>&#128230; <a href="https://babeljs.io/blog/2026/01/31/7.29.0">Babel 7.29 - The last Babel 7 minor release</a> - They are also announcing Babel 8 in RC, aiming to be easy to adopt, and ESM-only.</p></li><li><p>&#128279; <a href="https://github.com/npmx-dev/npmx.dev">npmx - A fast, modern browser for the npm registry</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DSQq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DSQq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DSQq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DSQq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DSQq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DSQq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/421b9474-1c1d-4f73-8e25-7776122cb136_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_!DSQq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DSQq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DSQq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DSQq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F421b9474-1c1d-4f73-8e25-7776122cb136_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!QNj1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QNj1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QNj1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QNj1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QNj1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QNj1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg" width="1200" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1200,&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_!QNj1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QNj1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QNj1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QNj1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c46cb9-5072-4ee3-b234-e23f0b4b27e7_1200x677.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"><svg role="img" 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"><g><title></title><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"><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"><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_!FKod!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FKod!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FKod!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FKod!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FKod!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FKod!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg" width="1000" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_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_!FKod!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FKod!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FKod!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_1000x770.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FKod!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F297ed2bf-3534-4ca9-94e3-9fc84d2d62d3_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"><svg role="img" 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"><g><title></title><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"><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"><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 266]]></title><description><![CDATA[DoS, shadcn, Skills, Rspack, React Aria, TanStack, Remotion, ChartGPU | Expo 55 beta, Hermes, Expo Router, Widgets, CSS, AI, Bootsplash, Detox | TC39, Rolldown, Yarn, Nodde, Mermaid, Unplugin]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-266</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-266</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 30 Jan 2026 14:04:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EeMe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>This week, the community continued to publish React-related Agent skills. React RSCs and Next.js are hit by another set of DoS vulnerabilities, and it&#8217;s recommended to upgrade immediately.</p><p>The React Native side is more exciting, with Expo SDK 55 in beta and upcoming support for new CSS features. We now have 2 distinct libraries implementing home screen widgets, and need to understand the trade-offs of each approach.</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_!4FGF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4FGF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4FGF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4FGF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4FGF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4FGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94d45d69-da80-424a-8656-ee04df547394_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_!4FGF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4FGF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4FGF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4FGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94d45d69-da80-424a-8656-ee04df547394_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!6ZHZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg" width="1200" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Automate your React Localization with Crowdin Stack&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="Automate your React Localization with Crowdin Stack" title="Automate your React Localization with Crowdin Stack" srcset="https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6ZHZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F217ab160-f907-4ebd-876d-6d7e5dba9063_1200x664.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"><svg role="img" 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"><g><title></title><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"><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"><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/gZ0LVRB">Automate your React Localization with Crowdin Stack</a></strong></p><p>Stop treating i18n as a deployment bottleneck&#128721; <strong>Crowdin</strong> automates your React localization workflow. Sync content to Crowdin, translate with AI and human proofreaders, and auto-sync the translations back to your git.</p><ul><li><p><strong>Repo Integration:</strong> Connect directly to GitHub/GitLab repo. Localization becomes a simple, continuous part of your CI/CD pipeline.</p></li><li><p><strong>Context Harvester:</strong> Our open-source CLI uses Agentic AI to scan your JSX. It automatically provides translators with the exact UI context for every string.</p></li><li><p><strong>Over-The-Air (OTA) Updates:</strong> Fix a typo in real-time. With OTA SDK, you can push updates to your React Native app instantly. No rebuilds or App Store reviews required.&#9889;</p></li></ul><p><strong>Focus on your components. Crowdin handles the translation.</strong> &#128640;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128272; <a href="https://github.com/facebook/react/security/advisories/GHSA-83fc-fqcc-2hmg">React CVE-2026-23864</a> - More Denial-of-Service vulnerabilities have been found in the React RSC-related packages, and have already patched in all React 19 minor versions. All RSC frameworks can be affected. It&#8217;s recommended to update immediately.</p></li><li><p>&#128272; <a href="https://vercel.com/changelog/summaries-of-cve-2025-59471-and-cve-2025-59472">Next.js DoS CVEs</a> - In addition to the CVE above, Next.js also published fixes for 2 medium-severity DoS vulnerabilities affecting the Image Optimizer and PPR in self-hosted deployments.</p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/35617">React PR - Init Claude config</a> - It seems like the React core team is planning to leverage AI more.</p></li><li><p>&#128064; <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/pull/74383">React-DOM Types PR - Properly type form-related events</a> - Narrowing the type of <code>event.target</code> to its underlying element, for example, <code>HTMLInputElement</code>.</p></li><li><p>&#128064; <a href="https://github.com/adobe/react-spectrum/pull/9499">React Aria PR - Add </a><code>render</code><a href="https://github.com/adobe/react-spectrum/pull/9499"> prop to allow customizing DOM element</a> - React Aria chose the render prop pattern (following Ariakia and Base UI) and not the <code>asChild</code> pattern popularized by Radix UI.</p></li><li><p>&#128064; <a href="https://github.com/TanStack/router/pull/6277">TanStack PR - New </a><code>@tanstack/meta</code><a href="https://github.com/TanStack/router/pull/6277"> package</a> - New package coming for composable SEO / meta tags management.</p></li><li><p>&#128467; <a href="https://reactsummit.com/?utm_source=thisweekinreact">React Summit</a> - &#127475;&#127473; Amsterdam - 12 &amp; 16 Jun. The world&#8217;s biggest React conference is back! Knowledge you&#8217;ll use, people you&#8217;ll remember, and an after-party you won&#8217;t forget. Reserve your spot to with promo code TWIR (-10%)</p></li><li><p>&#128220; <a href="http://paulmakeswebsites.com/writing/shadcn-radio-button/">The Incredible Overcomplexity of the Shadcn Radio Button</a> - A fair criticism, questioning the need for abstraction layers and repurposing HTML elements, instead of just styling <code>&lt;input type="radio"&gt;</code>.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/single-flight-mutations-in-tanstack-start-part-1/">Single Flight Mutations in TanStack Start</a> - Explains how to mutate the data and refresh the UI in a single network round trip. The first article shows the big picture with a simple implementation, while the second makes it more robust and scalable using middleware.</p></li><li><p>&#128220; <a href="https://stylexjs.com/blog/a-new-year-2026">StyleX - New Year, New Website</a> - The modern CSS-in-JS library gives an overview of 2025, covering project adoption outside Meta, new APIs, and easier integration. They rebuilt the docs with Waku to dogfood the project and its compatibility with RSCs.</p></li><li><p>&#128220; <a href="https://www.glean.com/blog/designing-glean-for-accessibility-design-compliance">Designing Glean for accessibility &#8211; design system and compliance</a> - Positive feedback after migrating their design system to Base UI.</p></li><li><p>&#128220; <a href="https://alexocallaghan.com/open-sourcing-mfe-react-bridge">Open-sourcing our microfrontend React bridge</a> - A simple alternative to the Module Federation bridge to help you manage microfrontends using distinct React versions.</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-jan28">Product for Engineers - How startups lose their edge</a></p></li><li><p>&#128230; <a href="https://github.com/web-infra-dev/rspack/releases/tag/v2.0.0-alpha.1">Rspack 2.0.0-alpha.1 - Built-in support for React Server Components</a> - RSC support also comes with a higher-level <a href="https://github.com/rstackjs/rsbuild-plugin-rsc">RSC plugin for Rsbuild</a>.</p></li><li><p>&#128230; <a href="https://github.com/ChartGPU/ChartGPU">ChartGPU - Beautiful, open source, TypeScript WebGPU-based charting library, with React bindings</a> - This new library should be fast for large datasets. However, we are still waiting for Firefox to support WebGPU.</p></li><li><p>&#128230; <a href="https://github.com/ospm-app/eslint-plugin-react-signals-hooks/tree/main/packages/eslint-plugin-react-unhookify">ESLint Plugin React Unhookify</a> - Now that we have the React Compiler, this plugin contains rules to remove useless memoizations and suggests a compiler adoption strategy.</p></li><li><p>&#128230; <a href="https://github.com/edmundhung/conform/releases/tag/v1.16.0">Conform 1.16 - New </a><code>configureForms</code><a href="https://github.com/edmundhung/conform/releases/tag/v1.16.0"> future API</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-01-inline-side-styles">shadcn/ui Changelog - January 2026 - Inline Start and End Styles for Base UI components</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7130">React Router 7.13 - Add </a><code>crossOrigin</code><a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7130"> prop to Links component</a></p></li><li><p>&#128230; <a href="https://github.com/storybookjs/storybook/releases/tag/v10.2.0">Storybook 10.2 - New Viewports and Zoom UI, MDX support for Storybook MCP</a></p></li><li><p>&#128230; <a href="https://github.com/garmeeh/next-seo/releases/tag/next-seo%407.1.0">Next-SEO 7.1 - New HowToJsonLd component for tutorials SEO</a></p></li><li><p>&#129302; <a href="https://github.com/vercel-labs/next-skills">Next.js Skills - Newly published Vercel Agent skills for common Next.js workflows</a> - Skills for the App Router, Cache Components, performance, and more.</p></li><li><p>&#129302; <a href="https://www.solberg.is/the-missing-nextjs-agents-file">The Missing Next.js AGENTS.md File</a> - Relatedly, Vercel has found that <a href="https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals">AGENTS.md outperforms Skills in evals</a> for general framework knowledge.</p></li><li><p>&#129302; <a href="https://github.com/resend/react-email/tree/canary/skills/react-email">React Email Agent Skills</a></p></li><li><p>&#129302; <a href="https://vercel.com/changelog/ai-code-elements">AI Code Elements - Vercel components to build the next generation of IDEs</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Xtd4DjU9AU8">Jonny Burger - Creating videos just from prompting - Claude Code and Remotion</a> - Vibe coding videos with Remotion is trending lately. A trend also supported by motion designer trolls posting their hand-made videos as if it only required a single prompt. Here&#8217;s a demo from its author. See also this <a href="https://x.com/rameerez/status/2015859121661059569">feedback on X</a> from someone who rendered a real product launch video.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=F6romq71KtI">Delba - Next.js Patterns: Public pages with personalization</a> - Greatly explains the usefulness of Cache Components to keep navigation fast. By the way, Delba uses Remotion.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=AZ9i3eoyrnE">Shruti Kapoor - React Performance Optimizations: How to Fix a Slow App</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_!FkYw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FkYw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FkYw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FkYw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FkYw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FkYw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab2a0fad-c5c2-43d7-bbe7-06c98ad43892_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_!FkYw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FkYw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FkYw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FkYw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab2a0fad-c5c2-43d7-bbe7-06c98ad43892_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!DsOn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DsOn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DsOn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DsOn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DsOn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DsOn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/344a31d9-310a-4d71-a9b8-b68d242cf9bb_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 better React Native &amp; Expo apps with Radon&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 better React Native &amp; Expo apps with Radon" title="Build better React Native &amp; Expo apps with Radon" srcset="https://substackcdn.com/image/fetch/$s_!DsOn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DsOn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DsOn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DsOn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344a31d9-310a-4d71-a9b8-b68d242cf9bb_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"><svg role="img" 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"><g><title></title><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"><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"><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://radon.swmansion.com/features?utm_source=TWIR&amp;utm_medium=2nd">Build better React Native &amp; Expo apps with Radon</a></strong></p><p>Stop context switching between your code editor and native IDEs. Radon helps you write cleaner code, catch errors instantly, and focus on what matters most &#8212; building great apps.</p><p><strong>Why developers are choosing Radon:</strong></p><ul><li><p><strong>&#129470; Built-in previews:</strong> Radon runs iOS Simulator and Android emulator directly in your VS Code or Cursor project.</p></li><li><p><strong>&#128269; Element Inspector:</strong> You can jump directly from preview to a file where your React Native component is defined. It can&#8217;t really get simpler than that.</p></li><li><p><strong>&#9199;&#65039; Instant Replays (PRO):</strong> Missed a bug during a manual test? Rewatch the last 30 seconds of device interaction.</p></li><li><p><strong>&#129302; Radon AI (PRO):</strong> your coding assistant with the latest React Native knowledge.</p></li></ul><p><a href="https://radon.swmansion.com/features?umt_source=TWIR&amp;utm_medium=2ndsp">Discover all the features</a> &amp; turn your code editor into a React Native IDE you&#8217;ll actually enjoy using.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!EeMe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EeMe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EeMe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EeMe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EeMe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EeMe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg" width="1000" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb4d9f55-e094-4689-ae96-289be240585f_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;Expo SDK 55 Beta&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 55 Beta" title="Expo SDK 55 Beta" srcset="https://substackcdn.com/image/fetch/$s_!EeMe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EeMe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EeMe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EeMe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4d9f55-e094-4689-ae96-289be240585f_1000x563.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"><svg role="img" 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"><g><title></title><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"><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"><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-55-beta">Expo SDK 55 Beta</a></strong></p><p>It&#8217;s been longer than usual since the last SDK, so this new SDK 55 looks like a significant update. The stable version will be released in about two weeks; until then, you can already check the beta release notes with a long list of highlights:</p><ul><li><p>React 19.2, unlocking <code>&lt;Activity&gt;</code>, <code>useEffectEvent()</code></p></li><li><p>React Native 0.83.1, unlocking DOM Node APIs, new DevTools features, Intersection Observers (experimental)</p></li><li><p>New Architecture only, Legacy Architecture removed</p></li><li><p>Revamped project template, using native Tabs by default</p></li><li><p>Hermes v1 opt-in flag, for performance improvements (but slower native build times)</p></li><li><p>Hermes bytecode diffing opt-in flag, for ~75% smaller incremental OTA updates</p></li><li><p>AI tooling, MCP server, Agent skills</p></li><li><p>Expo Router 7 beta with more native features (<a href="https://x.com/Baconbrix/status/2014480349066305953">preview tweet</a>) and web SSR (alpha)</p></li><li><p>Expo brownfield integration to existing native apps</p></li><li><p>Expo UI improvements, support for Jetpack Compose coming</p></li><li><p>Expo Widgets alpha for iOS home screen widgets and Live Activities</p></li><li><p>&#8230; and more</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://www.infragistics.com/blogs/react-app-examples/?utm_source=this-week-in-react&amp;utm_medium=referral&amp;utm_campaign=ignite-ui-react&amp;utm_term=newsletter-sponsorship&amp;utm_content=10-react-grid-examples">10 Real-World React App Examples to Inspire Your Next Project</a></p></li><li><p>&#128038; <a href="https://x.com/nishanbende/status/2016367516759867849">Synchronous TextInput validation in React Native and Expo UI</a></p></li><li><p>&#128038; <a href="https://x.com/_ikswodarap/status/2014677703266288082">CSS </a><code>calc()</code><a href="https://x.com/_ikswodarap/status/2014677703266288082"> support coming to React Native?</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/bringing-css-clipping-to-react-native">Bringing CSS Clipping to React Native</a> - A great deep-dive article that explores what it would take to support masking with CSS <code>clip-path()</code> natively on iOS and Android, covering the whole rendering stack. What a great way to announce upcoming support, with PRs being under review!</p></li><li><p>&#128220; <a href="https://expo.dev/changelog/compiler-cache-for-builds">Expo EAS - Compiler cache for builds and Workflows</a> - Set an env variable to get 30% faster builds.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/voltra/releases/tag/v1.1.0">Voltra 1.1 - Android widget support, iOS Enhancements</a></p></li><li><p>&#128230; <a href="https://github.com/zoontek/react-native-bootsplash/releases/tag/7.0.0">Bootsplash 7.0 - Edge-to-edge by default, improved Expo plugin</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-builder-bob/releases/tag/create-react-native-library%400.57.0">create-react-native-library 0.57 - Improved templates, more example app types</a></p></li><li><p>&#128230; <a href="https://github.com/corasan/react-native-nitro-mlx/releases/tag/v0.3.0">Nitro MLX 0.3 - Tool calling</a></p></li><li><p>&#128230; <a href="https://github.com/wix/Detox/releases/tag/20.47.0">Detox 20.47 - Support for RN 0.83 and iOS 26, new </a><code>by.type()</code><a href="https://github.com/wix/Detox/releases/tag/20.47.0"> API for semantic matching</a></p></li><li><p>&#128230; <a href="https://www.expoaichatbot.com/changelog#v2-release">Expo AI Chatbot 2.0 - Incognito mode, long-term memory, upgrades to Expo 54 and AI SDK 5</a></p></li><li><p>&#129302; <a href="https://skills.sh/vercel-labs/agent-skills/vercel-react-native-skills">Vercel React Native Skills - Agent Skills extracted from lessons of building v0 for iOS, and the upcoming Vercel app</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=tDdtHG3z1jQ">Software Mansion - First Look at Expo Widgets: iOS Widgets Without Native Code</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=fCpI0IM3niU">Software Mansion - Introducing Expo Brownfield Target &#8211; Automate Brownfield Setup in Your Expo App</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-351-transforming-packages-to-nitro-with-marc-rousavy">RNR 351 - Transforming Packages to Nitro with Marc Rousavy</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/59b3e1c0">RocketShip 90 - Expo SDK 55, AI Agent Skills, Tiny Harvest Revenue &amp; Industrial Revolution of Software</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#129419; <a href="https://bsky.app/profile/robpalmer.bsky.social/post/3mcz334l4ck27">TC39 - Proposals progressing after the 112th meeting</a> - Upsert, import sync, Error options, and more.</p></li><li><p>&#128220; <a href="https://nerdy.dev/anchor-interpolated-morphing">Anchor Interpolated Morph</a> - A FLIP-inspired animation technique using modern CSS.</p></li><li><p>&#128230; <a href="https://voidzero.dev/posts/announcing-rolldown-rc">Rolldown 1.0 RC</a> - The next-gen high-performance Rust bundler now has a stable API. It should become the default bundler of Vite 8.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/remix/releases/tag/%40remix-run/component%400.3.0">Remix Component 0.3 - Updated Component API, no stateless component, new setup prop</a> - Interesting to see how the Remix component model evolves and differs from React.</p></li><li><p>&#128230; <a href="https://github.com/shuding/better-all">Better All - Better </a><code>Promise.all</code><a href="https://github.com/shuding/better-all"> with automatic dependency optimization</a> - A clever way to minimize async waterfalls and maximize parallelization.</p></li><li><p>&#128230; <a href="https://yarn6.netlify.app/blog/2026-01-28-yarn-6-preview/">Yarn 6 Preview - Complete rewrite in Rust, strict compatibility, Yarn Switch, Lazy Installs</a> - Benchmarks show the Rust rewritten version is now faster than pnpm.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v25.5.0">Node.js 25.5 - Simplifies building Single Executable Applications (SEA)</a> - See also this <a href="https://joyeecheung.github.io/blog/2026/01/26/improving-single-executable-application-building-for-node-js/">deep-dive blog post</a> from the PR author.</p></li><li><p>&#128230; <a href="https://github.com/web-infra-dev/rstest/releases/tag/v0.8.0">Rstest 0.8 - Browser Mode (experimental)</a></p></li><li><p>&#128230; <a href="https://github.com/1jehuang/mermaid-rs-renderer">Mermaid Rust Renderer - Much faster than the official Mermaid CLI, no headless browser overhead</a></p></li><li><p>&#128230; <a href="https://github.com/unjs/unplugin/releases/tag/v3.0.0">Unplugin 3.0 - Unified bundler plugin system - Add Bun plugin support, drop Node 18 and CJS build</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DNnS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DNnS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_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_!DNnS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!DNnS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdf5478f-5b56-4ade-bbe7-3a629aa5d7a4_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!p8U0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p8U0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p8U0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p8U0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p8U0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p8U0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg" width="1000" height="1077" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1077,&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_!p8U0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 424w, https://substackcdn.com/image/fetch/$s_!p8U0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 848w, https://substackcdn.com/image/fetch/$s_!p8U0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!p8U0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f1f431c-6ec3-4beb-aa25-7baaf319d1bc_1000x1077.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"><svg role="img" 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"><g><title></title><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"><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"><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_!3bYq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3bYq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3bYq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3bYq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3bYq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3bYq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg" width="1000" height="1123" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1123,&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_!3bYq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3bYq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3bYq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3bYq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe32c6b27-4678-4b71-9aa1-dd93b97a2133_1000x1123.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"><svg role="img" 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"><g><title></title><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"><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"><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 265]]></title><description><![CDATA[React Skills, json-render, ViewTransition, Base UI, shadcn, Store, MDX, GTK | RN Windows/macOS/Harmony, Brownie, Enriched, Navigation, Teleport, Nitro | TC39, Astro, jQuery, Node.js]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-265</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-265</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 23 Jan 2026 14:06:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RGHp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>This week, we saw a lot of activity on X about the new AI skills system. Personally, what excited me most is the new Firefox release that unlocks interesting things for React developers.</p><p>The React Native ecosystem is also super active, with many interesting releases. And I&#8217;m sure Expo 55 beta will drop just after we send our email &#128517;, so make sure to check their blog because it&#8217;s coming soon.</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_!_GQr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_GQr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_GQr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_GQr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_GQr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_GQr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29fa4440-528a-4dc8-b2d2-ea158d6104bb_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_!_GQr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_GQr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_GQr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_GQr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29fa4440-528a-4dc8-b2d2-ea158d6104bb_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!8Une!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Une!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Une!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Une!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Une!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Une!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg" width="1283" height="723" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:723,&quot;width&quot;:1283,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Debugging Next.js in Production&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="Debugging Next.js in Production" title="Debugging Next.js in Production" srcset="https://substackcdn.com/image/fetch/$s_!8Une!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Une!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Une!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Une!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e49b689-d21d-440e-bace-7d70cbeda0fe_1283x723.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"><svg role="img" 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"><g><title></title><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"><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"><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/workshop-nextjs-feb-2026/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjsworkshop&amp;utm_content=newsletter-workshop-register">Debugging Next.js in Production</a></strong></p><p>Next.js makes it easy to ship fast, but once your app is in production it can be hard to tell where errors, slow requests, or hydration issues are really coming from.</p><p>Join Sentry&#8217;s hands-on workshop where Sergiy Dybskiy will dives into how these problems show up in real apps and how to connect what users experience with what&#8217;s happening under the hood. &#128640;</p><p><a href="https://sentry.io/resources/workshop-nextjs-feb-2026/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q1-nextjsworkshop&amp;utm_content=newsletter-workshop-register">Register today</a>!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!Q3aP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q3aP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q3aP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q3aP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q3aP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q3aP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg" width="1000" height="331" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:331,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agent Skills&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 Skills" title="Agent Skills" srcset="https://substackcdn.com/image/fetch/$s_!Q3aP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q3aP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q3aP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q3aP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0db16f0-a53c-440f-b600-90db76d64f28_1000x331.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"><svg role="img" 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"><g><title></title><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"><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"><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://agentskills.io/">Agent Skills</a></strong></p><p>A new Anthropic spec is gaining traction in the AI dev community. Skills let agents acquire capabilities on demand via progressive disclosure&#8212;lazy-loading only what&#8217;s needed to keep context slim. It&#8217;s been a hot topic in React this week, with multiple projects shipping open-source skills and tooling:</p><ul><li><p><a href="https://skills.sh/">Skills.sh</a>, a platform launched by Vercel to discover popular open source skills</p></li><li><p><a href="https://vercel.com/blog/introducing-react-best-practices">React Best Practices</a> by Vercel for React and Next.js skills. I also liked the related article from one of the authors (<a href="https://x.com/shuding/status/2013632751568851233">Performance Is Not a Technical Problem</a>).</p></li><li><p><a href="https://www.callstack.com/blog/announcing-react-native-best-practices-for-ai-agents">React Native Best Practices</a> by Callstack, including many React Native optimization skills</p></li><li><p><a href="https://github.com/expo/skills">Expo Skills</a> for Expo apps and EAS projects</p></li><li><p><a href="https://x.com/Remotion/status/2013626968386765291">Remotion Skills</a> are trending on X, showing that you can vibe code videos with React &#129322;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!RGHp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RGHp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RGHp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RGHp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RGHp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RGHp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg" width="1000" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Firefox 147&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="Firefox 147" title="Firefox 147" srcset="https://substackcdn.com/image/fetch/$s_!RGHp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RGHp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RGHp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RGHp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9ed6867-3f4d-493b-9241-e487439a1f6e_1000x578.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"><svg role="img" 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"><g><title></title><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"><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"><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.firefox.com/en-US/firefox/147.0/releasenotes/">Firefox 147</a></strong></p><p>You might wonder why Firefox is the headline of the React section? It turns out this release is quite important for React developers, unlocking 3 new APIs that are now available in all browsers &#127881;:</p><ul><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API/Using_types">View transition types</a> - React is relying on it (<code>document.startViewTransition({update, types})</code>) to conditionally enable its <code>&lt;ViewTransition&gt;</code> component. That component is still canary, but once unflagged, it should now work in all recent browsers!</p></li><li><p><a href="https://developer.chrome.com/blog/anchor-positioning-api">CSS anchor positioning</a> - An awesome addition to CSS that should replace the need for JS-based positioning libraries many React apps used for dropdowns and tooltips, such as Tether, Popper.js, Floating UI&#8230;</p></li><li><p><a href="https://developer.chrome.com/docs/web-platform/navigation-api/">Navigation API</a> - This completely redefines the APIs used to build client-side routers / SPAs, providing a clean, centralized way to intercept navigation events, instead of using the clunky <code>history</code> API.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://www.infragistics.com/blogs/react-app-examples/?utm_source=this-week-in-react&amp;utm_medium=referral&amp;utm_campaign=ignite-ui-react&amp;utm_term=newsletter-sponsorship&amp;utm_content=10-react-grid-examples">10 Real-World React App Examples to Inspire Your Next Project</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/35449">React RFC PR - useStore/createStore APIs</a> - A POC of implementing a React Store that is compatible with concurrent rendering, for discussion purposes.</p></li><li><p>&#128064; <a href="https://github.com/prettier/prettier/pull/18533">Prettier PR - Upgrade MDX parser</a> - Support for MDX v3 is finally coming.</p></li><li><p>&#128296; <a href="https://tanstack.com/builder">TanStack Builder alpha</a>: A website to let you assemble your own TanStack visually. It looks like a convenient visual wrapper around <code>create-tanstack-app</code>.</p></li><li><p>&#128467; <a href="https://react.paris/?utm_source=thisweekinreact">React Paris</a> - &#127467;&#127479; Paris &amp; Online - 26&#8211;27 March - React Paris is already 50% sold out - Secure your spot at this premier React event before prices increase by &#8364;200 and save an extra 10% with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://www.columkelly.com/blog/use-optimistic">useOptimistic Won&#8217;t Save You</a> - An interactive article showing that it&#8217;s not so easy to implement optimistic UI correctly, even with the new <code>useOptimistic</code> and <code>useActionState</code> APIs. This requires a good understanding of how React transitions work.</p></li><li><p>&#128220; <a href="https://nextjs.org/blog/turbopack-incremental-computation">Inside Turbopack: Building Faster by Building Less</a> - Deep dive into the new default bundler of Next.js and its fine-grained and automatic incremental caching system.</p></li><li><p>&#128220; <a href="https://medium.com/preply-engineering/front-end-testing-at-preply-shifting-left-towards-component-testing-3e83c8608235">Front-end testing at Preply: shifting left towards component testing</a> - Reorganizing front-end testing at scale by moving toward a Storybook-centric component testing approach.</p></li><li><p>&#128220; <a href="https://playfulprogramming.com/posts/react-compiler-library-support/">Adapting Library Logic for React Compiler</a> - The author of TanStack Form explains a problem encountered with the React Compiler that was not reported by the ESLint plugin. Using the compiler <code>panicThreshold</code> helped detect this problem more reliably.</p></li><li><p>&#128220; <a href="https://nodejs.org/en/blog/vulnerability/january-2026-dos-mitigation-async-hooks">Node.js - Mitigating Denial-of-Service Vulnerability from Unrecoverable Stack Space Exhaustion for React, Next.js, and APM Users</a> - Node.js servers relying on <code>AsyncLocalStorage</code> (used by React RSC and Next.js) can eventually be crashed with a single request containing a deeply nested JSON payload processed recursively. They mitigated the issue in v24.13, but still recommend removing potential attack vectors from your app.</p></li><li><p>&#128220; <a href="https://wtbb.vercel.app/i-love-dogs">Rebuilding the GitHub pull request experience</a> - This dev explores how GitHub&#8217;s PR UI could be much faster, especially for large PRs, and shares lessons learned. His Next.js + React 19 demo shows impressive performance compared to GitHub&#8217;s current experience.</p></li><li><p>&#128220; <a href="https://boda.sh/blog/react-slot-aschild-pattern/">React Slot/asChild Composition Pattern</a> - The article also highlights how <a href="https://base-ui.com/react/utils/use-render#migrating-from-radix-ui">Base UI composition pattern differs from Radix UI</a>.</p></li><li><p>&#128220; <a href="https://www.developerway.com/posts/server-actions-for-data-fetching">Can You Fetch Data with React Server Actions?</a> - Not recommended, but technically possible, with caveats: no caching, requests are POST-only and generally processed sequentially by frameworks.</p></li><li><p>&#128184; <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">Make React apps fast where it actually matters. Learn how to diagnose real bottlenecks and fix slow, janky React apps using modern React 19 patterns.</a></p></li><li><p>&#128230; <a href="https://json-render.dev/">json-render - AI-generated UI with guardrails</a> - Vercel introduced a new generative UI library. It lets users generate more complex dashboards, widgets, apps, and data visualizations from prompts, using a React component catalog you provide.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/router/releases/tag/v1.152.0">TanStack Router 1.152 - Allow custom </a><code>fetch()</code><a href="https://github.com/TanStack/router/releases/tag/v1.152.0"> implementation for server functions</a> - This is useful for interceptors, auth, retry, testing and more (<a href="https://tanstack.com/start/latest/docs/framework/react/guide/middleware#custom-fetch-implementation">docs</a>).</p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases#v1-1-0">Base UI 1.1 - New features for Autocomplete, Combobox, Select, Field, various bugfixes</a> - By the way, we recently announced Base UI support in shadcn, and Base UI components are now <a href="https://ui.shadcn.com/docs/changelog#:~:text=updates%20and%20announcements.-,January%202026%20%2D%20Base%20UI%20Documentation,-We%27ve%20shipped%20full">officially documented</a>.</p></li><li><p>&#128230; <a href="https://github.com/shadcn-ui/ui/releases/tag/shadcn%403.7.0">shadcn 3.7 - New </a><code>npx shadcn registry add</code><a href="https://github.com/shadcn-ui/ui/releases/tag/shadcn%403.7.0"> command</a></p></li><li><p>&#128230; <a href="http://github.com/eugeniodepalo/gtkx">GTKX - Build native GTK4 desktop apps with React and TypeScript</a></p></li><li><p>&#128230; <a href="https://puckeditor.com/blog/puck-021">Puck 0.21 - Visual editor for React - AI page generation, rich text editing, new Plugin interface</a></p></li><li><p>&#128230; <a href="https://warper.tech/">Warper - Fast React virtualization library powered by Rust and WebAssembly</a></p></li><li><p>&#128230; <a href="https://github.com/bvaughn/react-error-boundary/releases/tag/6.1.0">React Error Boundary 6.1 - Fix error type (</a><code>Error</code><a href="https://github.com/bvaughn/react-error-boundary/releases/tag/6.1.0"> -&gt; </a><code>unknown</code><a href="https://github.com/bvaughn/react-error-boundary/releases/tag/6.1.0">), add </a><code>getErrorMessage(e)</code><a href="https://github.com/bvaughn/react-error-boundary/releases/tag/6.1.0"> helper</a></p></li><li><p>&#128230; <a href="https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.0">Apollo Client 4.1</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=JO2L6MfiQtY">Maximilian Schwarzm&#252;ller - Is TanStack Start better than 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_!AiMY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AiMY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AiMY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AiMY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AiMY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AiMY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6efa1d28-f64e-43be-a6c9-fd5f241ccffe_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_!AiMY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AiMY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AiMY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AiMY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6efa1d28-f64e-43be-a6c9-fd5f241ccffe_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!572h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!572h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!572h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!572h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!572h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!572h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg" width="1200" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:567,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No breakpoints, no console.log &#8212; just AI &amp; time travel&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="No breakpoints, no console.log &#8212; just AI &amp; time travel" title="No breakpoints, no console.log &#8212; just AI &amp; time travel" srcset="https://substackcdn.com/image/fetch/$s_!572h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!572h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!572h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!572h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db44f3d-688e-4f3e-8e54-45a023d99e20_1200x567.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"><svg role="img" 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"><g><title></title><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"><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"><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=ThisWeekInReactJan26">No breakpoints, no console.log &#8212; just AI &amp; time travel</a></strong></p><p>15x faster TypeScript and JavaScript debugging than with breakpoints and <code>console.log</code>, while upgrading your AI agent into an expert debugger with real-time context.</p><p>Wallaby.js runs your tests as you type, feeding your AI assistant live runtime values, code coverage, error details, and execution paths &#8212; all right next to your code. With <a href="https://wallabyjs.com/blog/wallaby-v3.html?referrer=ThisWeekInReactJan26">Wallaby v3&#8217;s new engine</a> &#128640;, tests start instantly with cached results, prioritize active files, and stream updates in real time.</p><p>Built for testing, Wallaby includes a <strong>Time Travel Debugger</strong>, the ability to run only opened files, full-context AI integration, smart test runs, and more.</p><p><a href="https://wallabyjs.com/?referrer=ThisWeekInReactJan26">&#10145;&#65039; Learn More</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://radon.swmansion.com/?utm_source=TWIR">Radon PRO &#8211; everything you need in one React Native IDE: debugger, element inspector, router integration &amp; more. Try it now for free!</a></p></li><li><p>&#128197; <a href="https://www.callstack.com/events/react-universe-meetup-x-zalando-berlin?utm_source=thisweekinreact">React Universe Meetup at Zalando - January 29, Berlin</a></p></li><li><p>&#128220; <a href="https://blog.swmansion.com/huawei-x-software-mansion-bringing-react-native-support-to-harmonyos-next-82e02bd75549">Huawei x Software Mansion: Bringing React Native Support to HarmonyOS NEXT</a> - Software Mansion helps Huawei bring RN support to their OpenHarmony OS (already powering 27 million devices), ensuring their famous libraries are also compatible (Reanimated, Screens, Gesture Handler&#8230;)</p></li><li><p>&#128220; <a href="https://expo.dev/blog/channel-surfing-for-expo-updates-how-to-switch-update-channels-at-runtime">Channel surfing for Expo Updates: How to switch update channels at runtime</a> - A technique to let your app&#8217;s user decide which Expo update channel to use on their own. You can limit this feature to your employees, for example.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/making-ai-feel-human-in-a-mobile-app-with-expo-reanimated-and-skia">Making AI feel human in a mobile app with Expo, Reanimated, and Skia</a></p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/react-native/%F0%9F%9A%80react-native-windows-v0-81-is-here/">React Native Windows 0.81</a> and <a href="https://github.com/microsoft/react-native-macos/releases/tag/v0.81.0">React Native macOS 0.81</a> - Out-of-tree platforms are catching up, enabling the New Architecture by default.</p></li><li><p>&#128230; <a href="https://www.callstack.com/blog/introducing-brownie-type-safe-shared-state-for-react-native-brownfield-apps">Brownie - Type-Safe Shared State for React Native Brownfield Apps</a> - Creates a single source of truth that lives on the native side, accessible from both TypeScript and Swift. Support for Kotlin is coming soon.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched/releases/tag/v0.3.0">Enriched 0.3 - Rich Text Editor - H1-&gt;H6 heading styles, text selection API, custom links detection, and more</a> - See also the newly-released sister project <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown">Enriched Markdown</a> that renders Markdown content as native text.</p></li><li><p>&#128230; <a href="https://reactnavigation.org/blog/2025/12/19/react-navigation-8.0-alpha">React Navigation 8.0 alpha - Native Bottom Tabs by default, improved types, access to parent screen state, </a><code>pushParams</code><a href="https://reactnavigation.org/blog/2025/12/19/react-navigation-8.0-alpha">, and more</a> - Note that since this initial alpha release, <a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation%2Fnative%408.0.0-alpha.1">alpha.1</a> has been published and includes even more features: automatic deep links, SFSymbols/Material Symbols, improved screen preloading.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.20.0">Screens 4.20 - formSheet dynamic content size, a11y &amp; testing improvements</a></p></li><li><p>&#128230; <a href="https://github.com/adnxy/rnsec/releases/tag/v1.1.0">RNSec 1.1 - Path exclusion, incremental scanning, cleaner output, rule ignoring, and more</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-audio-api/releases/tag/0.11.0">Audio API 0.11 - Recording to file, new Web Audio API nodes, DX improvements</a></p></li><li><p>&#128230; <a href="https://github.com/kirillzyusko/react-native-teleport">Teleport - The missing native portal implementation for React Native</a></p></li><li><p>&#128230; <a href="https://github.com/arekkubaczkowski/react-native-bottom-sheet-stack">Bottom Sheet Stack - Stack manager for Bottom Sheet - Preserves React context, Portal-based API</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/nitro/releases">Nitro 0.32 &amp; 0.33 - View recycling, custom </a><code>UIView</code><a href="https://github.com/mrousavy/nitro/releases"> subclasses, Performance &amp; DX improvements</a></p></li><li><p>&#128230; <a href="https://github.com/okwasniewski/expo-icloud-storage">Expo iCloud Storage - React Native wrapper for iCloud&#8217;s </a><code>NSUbiquitousKeyValueStore</code></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.0.0-beta.0">React Native Testing Library 14.0 beta - React19+, async APIs, new renderer, migration guide available</a></p></li><li><p>&#128230; <a href="https://github.com/MatthewSRC/native-springs-shaders">Native Spring Shaders - High-performance native shader effects for React Native and Expo</a></p></li><li><p>&#128230; <a href="https://github.com/pawicao/react-native-header-motion">Header Motion - An abstraction for scroll-driven header animations</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Sc2o-2p-kd0">Callstack - Understanding Threads and Queues in Swift TurboModules</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Zm4z-8i7PgA">Expo - AI mobile app development with Replit and Expo</a></p></li><li><p>&#127897;&#65039; <a href="https://www.callstack.com/podcasts/building-v0-ios-and-fixing-react-native-along-the-way">React Universe on Air - Shipping v0 iOS: React Native Without Compromises</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://astro.build/blog/joining-cloudflare/">The Astro Technology Company joins Cloudflare</a> - Interesting to see another popular framework join a tech giant. It will remain free, open source and MIT-licensed.</p></li><li><p>&#128064; <a href="https://github.com/tc39/agendas/blob/main/2026/01.md">TC39 - Agenda for the 112th meeting</a> - Currently in progress, some JS proposals already progressed, such as <code>map.getOrInsert()</code> (stage 4) and <code>import.sync()</code> (stage 2).</p></li><li><p>&#128220; <a href="https://calendar.perfplanet.com/2025/the-curious-case-of-the-shallow-session-spas/">The Curious Case of the Shallow Session SPAs</a>: Alex Russell argues that most SPAs shouldn&#8217;t be. Data shows that, on average, users produce a single soft navigation after the initial load, and that the upfront cost we pay is probably not worth it.</p></li><li><p>&#128220; <a href="https://allthingssmitty.com/2026/01/12/stop-turning-everything-into-arrays-and-do-less-work-instead/">Stop turning everything into arrays (and do less work instead)</a> - Pragmatic introduction tio iterators.</p></li><li><p>&#128220; <a href="https://lea.verou.me/blog/2026/web-deps/">Web dependencies are broken. Can we fix them?</a></p></li><li><p>&#128220; <a href="https://dev.to/this-is-learning/javascript-frameworks-heading-into-2026-2hel">JavaScript Frameworks - Heading into 2026</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v25.4.0">Node.js 25.4 - </a><code>require(esm)</code><a href="https://nodejs.org/en/blog/release/v25.4.0">, compile cache, and various other APIs are now stable</a></p></li><li><p>&#128230; <a href="https://blog.jquery.com/2026/01/17/jquery-4-0-0/">jQuery 4.0 - Remove IE11 support and deprecated methods, slimmer</a></p></li><li><p>&#128279; <a href="https://nodejs.github.io/package-examples/">Node.js package examples</a> - The Node.js team created a guide on package shipping patterns and how to handle CJS/ESM.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHaT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHaT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad8f0bed-0e12-426c-9dc3-0570831bb22d_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_!wHaT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!wHaT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad8f0bed-0e12-426c-9dc3-0570831bb22d_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!ymMN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ymMN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ymMN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ymMN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ymMN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ymMN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg" width="1200" height="815" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:815,&quot;width&quot;:1200,&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_!ymMN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ymMN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ymMN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ymMN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4ea59b-f2db-4dbd-954b-41f452b97b50_1200x815.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"><svg role="img" 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"><g><title></title><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"><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"><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_!2Ngs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Ngs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2Ngs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2Ngs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2Ngs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Ngs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg" width="1000" height="852" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&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_!2Ngs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2Ngs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2Ngs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2Ngs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab2bdac-d0d0-4811-9e42-cb4b5340980e_1000x852.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"><svg role="img" 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"><g><title></title><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"><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"><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 264]]></title><description><![CDATA[Next.js, Immer, React Router, Waku, Ant, React Conf, | Voltra, 0.84 RC, Hermes, RNSec, Galeria, Nitro, Radon, Facetpack, Rock, Haptics | Chrome, Astro, Turborepo, Rspack, Rising Stars]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-264</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-264</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 16 Jan 2026 14:33:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K-ez!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.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! &#128075;</p><p>It&#8217;s not too late&#8212;we&#8217;re finally back from our Christmas break, and the entire newsletter team wishes you a happy New Year!</p><p>The winter break brought a lot of great articles from the community. While for some, early January is a time for reflection, summaries, and reviews of 2025, others can&#8217;t stop shipping.</p><p>In the React space, we have a new version of Next.js 16.1, security fixes for React Router, and the announcement of Waku 1.0 alpha.</p><p>As for React Native, we have the release of Voltra, a new way to create Live Activities &amp; Widgets, and a sneak peek of React Native 0.84 with Hermes v1 enabled by default.</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_!PzQE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PzQE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PzQE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PzQE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PzQE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PzQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51838a46-a274-43fd-a5d3-f4ef97453132_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_!PzQE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PzQE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PzQE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PzQE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51838a46-a274-43fd-a5d3-f4ef97453132_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!fZ_b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZ_b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fZ_b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fZ_b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fZ_b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZ_b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f00a85bc-b77a-4386-bb6a-7d1817e5c3ae_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;Cut Code Review Time &amp; Bugs in Half&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="Cut Code Review Time &amp; Bugs in Half" title="Cut Code Review Time &amp; Bugs in Half" srcset="https://substackcdn.com/image/fetch/$s_!fZ_b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fZ_b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fZ_b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fZ_b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff00a85bc-b77a-4386-bb6a-7d1817e5c3ae_1200x628.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"><svg role="img" 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"><g><title></title><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"><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"><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/F8zN5Km">Cut Code Review Time &amp; Bugs in Half</a></strong></p><p>Code reviews are critical but time-consuming. CodeRabbit acts as your AI co-pilot, providing instant Code review comments and potential impacts of every pull request.</p><p>Beyond just flagging issues, CodeRabbit provides one-click fix suggestions and lets you define custom code quality rules using AST Grep patterns, catching subtle issues that traditional static analysis tools might miss.</p><p>CodeRabbit has so far reviewed more than 10 million PRs, installed on 2 million repositories, and used by 100 thousand Open-source projects. CodeRabbit is free for all open-source repo&#8217;s.</p><p><strong><a href="https://coderabbit.link/F8zN5Km">Get Started Today</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jan14">Product for Engineers - Your product ideas probably suck (that&#8217;s ok)</a></p></li><li><p>&#128220; <a href="https://fant.io/react/">How to Steal Any React Component</a>: An interactive article that shows it&#8217;s possible to extract React Fiber information and feed it to an LLM to reconstruct almost any React component.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/building-type-safe-compound-components">Building Type-Safe Compound Components</a>: A convenient API for grouping dialogs, modals, and selects, but it&#8217;s not the easiest to ensure their type safety. Dominik suggests using the so-called Component Factory Pattern to provide strong type guarantees.</p></li><li><p>&#128220; <a href="https://www.tbeeren.com/post/experimenting-with-bun-from-idea-to-production-in-a-week">Experimenting with Bun: From Idea to Production in a Week</a>: A successful case study of swapping Node.js for Bun to run React SSR workloads.</p></li><li><p>&#128220; <a href="https://handlewithcare.dev/blog/transition_low_priority_editor_updates/">Using React Transitions for low-priority text editor updates</a>: This interactive article shows how to leverage <code>useDeferredValue</code> to render the editor preview with a lower priority to keep the main editor responsive.</p></li><li><p>&#128220; <a href="https://next-16-recipes.vercel.app/sharing-data-with-client-components">Sharing data with Client Components</a>: RSCs can&#8217;t use Context directly. Instead, they can pass data (such as the current user) to Client Components that can later expose it as Context. Passing a promise does not block the navigation and improves performance.</p></li><li><p>&#128220; <a href="https://peterkellner.net/2026/01/09/understanding-react-useeffectevent-vs-useeffect/">Understanding useEffectEvent</a>: How <code>useEffectEvent</code> solves <code>useEffect</code> stale closure problem.</p></li><li><p>&#128220; <a href="https://macarthur.me/posts/queue/">I used a generator to build a replenishable queue</a>: Building a file upload UX with <code>useSyncExternalStore</code>.</p></li><li><p>&#128220; <a href="https://addyo.substack.com/p/how-good-is-ai-at-coding-react-really">How Good Is AI at Coding React (Really)?</a></p></li><li><p>&#128220; <a href="https://www.debugbear.com/blog/measuring-react-app-performance">Comprehensive introduction to measuring and improving React app performance</a></p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/how-to-write-good-frontend-tests">How to write good frontend tests: 37 tips and tricks</a></p></li><li><p>&#128184; <a href="https://r2trck.com/twir-4">Building AI Voice Agents at Scale &#8212; The executive playbook by ElevenLabs</a></p></li><li><p>&#128230; <a href="https://nextjs.org/blog/next-16-1">Next.js 16.1 - Filesystem cache for </a><code>next dev</code><a href="https://nextjs.org/blog/next-16-1">, bundle analyzer, improved debugging</a></p></li><li><p>&#128230; <a href="https://github.com/immerjs/immer/releases/tag/v11.1.0">Immer 11.1 - Performance improvements</a></p></li><li><p>&#128230; <a href="https://reactrouter.com/changelog#v7120">React Router 7.12 - Security fixes</a></p></li><li><p>&#128230; <a href="https://waku.gg/blog/waku-v1-alpha">Waku 1.0 alpha - Stable API surface</a></p></li><li><p>&#128230; <a href="https://github.com/ant-design/ant-design/releases/tag/6.2.0">Ant Design 6.2</a></p></li><li><p>&#127909; <a href="https://conf.react.dev/">React Conf 2025 - All the talks and interviews are now online</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Sc5ca-VJdxY">Theo - I moved off of Next.js (to TanStack Start)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=e2OC3aaiGhI">Cosden Solutions - The Better Way to Use React Query</a></p></li><li><p>&#127897;&#65039; <a href="https://insidefacebookmobile.libsyn.com/82-css-at-scale-with-stylex">Meta Tech Podcast 82 - CSS at Scale with StyleX</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_!ZnAn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZnAn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZnAn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZnAn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZnAn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZnAn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59257346-1fb6-4674-9177-63e9e3caedb5_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_!ZnAn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZnAn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZnAn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZnAn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59257346-1fb6-4674-9177-63e9e3caedb5_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!E8pk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E8pk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E8pk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E8pk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E8pk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E8pk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51abd240-7038-4016-8355-6bb0a19b55bf_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 Performance, v2&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 Performance, v2" title="React Performance, v2" srcset="https://substackcdn.com/image/fetch/$s_!E8pk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!E8pk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!E8pk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!E8pk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51abd240-7038-4016-8355-6bb0a19b55bf_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"><svg role="img" 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"><g><title></title><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"><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"><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://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">React Performance, v2</a></strong></p><p>Make React apps fast where it actually matters.</p><p>An advanced performance course from <strong>Steve Kinney</strong>, focused on diagnosing real bottlenecks and fixing slow, janky React apps using modern React 19 patterns.</p><p>&#128640; <strong>Modern React</strong>: Suspense, transitions, deferred values, hydration, server actions<br>&#128269; <strong>Debug Faster</strong>: Find unnecessary re-renders with React DevTools &amp; the Profiler<br>&#129504; <strong>Smart Optimization</strong>: Memoization, virtualization, code splitting, optimistic UI<br>&#9889; <strong>Feel-Fast UX</strong>: Learn how React Fiber prioritizes work to keep apps responsive</p><p>&#9201; 4+ hours &#8226; &#11088; 4.8 rating<br>&#127979; From <strong>Frontend Masters</strong></p><p>&#128073; Watch the course: <a href="https://frontendmasters.com/courses/react-performance-v2/?utm_source=reactweekly&amp;utm_medium=email&amp;utm_campaign=reactperf">https://frontendmasters.com/courses/react-performance-v2/</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!K-ez!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K-ez!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K-ez!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K-ez!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K-ez!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K-ez!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79e9dcb5-f6c8-4c16-8796-5713f24111bf_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;Voltra&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="Voltra" title="Voltra" srcset="https://substackcdn.com/image/fetch/$s_!K-ez!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K-ez!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K-ez!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K-ez!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79e9dcb5-f6c8-4c16-8796-5713f24111bf_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"><svg role="img" 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"><g><title></title><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"><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"><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.callstack.com/blog/live-activities-and-widgets-with-react-say-hello-to-voltra">Voltra 1.0 - Live Activities &amp; Widgets with JSX in React Native</a></strong></p><p>Voltra is a new library that allows React Native devs to compose Live Activities and Widgets using SwiftUI primitives in just JSX, without having to write native code.</p><p>While previous community attempts, such as <a href="https://github.com/EvanBacon/expo-apple-targets">expo-apple-targets</a> or <a href="https://github.com/software-mansion-labs/expo-live-activity">expo-live-activity</a>, either supported a limited set of possible layouts or required knowledge of Swift, Voltra overcomes these limitations.</p><p>Note that Expo is also working on their own <a href="https://x.com/k7grzywacz/status/2000980494998175934">solution for Widgets &amp; Live Activities</a> coming in Expo SDK 55.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://radon.swmansion.com/?utm_source=TWIR1">Radon PRO - turn your code editor into an integrated experience. Try it out and enjoy the best way to build React Native apps.</a></p></li><li><p>&#128064; <a href="https://github.com/reactwg/react-native-releases/issues/1202">Hermes V1 enabled by default starting from React Native 0.84</a>: A faster Hermes JS-engine added as experimental in RN 0.82 will be the standard in the next stable RN release.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/cutout-camera-effects-in-react-native-with-expo-camera-and-maskedview">Expo - Cutout camera effects in React Native with Expo Camera and MaskedView</a>: Explanation on how to make parts of UI see-through to the camera feed behind them. This creates the illusion that the phone is transparent.</p></li><li><p>&#128220; <a href="https://www.mux.com/blog/slop-social">TikTok-style video feed in React Native</a>: Tips on building a well-optimized short-form vertical video feed using FlashList, directional preloading (5 videos ahead, 1 behind), and aggressive video pausing.</p></li><li><p>&#128220; <a href="https://davey.bearblog.dev/animating-sfsymbol-icons-in-the-native-ios-tab-bar/">Animating SFSymbol Icons in the native iOS tab bar</a>: The author describes a workaround for animating icons in the native bottom tabs navigator. He had to traverse the native view hierarchy to apply the effect to the base <code>UIImageView</code>.</p></li><li><p>&#128220; <a href="https://devongovett.me/blog/static-hermes.html">How to compile JavaScript to C with Static Hermes</a>: It looks like Hermes has valid use cases outside of the React Native world. The creator of Parcel was able to compile the Less.js CSS preprocessor into a C library that he can call from Rust.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/react-native-wrapped-2025-a-month-by-month-recap-of-the-year">Callstack - React Native Wrapped 2025: A Month-by-Month Recap of The Year</a></p></li><li><p>&#128220; <a href="https://shift.infinite.red/react-native-wrapped-2025-the-year-we-entered-our-polishing-era-79c6a3e5b4b7">Infinite Red - React Native Wrapped 2025: The Year We Entered Our Polishing Era</a></p></li><li><p>&#128220; <a href="https://blog.swmansion.com/react-native-in-2026-trends-our-predictions-463a837420c7">Software Mansion - React Native in 2026: Trends &amp; Predictions</a></p></li><li><p>&#128230; <a href="https://www.rnsec.dev/">RNSEC - Security Scanner for React Native</a>: a CLI that scans RN &amp; Expo apps for security vulnerabilities &amp; hardcoded secrets</p></li><li><p>&#128230; <a href="https://github.com/ecrindigital/facetpack">Facetpack</a>: Promising 36x faster Metro transforms for React Native using OXC in place of Babel</p></li><li><p>&#128230; <a href="https://github.com/Renegades-Studio/react-native-tickle">Tickle - AHAP-style haptics for React Native</a>: Supports transient &amp; continuous haptics. Callable from UI Thread.</p></li><li><p>&#128230; <a href="https://github.com/facebook/react-native/releases/tag/v0.84.0-rc.0">React Native 0.84 RC.0</a>: Updates to React 19.2.3, lots of accessibility improvements, added <code>onKeyDown</code>/<code>onKeyUp</code> events</p></li><li><p>&#128230; <a href="https://github.com/nandorojo/galeria/releases/tag/v2.0.0">Galeria 2.0 - New transition style, corner radius interpolation, page indicators, blur overlay</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/nitro/releases/tag/v0.33.0">Nitro 0.33 - </a><code>HybridViews</code><a href="https://github.com/mrousavy/nitro/releases/tag/v0.33.0"> recycling and </a><code>UIView</code><a href="https://github.com/mrousavy/nitro/releases/tag/v0.33.0"> subclasses support</a></p></li><li><p>&#128230; <a href="https://radon.swmansion.com/docs/getting-started/changelog#1.15.x">Radon 1.15 - Run Maestro tests directly in Radon</a></p></li><li><p>&#128230; <a href="https://github.com/gunnartorfis/sonner-native/releases/tag/v0.23.0">Sonner Native 0.23 - Toast library - Added </a><code>positionStyle</code><a href="https://github.com/gunnartorfis/sonner-native/releases/tag/v0.23.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rock/releases/tag/v0.12.0">Rock 0.12 - Brownfield-ready modular toolkit - Support for RN 0.83 &amp; 0.82</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=LZFEr9QDIVg">Simon Grimm - Choosing the Right React Native Stack in 2026</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=rhLBFKlEXPM">Building v0 iOS and Fixing React Native Along the Way</a></p></li><li><p>&#127897;&#65039;<a href="https://infinite.red/react-native-radio/rnr-350-react-native-wrapped-2025">RNR 350 - React Native Wrapped 2025</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128202; <a href="http://risingstars.js.org/2025/en">2025 JavaScript Rising Stars</a></p></li><li><p>&#128214; <a href="https://github.com/gibbok/typescript-book">The Concise TypeScript Book</a> - an interesting alternative to the official TypeScript documentation.</p></li><li><p>&#128220; <a href="https://loggingsucks.com/">Logging Sucks</a> - an opinion piece about good logging practices in the age of distributed systems.</p></li><li><p>&#128220; <a href="https://joyeecheung.github.io/blog/2025/12/30/require-esm-in-node-js-from-experiment-to-stability/">require(esm) in Node.js: from experiment to stability</a> - Deep dive into challenges of bringing require(esm) into a stable version of Node.js.</p></li><li><p>&#128220; <a href="https://marvinh.dev/blog/signals-vs-query-based-compilers/">Signals vs Query-Based Compilers</a> - A comparison of 2 different approaches to building incremental systems.</p></li><li><p>&#128220; <a href="https://socket.dev/blog/npm-to-implement-staged-publishing">NPM to implement staged publishing</a> - The future plans for protecting against supply chain attacks.</p></li><li><p>&#128230; <a href="https://developer.chrome.com/blog/new-in-chrome-144?hl=en">Chrome 144</a> - New <code>&lt;geolocation&gt;</code> element, Temporal API, and devtools improvements.</p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-6-beta/">Astro 6 beta - Redesigned dev server experience</a></p></li><li><p>&#128230; <a href="https://turborepo.dev/blog/turbo-2-7">Turborepo 2.7 - DevTools, composable config</a></p></li><li><p>&#128230; <a href="https://rspack.rs/blog/announcing-1-7">Rspack 1.7 - Final version before v2</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RMYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e69efcee-5d54-42c8-a96c-03054be7e0ce_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_!RMYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!RMYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe69efcee-5d54-42c8-a96c-03054be7e0ce_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!3ipl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3ipl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3ipl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3ipl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3ipl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3ipl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg" width="1196" height="1184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1184,&quot;width&quot;:1196,&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_!3ipl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3ipl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3ipl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3ipl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e17bc1-1612-4c1b-a1cc-1769386522a0_1196x1184.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"><svg role="img" 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"><g><title></title><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"><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"><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 262]]></title><description><![CDATA[React2Shell, Fate, TanStack AI, React Grab, Formisch, Base UI | React Native 0.83, Reanimated 4.2, State of RN, Refined, Crypto, Worklets, Sheet Navigator | CSS, Temporal, Supply Chain, Firefox]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-262</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-262</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 12 Dec 2025 13:18:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TUMP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>This week, it remains important for me to raise awareness about the React Server Components vulnerability, since an exploit is now widely available. Thankfully, we also have more positive React news!</p><p>It&#8217;s even hotter on the React Native side. We were patiently waiting for 0.83 to publish &#128519; and it&#8217;s now out. You can now use <code>&lt;Activity&gt;</code> in React Native &#128293;. Reanimated 4.2 is also out with Shared Elements Transition support &#128293;.</p><p>It&#8217;s the survey season, don&#8217;t forget to answer the 2 most important ones that are currently open:</p><ul><li><p><a href="https://survey.devographics.com/en-US/survey/state-of-react/2025?source=thisweekinreact.com">State of React</a></p></li><li><p><a href="https://survey.2025.stateofreactnative.com/?utm_source=thisweekinreact">State of React Native</a></p></li></ul><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_!WeTy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WeTy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WeTy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WeTy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WeTy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WeTy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c6636a2-757c-4128-991d-6936cef4955b_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_!WeTy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WeTy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WeTy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WeTy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c6636a2-757c-4128-991d-6936cef4955b_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!qXKE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qXKE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qXKE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qXKE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qXKE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qXKE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.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;Learn how to build a TanStack Start project with Strapi&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="Learn how to build a TanStack Start project with Strapi" title="Learn how to build a TanStack Start project with Strapi" srcset="https://substackcdn.com/image/fetch/$s_!qXKE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qXKE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qXKE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qXKE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a6254d-bb4c-4ea4-b7fd-a829565864bc_1920x1080.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"><svg role="img" 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"><g><title></title><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"><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"><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.youtube.com/watch?v=pFZi5xA4_7E&amp;utm_campaign=19282052-Newsletter%20Sponsorships&amp;utm_source=React&amp;utm_medium=1st-sponsor">Learn how to build a TanStack Start project with Strapi</a></strong></p><p>In this video tutorial, you&#8217;ll learn how to create a fully dynamic, SEO-friendly landing page and blog website, which includes the following features:</p><ul><li><p>pagination</p></li><li><p>search</p></li><li><p>authentication</p></li><li><p>comments</p></li></ul><p>TanStack Start is an open source React framework built by and for the community.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!eoIx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eoIx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eoIx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eoIx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eoIx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eoIx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg" width="1338" height="412" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:412,&quot;width&quot;:1338,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React2Shell - CVE-2025-55182&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="React2Shell - CVE-2025-55182" title="React2Shell - CVE-2025-55182" srcset="https://substackcdn.com/image/fetch/$s_!eoIx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eoIx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eoIx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eoIx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b540ad6-4d2b-45e3-9a17-6149f4ac56ac_1338x412.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"><svg role="img" 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"><g><title></title><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"><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"><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://react2shell.com/">React2Shell - CVE-2025-55182</a></strong></p><p>In case you missed my email, a 10.0-scored <a href="https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components">vulnerability affecting React Server Components</a> was unveiled last week. And it&#8217;s a really nasty one, enabling unauthenticated remote code execution with a simple HTTP request. Many React meta-frameworks and custom setups are affected, in particular Next.js (v14-canary, v15, v16). If your app is affected, you really need to upgrade now!</p><p>Although no exploit was initially shared, infosec researchers and hackers quickly reverse-engineered the patch, and an exploit has been circulating online only ~30 hours after the initial disclosure. Hackers around the world have already been exploiting it at scale. There are even browser extensions to detect and exploit vulnerable sites. It wouldn&#8217;t be surprising to see a worm exploiting it.</p><p>I&#8217;ve found so many related links, so here&#8217;s my top selection:</p><ul><li><p>&#128038; <a href="https://x.com/rauchg/status/1997362942929440937">Vercel CEO Guillermo Rauch explains how the exploit works</a>: It&#8217;s quite sophisticated and shows the talent of Lachlan and Sylvie, who disclosed it after hours of research. I learned a few things about &#8220;gadgets&#8221; in JS that could be exploited.</p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/35277">React PR - Patch FlightReplyServer with fixes from ReactFlightClient</a>: The security patch that has been reverse-engineered.</p></li><li><p>&#128220; <a href="https://miggo.io/post/red-herrings-and-ai-slop-debunking-react2shell-misinformation">Red Herrings and AI Slop: Debunking React2Shell Misinformation</a>: Explains the patch PR above has been deliberately misleading to buy time and let the community upgrade ASAP.</p></li><li><p>&#128220; <a href="https://blog.cloudflare.com/5-december-2025-outage/">Cloudflare outage on December 5, 2025</a>: It was due to mitigation measures for the vulnerability &#128517;.</p></li><li><p>&#128272; <a href="https://nextjs.org/blog/CVE-2025-66478">Next.js Security Advisory</a>: Including a <a href="https://github.com/vercel-labs/fix-react2shell-next">command-line tool</a> to help you patch your Next.js app. There&#8217;s also a <a href="https://vercel.com/kb/bulletin/react2shell">Vercel Security Bulletin</a>.</p></li><li><p>&#128230; <a href="https://github.com/lachlan2k/React2Shell-CVE-2025-55182-original-poc">Original Proof-of-Concepts for React2Shell</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=UiCEejcV5N4">Theo - React got hacked. It&#8217;s really, really bad</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://strich.io/?ref=twir">STRICH - Add lightning-fast barcode scanning to your app with a lean JS lib. Built-in UI, simple, predictable pricing, free trial and demo!</a></p></li><li><p>&#128038; <a href="https://x.com/infinterenders/status/1997359890021634509">React Fiber explained</a>: A fun but accurate explanation of how and why React re-implemented its own stack and scheduling system.</p></li><li><p>&#128467; <a href="https://react.paris/?utm_source=thisweekinreact">React Paris 2026</a> - &#127467;&#127479; Paris - 26 &amp; 27 March. Full speaker lineup just dropped! Una Kravets, Gabriel Pichot and Kitze are part of the lineup, bringing cutting-edge React insights to the French capital. Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://calendar.perfplanet.com/2025/react-19-2-further-advances-inp-optimization/">React 19.2. Further Advances INP Optimization</a>: Focusing on Activity and the new DevTools performance tracks.</p></li><li><p>&#128220; <a href="https://oscargabriel.dev/blog/skeletons-in-my-codebase">Skeletons in My Codebase: Tanstack in Production</a>: Pragmatic TanStack Router lessons learned through trial and error.</p></li><li><p>&#128220; <a href="https://slicker.me/react/useEffectEvent.html">Do&#8217;s and Don&#8217;ts of useEffectEvent in React</a></p></li><li><p>&#128220; <a href="https://ondrejvelisek.github.io/tanstack-start-new-competitor-to-nextjs/">TanStack Start: New competitor to Next.js</a></p></li><li><p>&#128220; <a href="https://www.developerway.com/posts/bundle-size-investigation">Bundle Size Investigation: A Step-by-Step Guide to Shrinking Your JavaScript</a></p></li><li><p>&#128220; <a href="https://dev.to/artalar/reatom-state-management-that-grows-with-you-1i4">Reatom: State Management That Grows With You</a></p></li><li><p>&#128220; <a href="https://shramko.dev/blog/react-elements-children">React Elements, Children as Props, and Re-Renders</a></p></li><li><p>&#128220; <a href="https://certificates.dev/blog/controlled-vs-uncontrolled-components-in-react">Controlled vs Uncontrolled Components in React</a></p></li><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR">React Certification - Last chance to get React certified at a deep discount; Bootcamp training bundles start at 60% OFF. Offer ends soon.</a></p></li><li><p>&#128230; <a href="https://fate.technology/posts/introducing-fate">Fate alpha - A modern data client for React &amp; tRPC</a>: A new declarative data fetching and state management solution for React is now in alpha, created by former Meta employee Christoph Nakazawa. Inspired by the Relay client, it brings useful features such as state co-location, data normalization, view composition, and data masking, without needing GraphQL.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-ai-alpha-your-ai-your-way">TanStack AI Alpha</a>: TanStack has unveiled its new AI package that is framework, language, and service agnostic. The official intro doesn&#8217;t share many details, but I liked this <a href="https://oscargabriel.dev/blog/tanstacks-open-ai-sdk">community article</a> that compares it to the Vercel AI SDK. It should have a great integration with TanStack Start and also ship a headless chat UI library. Also watch this <a href="https://www.youtube.com/watch?v=XX0-R4BEyw4">walkthrough video</a> from one of its creator, Alem Tuzlak.</p></li><li><p>&#128230; <a href="https://www.react-grab.com/blog/agent">React Grab for Agents</a>: This lets you assign concurrent UI-related tasks to AI agents directly from your browser with a nice user experience. You automatically share the right context (file path, component stack&#8230;) to clearly communicate your intent to AI agents so that they don&#8217;t lose time figuring things out.</p></li><li><p>&#128230; <a href="https://github.com/open-circle/formisch">Formisch - Modular and type-safe form library for any framework</a>: Initially built for Solid, now includes React bindings.</p></li><li><p>&#128230; <a href="https://github.com/svar-widgets/react-grid">SVAR React DataGrid - Fast, feature-rich React datagrid with sorting, filtering, virtual scrolling, and more</a></p></li><li><p>&#128230; <a href="https://github.com/mui/base-ui/releases/tag/v1.0.0-rc.0">Base UI 1.0 rc.0</a></p></li><li><p>&#127897;&#65039; <a href="https://podrocket.logrocket.com/react-19-1-shruti-kapoor">PodRocket - Whats new in React 19.2 with Shruti Kapoor</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_!krS1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!krS1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!krS1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!krS1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!krS1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!krS1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2a3fb76-e54c-445f-b514-79876aa229cc_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_!krS1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!krS1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!krS1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!krS1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a3fb76-e54c-445f-b514-79876aa229cc_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!nmPT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nmPT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nmPT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nmPT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nmPT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nmPT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg" width="1456" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.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;Make your AI code guidelines stick with CodeRabbit&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 AI code guidelines stick with CodeRabbit" title="Make your AI code guidelines stick with CodeRabbit" srcset="https://substackcdn.com/image/fetch/$s_!nmPT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nmPT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nmPT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nmPT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0af46bca-c98b-4442-bc19-0f0b82bd273b_3603x2046.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"><svg role="img" 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"><g><title></title><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"><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"><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/F8zN5Km">Make your AI code guidelines stick with CodeRabbit</a></strong></p><blockquote><p>You already tuned your AI agents with .cursorrules, CLAUDE.md, Agents.md, and Copilot-instructions. CodeRabbit reads those guideline files and uses them to enforce code quality in every PR review, so comments line up with the rules you have already written.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!GKfM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GKfM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GKfM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GKfM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GKfM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GKfM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg" width="876" height="543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:543,&quot;width&quot;:876,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native 0.83&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.83" title="React Native 0.83" srcset="https://substackcdn.com/image/fetch/$s_!GKfM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GKfM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GKfM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GKfM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bcaf988-7627-4515-9762-cbaeff8e504c_876x543.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"><svg role="img" 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"><g><title></title><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"><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"><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/2025/12/10/react-native-0.83">React Native 0.83</a></strong></p><p>A new minor version of React Native has just been published. Without any user-facing breaking changes, it reflects the efforts to stabilize the framework, making it easier to upgrade and benefit from new, useful features.</p><p>The highlights are:</p><ul><li><p>React 19.2, enabling support for <code>&lt;Activity&gt;</code> and <code>useEffectEvent</code></p></li><li><p>DevTools with Network and Performance panels, and a new desktop app</p></li><li><p>Intersection Observers (Canary), another DOM API coming to React Native</p></li><li><p>Web Performance APIs are now stable</p></li><li><p>Hermes V1 performance improvements</p></li><li><p>Experimental iOS feature flags to compile out the Legacy Architecture, and debug precompiled binaries</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><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_!TUMP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TUMP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TUMP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TUMP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TUMP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TUMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg" width="1200" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Reanimated 4.2 - Shared Element Transitions&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="Reanimated 4.2 - Shared Element Transitions" title="Reanimated 4.2 - Shared Element Transitions" srcset="https://substackcdn.com/image/fetch/$s_!TUMP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TUMP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TUMP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TUMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8040cd09-1813-4720-b2de-761c0cbe121e_1200x364.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"><svg role="img" 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"><g><title></title><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"><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"><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.swmansion.com/introducing-reanimated-4-2-0-71eea21ca861">Reanimated 4.2 - Shared Element Transitions</a></strong></p><p>Software Mansion devs have finally reimplemented Shared Element Transitions &#8211; the most requested feature &#8211; on top of Reanimated 4 and the New Architecture. It makes it possible to animate views between two different screens, giving a feeling of continuity when navigating. This feature and other performance improvements are gated behind feature flags to collect feedback and finalize the implementation.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://www.youtube.com/watch?v=h2SWq6Msnpk">[Free Workshop] Improve React Native Performance using Tracing and Logs with Sentry</a></p></li><li><p>&#128202; <a href="https://survey.2025.stateofreactnative.com/">State of React Native 2025</a>: The annual community survey is now live. Please answer it! &#128591;</p></li><li><p>&#128272; <a href="https://expo.dev/changelog/mitigating-critical-security-vulnerability-in-react-server-components">Expo - Mitigating the Critical Security Vulnerability in React Server Components</a></p></li><li><p>&#128172; <a href="https://github.com/facebook/react-native/issues/54772#issuecomment-3617929832">React Native issue - How to mitigate React2Shell in React Native</a>: The community tried to update React after the vulnerability was revealed, which led to version mismatch issues with React Native. Ricky explains that React itself is not vulnerable, and only RSC packages are.</p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/963">React Native RFC - Library codegen as prefab on Android</a>: A suggestion that could help improve Android build times, and benefit to recently launched <a href="https://rnrepo.org/">RNRepo</a> project.</p></li><li><p>&#128038; <a href="https://x.com/Baconbrix/status/1998438240291049931">iOS bottom accessory support is coming</a>: It should be released soon in Screens 4.19 and probably later in Expo Router 7 / SDK 55. Other features are coming to Expo Router, such as <a href="https://github.com/expo/expo/pull/41083">Zoom Transitions on iOS</a>.</p></li><li><p>&#128220; <a href="https://blog.swmansion.com/kotlin-multiplatform-benefits-limitations-our-contributions-560a148d28c9">Kotlin Multiplatform: Benefits, Limitations &amp; Our Contributions</a>: Software Mansion created a team centered around KMP, which has already published a few open-source packages. They break down what it does well, where it falls short, and compare it to React Native.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/mobile-vs-vr-key-differences-in-features-ui-and-ux">What Changes When You Bring React Native to VR on Meta Quest</a>: List of things to consider in terms of responsive design, accessibility, and interactivity.</p></li><li><p>&#128220; <a href="https://dev.to/dannyhw/how-to-swap-between-react-native-storybook-10-and-your-app-e9e">How to swap between React Native Storybook 10 and your app</a></p></li><li><p>&#128220; <a href="https://amanhimself.dev/blog/large-header-title-in-expo-router/">Large header title in Expo Router</a></p></li><li><p>&#128230; <a href="https://sheet.lodev09.com/blog/sheet-navigator">Sheet Navigator - Custom React Navigation navigator integration for True Sheet</a>: Makes navigating to a sheet as seamless as if it were a stack screen.</p></li><li><p>&#128230; <a href="https://reactiive.io/articles/introducing-refined">Refined - ESLint plugin for your React Native styles</a>: This could help make your app look more polished.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.7.1">Worklets 0.7 - Register custom Serializable (useful for Nitro Objects), scheduling APIs, n new Synchronizable docs</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-quick-crypto/releases/tag/v1.0.0">Quick Crypto 1.0 - Rewritten with Nitro Modules</a></p></li><li><p>&#128230; <a href="https://hyochan.github.io/react-native-iap/blog/release-14.5.0/">IAP 14.5 - Built-in Purchase Verification (aka Receipt Validation), IAPKit integration</a></p></li><li><p>&#128230; <a href="https://github.com/DaveyEke/expo-speech-transcriber/releases/tag/v0.1.6">Expo Speech Transcriber 0.1.6 - Support for Android real-time transcriptions</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-mmkv/releases/tag/v4.1.0">MMKV 4.1 - New instance APIs, existsMMKV, deleteMMKV, importAllFrom</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.2.0">Uniwind 1.2 - Vite/RNW support, improve React Compiler support</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=PW4kDmEH0bI">Beto - I Tried Snap&#8217;s Valdi &#8211; Is It Better Than React Native?</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-348">RNR 348 - From Ionic Evangelist to React Native Content Creator: Simon Grimm</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://chrome.dev/css-wrapped-2025/">CSS Wrapped 2025</a>: A greatly presented overview of all the new web/CSS features that landed in Chrome this year. Including cool things you&#8217;ve probably never heard of.</p></li><li><p>&#128220; <a href="https://pnpm.io/blog/2025/12/05/newsroom-npm-supply-chain-security">How We&#8217;re Protecting Our Newsroom from npm Supply Chain Attacks</a>: Using 3 layers of pnpm security controls.</p></li><li><p>&#128220; <a href="https://zwyx.dev/blog/docker-dev">Protect yourself from malicious NPM packages with a system-wide dev container</a></p></li><li><p>&#128220; <a href="https://marmelab.com/blog/2025/12/04/typescript-type-as-a-programming-language.html">TypeScript Types as a Programming Language</a></p></li><li><p>&#128220; <a href="https://ryanhunter.io/the-case-for-effect/">The Case for Effect</a></p></li><li><p>&#128230; <a href="https://developer.chrome.com/blog/chrome-144-beta">Chrome 144 beta</a>: Includes the Temporal API!</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.4">Bun 1.3.4 - URLPattern</a></p></li><li><p>&#128230; <a href="https://oxc.rs/blog/2025-12-08-type-aware-alpha.html">Oxlint Type-Aware Linting Alpha</a></p></li><li><p>&#128230; <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/146">Firefox 146 - @scope, symbols as WeakMap keys, Navigation API (nightly), and more</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rwRn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rwRn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_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_!rwRn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!rwRn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7b6b5de-b7bc-4ded-883c-0cbd67f9a91f_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!Pr3W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pr3W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Pr3W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Pr3W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Pr3W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pr3W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg" width="857" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:857,&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_!Pr3W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Pr3W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Pr3W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Pr3W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d1038f-4719-4b79-8471-50ffc1714045_857x692.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"><svg role="img" 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"><g><title></title><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"><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"><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_!Nb24!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nb24!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Nb24!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Nb24!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Nb24!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nb24!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg" width="1099" height="839" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:839,&quot;width&quot;:1099,&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_!Nb24!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Nb24!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Nb24!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Nb24!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6145f23-1d77-4493-96a6-8b1288101a1d_1099x839.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"><svg role="img" 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"><g><title></title><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"><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"><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 261]]></title><description><![CDATA[RSC vulnerability, Activity, ViewTransition, React Router, Sonner, Cedar, Storybook, Conform | RNRepo, Nitro Modules, Keyboard Controller, SET, Sheets, deep links | tsgo, Bun, WebGPU, Vite, oxfm]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-261</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-261</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 05 Dec 2025 14:20:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TLd5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone!</p><p>A major React 19 Server Functions vulnerability has just been disclosed. Make sure to upgrade your React 19 or meta-framework ASAP!</p><p>On the mobile side, we have more positive news: RNRepo should speed up our React Native builds even more, and Shared Elements Transitions are coming soon! (unlike React Native 1.0 &#128517;)</p><p>Don&#8217;t forget to answer the <a href="https://survey.devographics.com/en-US/survey/state-of-react/2025?source=thisweekinreact.com">State of React 2025 survey</a> while it&#8217;s still open!</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_!bsO8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsO8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsO8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsO8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsO8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsO8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_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_!bsO8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsO8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsO8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsO8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F180aa2c9-4b10-42d4-9dd3-fbfe5b7b1ed4_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!_OOP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_OOP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_OOP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_OOP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_OOP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_OOP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4ec15a2-bfcc-497b-8722-041558c8598d_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;AG Charts: The Best React Charts in the World.&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="AG Charts: The Best React Charts in the World." title="AG Charts: The Best React Charts in the World." srcset="https://substackcdn.com/image/fetch/$s_!_OOP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_OOP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_OOP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_OOP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4ec15a2-bfcc-497b-8722-041558c8598d_2400x1256.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"><svg role="img" 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"><g><title></title><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"><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"><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.ag-grid.com/charts?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=2025-email-6">AG Charts: The Best React Charts in the World.</a></strong></p><p><strong>AG Charts</strong> is a high-performance, canvas-based charting library from <a href="https://www.ag-grid.com/react-table?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=2025-email-6">AG Grid</a>.</p><p>Originally built to power AG Grid&#8217;s Integrated Charts, it now serves over <strong>1M npm downloads</strong> each month.</p><ul><li><p>&#127379; <strong>Free</strong>: A wide range of chart types (bar, line, scatter, area, and more) &#8212; free, forever.</p></li><li><p>&#128640; <strong>Fast</strong>: Optimised canvas rendering for large datasets (1M+ points).</p></li><li><p>&#129470; <strong>Accessible</strong>: Built-in support for screen readers and keyboard navigation.</p></li><li><p>&#128260; <strong>AG Grid Integration</strong>: Shared API with AG Grid for seamless integration.</p></li></ul><p>&#128073; Get Started for Free: <a href="https://www.ag-grid.com/charts?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=2025-email-6">www.ag-grid.com/charts</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!5tPG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5tPG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5tPG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5tPG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5tPG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5tPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg" width="1000" height="455" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:455,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React 19 Critical Security Vulnerability in React Server Components&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 Critical Security Vulnerability in React Server Components" title="React 19 Critical Security Vulnerability in React Server Components" srcset="https://substackcdn.com/image/fetch/$s_!5tPG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5tPG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5tPG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5tPG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedeab178-bad9-4aaa-9361-d0d4310a58dc_1000x455.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"><svg role="img" 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"><g><title></title><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"><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"><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/2025/12/03/critical-security-vulnerability-in-react-server-components">React 19 Critical Security Vulnerability in React Server Components</a></strong></p><p>A critical (10.0) security vulnerability affects React 19. It allows unauthenticated remote code execution vulnerability in React Server Components by crafting a malicious HTTP request sent to a Server Function endpoint.</p><p>The React team recommends upgrading immediately. The vulnerability has been responsibly disclosed, and patches are already available for React 19 and the most popular frameworks that leverage RSCs: Next.js, Expo, React Router, Waku, Redwood, and more. Hosting providers can mitigate the issue thanks to their Web Application Firewalls.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR&amp;utm_campaign=cert_cm2025&amp;utm_medium=email&amp;utm_source=twir">React Certification&#8211; Last Chance to get 50% off. Trusted by devs at Ford, PwC, Dell &amp; 680+ companies. Exams by Microsoft MVP Aurora Scharff.</a></p></li><li><p>&#128038; <a href="https://x.com/pushmatrix/status/1994445450527519085">The Shopify Live Globe running on the Las Vegas Exosphere using React-Three-Fiber</a>: If you are into creative web dev, you might also want to see <a href="https://shopify.engineering/2025-bfcm-live-globe">their React-Three-Fiber pinball machine</a> that also displays that globe.</p></li><li><p>&#128064; <a href="https://github.com/reduxjs/react-redux/issues/2264">React-Redux issue - Mark </a><code>connect</code><a href="https://github.com/reduxjs/react-redux/issues/2264"> as deprecated</a></p></li><li><p>&#128220; <a href="https://wtbb.vercel.app/">Without the blue bar</a>: Re-implements GitHub using Next.js 16, RSC, <code>&#8217;use cache&#8217;</code> directives, and browser virtualization to show how much faster it could be.</p></li><li><p>&#128220; <a href="https://emilkowal.ski/ui/building-a-toast-component">Building a toast component</a>: The author of the popular React library Sonner shares various design engineering lessons.</p></li><li><p>&#128220; <a href="https://www.epicreact.dev/react-routers-take-on-react-server-components-4bj7q">React Router&#8217;s take on React Server Components</a></p></li><li><p>&#128220; <a href="https://www.epicreact.dev/use-react-activity-to-preload-a-video-y2lmw">Use React &lt;Activity /&gt; to preload a video</a></p></li><li><p>&#128220; <a href="https://www.epicreact.dev/use-react-view-transition-to-smoothly-transition-images-and-titles-lu6ks">Use React &lt;ViewTransition /&gt; to Smoothly Transition Images and Titles</a></p></li><li><p>&#128220; <a href="https://blog.logrocket.com/react-19-2-the-async-shift/">React 19.2: The async shift is finally here</a></p></li><li><p>&#128220; <a href="https://allthingssmitty.com/2025/12/01/react-has-changed-your-hooks-should-too/">React has changed, your Hooks should too</a></p></li><li><p>&#128220; <a href="https://blog.logrocket.com/the-next-era-of-react/">The next era of React has arrived: Here&#8217;s what you need to know</a></p></li><li><p>&#128220; <a href="https://eliocapella.com/blog/ai-library-migration-guide/">Migrating 6000 React tests using AI Agents and ASTs</a></p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/vitest-browser-mode-guide-and-setup-info#how-vitest-browser-mode-works">Vitest Browser Mode - The Future of Frontend Testing</a></p></li><li><p>&#128220; <a href="https://adactio.com/journal/22265">Why use React?</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7100">React Router 7.10 - Stabilized various APIs</a>: This also introduces a new <code>unstable_useTransitions</code> to opt-in/out of React transitions.</p></li><li><p>&#128230; <a href="https://github.com/storybookjs/storybook/releases/tag/v10.1.0">Storybook 10.1 - Installation and accessibility improvements</a></p></li><li><p>&#128230; <a href="https://github.com/unnoq/orpc/releases/tag/v1.12.0">oRPC 1.12 - Configure default options for TanStack query/mutation</a></p></li><li><p>&#128230; <a href="https://github.com/edmundhung/conform/releases/tag/v1.14.0">Conform 1.14 - Improve </a><code>useForm</code><a href="https://github.com/edmundhung/conform/releases/tag/v1.14.0"> type inference, form reset, strip empty values by default</a></p></li><li><p>&#128230; <a href="https://github.com/cedarjs/cedar/releases/tag/v1.0.0">CedarJS 1.0 - Actively maintained fork of RedwoodJS (winded down and renamed as Redwood GraphQL</a>)</p></li><li><p>&#128230; <a href="https://github.com/preactjs/preact/releases/tag/10.28.0">Preact 10.28 - Types and perf improvements</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/form/releases/tag/%40tanstack%2Freact-form%401.27.0">TanStack Form 1.17 - Fix React Compiler issues, React 17 compat</a></p></li><li><p>&#128230; <a href="https://stylexjs.com/blog/v0.17.1">StyleX 0.17.1 - Unplugin (universal bundler plugin), Custom Markers, default config options updated</a></p></li><li><p>&#128230; <a href="https://github.com/mui/base-ui/releases/tag/v1.0.0-beta.7">Base UI beta.7 - Various bug fixes before v1 that should come soon</a></p></li><li><p>&#128230; <a href="https://github.com/pmndrs/zustand/releases/tag/v5.0.9">Zustand 5.0.9 - New </a><code>unstable_ssrSafe</code><a href="https://github.com/pmndrs/zustand/releases/tag/v5.0.9"> middleware for usage with Next.js</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Ubbb1RK7iFs">Web Dev Simplified - Stop Writing React conditional code like this (use Activity)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=1XAOacgJ83s">Ankita Kulkarni - Cache directives - This Next.js Pattern Critical For Every Developer</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/8aea071c">This Month in React 2025-11: Cloudflare outage, ongoing npm hacks, React Router is getting RSCs</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_!PH-o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PH-o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PH-o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PH-o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PH-o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PH-o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4439966c-75bf-47cd-bc3e-807c6d964f4f_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_!PH-o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PH-o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PH-o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PH-o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4439966c-75bf-47cd-bc3e-807c6d964f4f_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!e01i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e01i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e01i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e01i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e01i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e01i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg" width="1430" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/875e4754-dd67-4e57-9d55-578dbaec310c_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;Let AI fix your mistakes. It already generated the 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="Let AI fix your mistakes. It already generated the diff" title="Let AI fix your mistakes. It already generated the diff" srcset="https://substackcdn.com/image/fetch/$s_!e01i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e01i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e01i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e01i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875e4754-dd67-4e57-9d55-578dbaec310c_1430x715.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"><svg role="img" 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"><g><title></title><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"><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"><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/seer-can-now-trigger-cursor-agents-to-fix-your-bugs/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy26q4-cursoragents&amp;utm_content=newsletter-cursor-blog-learnmore">Let AI fix your mistakes. It already generated the diff</a></strong></p><p>Seer, Sentry&#8217;s AI debugger, finds what broke, tells you why, and figures out the fix. Now it can hand that root cause (with full issue context) to your Cursor agent to draft the PR automatically.</p><p>Here&#8217;s how it works and <a href="https://blog.sentry.io/seer-can-now-trigger-cursor-agents-to-fix-your-bugs/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=seer-fy26q4-cursoragents&amp;utm_content=newsletter-cursor-blog-learnmore">how to set it up.</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!TLd5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TLd5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TLd5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TLd5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TLd5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TLd5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_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;RNRepo - Faster React Native Builds Through Prebuilt Artifacts&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="RNRepo - Faster React Native Builds Through Prebuilt Artifacts" title="RNRepo - Faster React Native Builds Through Prebuilt Artifacts" srcset="https://substackcdn.com/image/fetch/$s_!TLd5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TLd5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TLd5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TLd5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9012528d-61a6-4e3b-8e4a-53ae60f7c3aa_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"><svg role="img" 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"><g><title></title><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"><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"><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.swmansion.com/rnrepo-faster-react-native-builds-through-prebuilt-artifacts-004903b5e510">RNRepo - Faster React Native Builds Through Prebuilt Artifacts</a></strong></p><p>Software Mansion just unveiled RNRepo, a new infrastructure project aiming to speed up our React Native builds.</p><p>The idea is to prebuild popular native libraries against multiple React Native versions ahead of time, and host the artifacts on a Maven repository. Then, you can configure your build to download the prebuilt artifacts instead of building them locally, saving time and disk space. This should complete nicely the speed improvements we get with React Native core prebuilds and the Expo Build Cache providers.</p><p>For now, RNRepo is in beta. It only supports Android and 40 popular libraries, but iOS support is coming, and the community can request support for additional libraries.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-dec3">PostHog - Discover and debug issues with session replay for React Native.</a></p></li><li><p>&#128197; <a href="https://reactnative.dev/docs/releases">Release Calendar updated for 2026</a>: The release dates for React Native 0.84-0.89 have been defined. No sign of 1.0, so we pray for 2027? &#128519;</p></li><li><p>&#128038; <a href="https://x.com/swmansion/status/1995541905292091789">Reanimated Shared Elements Transitions are coming</a>: Software Mansion is teasing us about this <a href="https://github.com/software-mansion/react-native-reanimated/pull/7466">highly anticipated Reanimated PR</a> that could be merged anytime soon!</p></li><li><p>&#128038; <a href="https://x.com/mrousavy/status/1994751251284639993">Marc Rousavy is bullish on hybrid approaches</a>: I liked the comparison of React Native with the scripting layer of game engines like Unreal and Unity.</p></li><li><p>&#128038; <a href="https://x.com/tmikov/status/1996030644863021125">Hermes will soon support ISerialization (efficient opaque binary representation) for efficient message passing between runtimes</a>: Will be the base of an upcoming Web Worker implementation &#128064;.</p></li><li><p>&#127876; <a href="https://galaxies.dev/calendar/2025">React Native Advent Calendar 2025</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/deep-links-with-authentication-in-react-navigation">Deep Links and Authentication in React Navigation 7</a>: Explains how to deep link to screens behind auth and leverage a new <code>UNSTABLE_routeNamesChangeBehavior</code> option to help navigate to the deep link screen after login..</p></li><li><p>&#128220; <a href="https://blog.swmansion.com/building-an-ai-powered-note-taking-app-in-react-native-part-4-automatic-speech-recognition-a3b50e7d2245">Building an AI-Powered Note-Taking App in React Native - Part 4: Automatic Speech Recognition</a></p></li><li><p>&#128220; <a href="https://davey.bearblog.dev/bridging-uikit-and-swiftui-in-a-nitro-module/">Bridging UIKit and SwiftUI in a Nitro Module</a></p></li><li><p>&#128220; <a href="https://davey.bearblog.dev/transcribing-audio-buffers-from-react-native-audio-api-in-real-time/">Transcribing audio buffers from react-native-audio-api in Real-time</a></p></li><li><p>&#128230; <a href="https://kirillzyusko.github.io/react-native-keyboard-controller/blog/expo-snacks">Keyboard Controller 1.20 - Compatible with Expo Snacks, migrate from deprecated Reanimated </a><code>useAnimatedKeyboard</code><a href="https://kirillzyusko.github.io/react-native-keyboard-controller/blog/expo-snacks"> hook, new </a><code>assureFocusedInputVisible()</code><a href="https://kirillzyusko.github.io/react-native-keyboard-controller/blog/expo-snacks"> API</a></p></li><li><p>&#128230; <a href="https://github.com/l2hyunwoo/react-native-nitro-cookies">Nitro Cookies - High-performance HTTP cookie management</a></p></li><li><p>&#128230; <a href="https://sheet.lodev09.com/blog/release-3-0">True Sheet 3.0 - New Architecture, automatic ScrollView detection, native header/footer, sheet stacking, Reanimated 4, edge-to-edge, and more</a></p></li><li><p>&#128230; <a href="https://github.com/ammarahm-ed/react-native-actions-sheet/releases/tag/v10.0.0">Action Sheet 10.0 - Reanimated, edge-to-edge, improved keyboard behavior, better list support, new SheetManager APIs</a></p></li><li><p>&#128230; <a href="https://github.com/csark0812/expo-targets">Expo Targets - Add iOS widgets, App Clips, iMessage stickers, share extensions, and wallet extensions to your Expo app &#8212; no native experience required</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=Ol0vmCdF6Pk">React Strict DOM: Nicolas Gallagher on Writing Once for Web &amp; Native</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=8sPD8SNcUFA">Expo - How to send emails with Resend from your Expo app</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/de1cf646">Rocket Ship 86 - CSS Grid, Faster JSON, Uniwind Experience, React Native Rails &amp; Tiny Harvest Game Update</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://devblogs.microsoft.com/typescript/progress-on-typescript-7-december-2025/">Progress on TypeScript 7</a>: The 10x faster Go-based TypeScript compiler is coming! It already achieves great compatibility, and previews can easily be tested. TypeScript 6.0 will be the last JS-based release, and a bridge toward the newer implementation.</p></li><li><p>&#128227; <a href="https://bun.com/blog/bun-joins-anthropic">Bun is joining Anthropic</a></p></li><li><p>&#128227; <a href="https://web.dev/blog/webgpu-supported-major-browsers">WebGPU is now supported in major browsers</a></p></li><li><p>&#128220; <a href="https://snyk.io/fr/articles/npm-security-best-practices-shai-hulud-attack/">NPM Security Best Practices: How to Protect Your Packages After the 2025 Shai Hulud Attack</a></p></li><li><p>&#128230; <a href="https://oxc.rs/blog/2025-12-01-oxfmt-alpha.html">Oxc Formatter Alpha - Rust-powered, Prettier-compatible code formatter</a></p></li><li><p>&#128230; <a href="https://voidzero.dev/posts/announcing-vite-8-beta">Vite 8.0 beta - The Rolldown-powered Vite</a></p></li><li><p>&#128230; <a href="https://valibot.dev/blog/valibot-v1.2-release-notes/">Valibot 1.2 - Type coercion, metadata examples, ISBN validation</a></p></li><li><p>&#128230; <a href="https://prettier.io/blog/2025/11/27/3.7.0">Prettier 3.7 - Improved formatting consistency and new plugin features</a></p></li><li><p>&#128230; <a href="https://github.com/0xCardinal/actsense">Actsense - Audit your GitHub Actions to identify security vulnerabilities</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VYbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VYbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95e2ab49-af5b-459c-926c-fdd316afeb0b_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_!VYbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!VYbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95e2ab49-af5b-459c-926c-fdd316afeb0b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!kOVb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kOVb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kOVb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kOVb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kOVb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kOVb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg" width="731" height="775" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:775,&quot;width&quot;:731,&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_!kOVb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kOVb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kOVb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kOVb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d2daf15-98fc-4b84-ae18-0dcadd47fe9a_731x775.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"><svg role="img" 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"><g><title></title><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"><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"><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_!T_YD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T_YD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 424w, https://substackcdn.com/image/fetch/$s_!T_YD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 848w, https://substackcdn.com/image/fetch/$s_!T_YD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!T_YD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T_YD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg" width="730" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:730,&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_!T_YD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 424w, https://substackcdn.com/image/fetch/$s_!T_YD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 848w, https://substackcdn.com/image/fetch/$s_!T_YD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!T_YD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F127d02eb-aa7f-4f63-8ff9-0a86b7ff56fc_730x660.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"><svg role="img" 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"><g><title></title><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"><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"><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 260]]></title><description><![CDATA[TanStack, Actions, Immer, RTK, Streamdown, XState Store, ReScript, HTML streaming | Vercel v0, Worklets, Skia, Tailwind, Native Stack, Gifted Chat, Enriched | TC39, Playwright, Bun, Astro, Bette]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-260</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-260</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 28 Nov 2025 19:28:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KTNX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone! <strong>Kacper and Tymek from <a href="https://swmansion.com/?utm_source=thisweekinreact">Software Mansion</a></strong> here! &#128075;</p><p>This week, TanStack Pacer debuts in Beta, a new framework-agnostic library for controlling function timing with a dedicated React adapter. Lots of interesting articles featuring a 20,000x improvement in TanStack Router route matching algorithm speed, tips to speeding up Next.js on Kubernetes, and tutorial for React 19 Actions for better component responsiveness.</p><p>On the React Native side, we&#8217;d like to highlight an incredibly detailed blog post on Vercel&#8217;s breakdown of building the v0 iOS app.</p><p>Enjoy the read!</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_!Vqh7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vqh7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vqh7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vqh7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vqh7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vqh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d87fbba-56cb-40b9-8390-5cc7e0d506d0_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;: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="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!Vqh7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vqh7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vqh7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vqh7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d87fbba-56cb-40b9-8390-5cc7e0d506d0_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!a0cz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a0cz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a0cz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a0cz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a0cz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a0cz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_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;Why is internationalization so hard?&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="Why is internationalization so hard?" title="Why is internationalization so hard?" srcset="https://substackcdn.com/image/fetch/$s_!a0cz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a0cz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a0cz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a0cz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2218d9b4-e87e-4fe1-b5da-d93ab9f63b57_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"><svg role="img" 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"><g><title></title><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"><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"><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://learn.next-intl.dev/?discountCode=TWIRCZMG">Why is internationalization so hard?</a></strong></p><p>How do you set up i18n in Next.js so it feels built-in &#8212; not bolted on? In <a href="https://learn.next-intl.dev/?discountCode=TWIRCZMG">learn.next-intl.dev</a>, Jan Amann (maintainer of next-intl) distills years of hard-won lessons into practical patterns you can apply today:</p><ul><li><p>&#127757; <strong>I18n &#8800; translations</strong> &#8212; Understand the pieces that make a truly localized experience</p></li><li><p><strong>&#129513;Architecture that scales</strong> &#8212; Routing, locales, time zones &amp; currencies done right</p></li><li><p><strong>&#128640;The full picture</strong> &#8212; Backend, CMS, SEO, dev tooling, AI translations &amp; more</p></li></ul><p><a href="https://learn.next-intl.dev/?discountCode=TWIRCZMG">Now 40% off</a> during the Black Friday week!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!KTNX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KTNX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KTNX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KTNX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KTNX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KTNX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg" width="1456" height="703" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:703,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack Pacer is now in Beta&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 Pacer is now in Beta" title="TanStack Pacer is now in Beta" srcset="https://substackcdn.com/image/fetch/$s_!KTNX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KTNX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KTNX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KTNX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F472a4957-da17-4093-b662-0f61dd28ada4_1856x896.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"><svg role="img" 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"><g><title></title><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"><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"><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/pacer/latest">TanStack Pacer is now in Beta</a></strong></p><p>A new framework-agnostic library has just landed from the TanStack hands. It offers high-quality utilities for controlling function execution timing, including debouncing, throttling, rate limiting, batching, and more.</p><p>It provides a dedicated React adapter (<code>@tanstack/react-pacer</code>), which gives you a set of easy-to-use hooks on top of the core Pacer utilities, such as <code>useDebouncedValue</code>, <code>useThrottledValue</code>, <code>useQueuedState,</code> or <code>useBatcher</code>.<br>It also gives you the ability to debug the code via <a href="https://tanstack.com/pacer/latest/docs/devtools">TanStack Devtools</a>.</p><p>You can read more about the TanStack Pacer&#8217;s adapter for React <a href="https://tanstack.com/pacer/latest/docs/framework/react/adapter">here</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://www.road-to-next.com/?utm_source=newsletter&amp;utm_medium=email&amp;utm_campaign=this_week_in_react_3.4">[BLACK_FRIDAY for 50%] The Road to Next - Master Full-Stack Web Development with Next.js 15 and React 19</a></p></li><li><p>&#128038; <a href="https://x.com/mozhacks/status/1991176754476572999">Out-of-order HTML streaming proposal</a>: Lets HTML be presented non-linearly, and a single file can update multiple parts of the page. Particularly useful for streaming in React while leveraging Suspense.</p></li><li><p>&#128038; <a href="https://x.com/melvynxdev/status/1992477735927885964">Melvynx - An insightful discussion about choosing TanStack Start vs Next.js</a></p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-router-route-matching-tree-rewrite">TanStack Router - How we accidentally made route matching more performant by aiming for correctness</a>: TanStack Router&#8217;s route matching just became 20,000x faster by rewriting its algorithm to use a segment trie instead of a sorted list.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/tanstack-2-years">The State of TanStack, Two Years of Full-Time OSS</a>: The story of a two-year adventure in creating open source libraries. Tanner Linsley, the creator and owner of TanStack, talks about the difficulties, effort, and growth of the company, as well as his reflections about maintaining the product, concluding with TanStack&#8217;s plans.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/building-reusable-components-with-react-19-actions?friend=TWIR">Building Reusable Components with React 19 Actions</a>: Demonstrating how to leverage React 19 features, especially new <code>useTransition</code> and <code>useOptimistic</code> hook to prevent the user from feeling the UI is unresponsive.</p></li><li><p>&#128220; <a href="https://blog.platformatic.dev/93-faster-nextjs-in-your-kubernetes">93% Faster Next.js in (your) Kubernetes</a>: Optimized a 1,000 requests per second AWS-hosted Next.js app, making it more reliable using a separate Node.js application server called Watt.</p></li><li><p>&#128220; <a href="https://jovidecroock.com/blog/platform/">The Browser Has Everything You Need</a>: Preloading the critical data upfront can drastically improve perceived performance and save you endless debates between SSR and SPA.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/omit-for-discriminated-unions-in-type-script">Omit for Discriminated Unions in TypeScript</a>: Discussing a common pattern in React and TypeScript to create wrapper components that inherit props from a base component, and outlining the biggest problem with converting the base component into a discriminated union.</p></li><li><p>&#128220; <a href="https://tympanus.net/codrops/2025/11/21/one-canvas-to-rule-them-all-how-ink-games-new-site-handles-complex-3d/">One Canvas to Rule Them All: How INK Games&#8217; New Site Handles Complex 3D</a>: Using React Three Fiber and a single shared WebGL canvas.</p></li><li><p>&#128220; <a href="https://product.hubspot.com/blog/migrated-from-enzyme-to-react-testing-library">Moving Mountains: How We Migrated from Enzyme to React Testing Library</a>: Migrate 76,000+ tests from Enzyme to React Testing Library, from planning to execution to modernize React codebase.</p></li><li><p>&#128220; <a href="https://jjenzz.com/judging-apis-by-syntax-is-misleading/">Why Judging APIs by Syntax is Misleading You</a>: Using CSS-in-JS and directives, author illustrates that we tend to reject tools based on our familiarity with syntax, even if they solve problems at different levels of abstraction.</p></li><li><p>&#128220; <a href="https://tympanus.net/codrops/2025/11/26/creating-wavy-infinite-carousels-in-react-three-fiber-with-glsl-shaders/">Creating Wavy Infinite Carousels in React Three Fiber with GLSL Shaders</a></p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/accessibility-testing-your-react-app">Automated Accessibility Testing for React - Tools and Best Practices you can use</a></p></li><li><p>&#128220; <a href="https://www.epicreact.dev/react-routers-take-on-react-server-components-4bj7q">React Router&#8217;s take on React Server Components</a></p></li><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR&amp;utm_source=twir&amp;utm_medium=email&amp;utm_campaign=cert_bf2025_bf">React Certification - Up to 60% Off Mid / Senior prep &amp; exam bundles. Exams by Aurora Scharff. Trusted by 680+ companies like IBM &amp; PwC.</a></p></li><li><p>&#128230; <a href="https://github.com/reduxjs/redux-toolkit/releases/tag/v2.11.0">Redux Toolkit 2.11 - Immer v11 perf improvements, </a><code>refetchCachedPages</code><a href="https://github.com/reduxjs/redux-toolkit/releases/tag/v2.11.0"> option</a></p></li><li><p>&#128230; <a href="https://rescript-lang.org/blog/release-12-0-0/">ReScript 12 - Improved React Support, new build system</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/router/releases/tag/v1.139.3">TanStack Router 1.39 - Support for </a><code>vite preview</code><a href="https://github.com/TanStack/router/releases/tag/v1.139.3">, prerender with Vite preview server</a></p></li><li><p>&#128230; <a href="https://github.com/vercel/streamdown/releases/tag/streamdown%401.6.0">Streamdown 1.6 - Static rendering mode (no streaming)</a></p></li><li><p>&#128230; <a href="https://github.com/Ademking/use-nemo">use-nemo</a>: A Vite plugin that enables React-like directives in JavaScript code.</p></li><li><p>&#128230; <a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%403.12.0">XState Store 3.12 - Enable access to the previous value for computed atoms</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=9n-gLy9GfLs">Alem Tuzlak - New useRoute() React Router Hook Explained</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=CFYJoYsNJp0">Shruti Kapoor - Is TanStack Start the NextJS Killer?</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=k0S3Dq0k1pA">Youssef Benlemlih - TanStack DB is Getting Embarrassingly Good</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_!gZ5c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gZ5c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gZ5c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gZ5c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gZ5c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gZ5c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96c8a480-cb2b-4147-bb57-b8970fe12c54_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_!gZ5c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gZ5c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gZ5c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gZ5c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c8a480-cb2b-4147-bb57-b8970fe12c54_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!VkeS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VkeS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VkeS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VkeS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VkeS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VkeS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/622cce25-9327-4969-9325-44d41fbb8466_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;Slow And Janky Data Grids Suck. LyteNyte Grid Doesn't. &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="Slow And Janky Data Grids Suck. LyteNyte Grid Doesn't. " title="Slow And Janky Data Grids Suck. LyteNyte Grid Doesn't. " srcset="https://substackcdn.com/image/fetch/$s_!VkeS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VkeS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VkeS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VkeS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F622cce25-9327-4969-9325-44d41fbb8466_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"><svg role="img" 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"><g><title></title><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"><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"><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.1771technologies.com/">Slow And Janky Data Grids Suck. LyteNyte Grid Doesn&#8217;t.</a></strong></p><p>Frustrated with janky data grids that break down at scale, dictate your architecture, and waste hours on messy workarounds?</p><p><strong>Unleash unmatched grid speed with LyteNyte Grid!</strong> The 40kb data grid that handles 10,000 updates per second, renders millions of rows, and offers 100+ advanced features ranging from server data loading to tree views. Built in React for React, it can be headless or pre-styled, and our declarative API means no more awkward integrations or workarounds. LyteNyte skips the wrappers and delivers pure performance.</p><p><strong><a href="https://www.1771technologies.com/demo">See LyteNyte Grid in action today</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!7PPV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7PPV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 424w, https://substackcdn.com/image/fetch/$s_!7PPV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 848w, https://substackcdn.com/image/fetch/$s_!7PPV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 1272w, https://substackcdn.com/image/fetch/$s_!7PPV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7PPV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png" width="960" height="502" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:502,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Vercel - How we built the v0 iOS 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="Vercel - How we built the v0 iOS app" title="Vercel - How we built the v0 iOS app" srcset="https://substackcdn.com/image/fetch/$s_!7PPV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 424w, https://substackcdn.com/image/fetch/$s_!7PPV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 848w, https://substackcdn.com/image/fetch/$s_!7PPV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.png 1272w, https://substackcdn.com/image/fetch/$s_!7PPV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab8dcfe-df3e-41aa-aa28-4070102c91b5_960x502.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"><svg role="img" 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"><g><title></title><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"><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"><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/blog/how-we-built-the-v0-ios-app">Vercel - How we built the v0 iOS app</a></strong></p><p>A detailed technical breakdown of the challenges they had to overcome to create a high-quality React Native app. The article is packed with visual explanations and code snippets of common RN headaches related to keyboard handling, lists, text input, and animations.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://www.callstack.com/blog/how-to-release-a-react-native-app-on-the-meta-horizon-store?utm_campaign=meta&amp;utm_source=TWIR&amp;utm_medium=email&amp;utm_content=how-to-release-a-react-native-app-on-the-meta-horizon-store">Shipping to the Meta Horizon Store with React Native? See Callstack&#8217;s release guide, then jump into Meta&#8217;s dev competition</a></p></li><li><p>&#128064; <a href="https://github.com/software-mansion/react-native-reanimated/pull/8600">Worklets PR - custom serialization support</a>: A PR that adds a feature to register Custom Serializables just landed on main. It lets you transfer objects between runtimes that can&#8217;t be trivially serialized or deserialized - like primitives, or objects without circular references, containing only primitives.</p></li><li><p>&#128038; <a href="https://x.com/mrousavy/status/1992958223876559037">VisionCamera V5 on Android has been achieved by the Margelo team</a></p></li><li><p>&#128227; <a href="https://expo.dev/changelog/custom-environment-variable-environments">Expo - Custom environments for EAS Environment Variables</a></p></li><li><p>&#128220; <a href="https://blog.swmansion.com/you-may-not-need-reanimated-measure-5b9c11d27ba4">You May Not Need Reanimated Measure</a>: You can now use React Native&#8217;s built-in <code>measure</code> to get the layout dimensions synchronously in the <code>useLayoutEffect</code> on the New Architecture.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/from-a-brownfield-react-native-and-next-js-stack-to-one-expo-app">Going Universal: From a brownfield React Native and Next.js stack to one Expo app</a>: The journey that one developer took, transforming two separate codebases step by step over several months into a single universal Expo app running on the web, iOS, and Android.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-create-apple-maps-style-liquid-glass-sheets">How to create Apple Maps style liquid glass sheets in Expo (the real way)</a>: An overview of 3 different implementations using Expo UI <code>BottomSheet</code>, Expo Router&#8217;s <code>formSheet</code>, and TrueSheet.</p></li><li><p>&#128220; <a href="https://blog.swmansion.com/building-an-ai-powered-note-taking-app-in-react-native-part-3-local-rag-868ba75f818b">Building an AI-Powered Note-Taking App in React Native - Part 3: Local RAG</a>: On-device Retrieval-Augmented Generation using React Native Executorch and React Native RAG.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/integrating-swift-package-manager-with-react-native-libraries">Integrating Swift Package Manager With React Native Libraries</a></p></li><li><p>&#128230; <a href="https://github.com/Shopify/react-native-skia/releases/tag/v2.4.0">React Native Skia 2.4 - zIndex support</a>: The zIndex can be animated.</p></li><li><p>&#128230; <a href="https://github.com/mgcrea/react-native-tailwind">react-native-tailwind</a>: A fresh, compile-time Tailwind CSS library for React Native with zero runtime overhead and a TypeScript-first approach.</p></li><li><p>&#128230; <a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation/native-stack%407.8.0">React Navigation Native Stack 7.8 - </a><code>pageSheet</code><a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation/native-stack%407.8.0"> presentation, </a><code>headerBackIcon</code><a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation/native-stack%407.8.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/FaridSafi/react-native-gifted-chat/blob/master/CHANGELOG.md">React Native Gifted Chat 3.0 - Full rewrite in TS, better keyboard handling, enhanced customization options</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched/releases/tag/v0.1.6">React Native Enriched 0.1.6 - improved Android measurements, iOS HTML Entity Handling</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=7UVIrqrrrso">Expo - Pull Request previews in GitHub Actions</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=rSym-q9soFk">Simon Grimm - 7 Tips to Make Your React Native App Blazing Fast</a></p></li><li><p>&#127897;&#65039; <a href="https://www.callstack.com/podcasts/bringing-react-native-to-vr-on-meta-quest">React Universe On Air - React Native Goes VR: Inside the Meta Quest Platform</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#129419; <a href="https://bsky.app/profile/robpalmer.bsky.social/post/3m62djhwj3k2i">TC39 - Proposals are progressing</a></p></li><li><p>&#128220; <a href="https://socket.dev/blog/shai-hulud-strikes-again-v2">Shai Hulud Strikes Again (v2)</a>: A major software supply chain attack on NPM affecting 70+ React &amp; React Native packages.</p></li><li><p>&#128220; <a href="https://www.joshwcomeau.com/css/subgrid/">Brand New Layouts with CSS Subgrid</a></p></li><li><p>&#128220; <a href="https://www.thisdot.co/blog/understanding-sourcemaps-from-development-to-production">Understanding Sourcemaps: From Development to Production</a></p></li><li><p>&#128220; <a href="https://infrequently.org/2025/11/performance-inequality-gap-2026/">The Performance Inequality Gap, 2026</a></p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.57.0">Playwright 1.57 - Speedboard tab in HTML reporter, new </a><code>wait</code><a href="https://github.com/microsoft/playwright/releases/tag/v1.57.0"> field in </a><code>webServer</code><a href="https://github.com/microsoft/playwright/releases/tag/v1.57.0"> config</a></p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.3">Bun 1.3.3 - </a><code>CompressionStream</code><a href="https://bun.com/blog/bun-v1.3.3"> and </a><code>DecompressionStream</code></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-5160/">Astro 5.16 - experimental SVG optimization</a></p></li><li><p>&#128230; <a href="https://www.better-auth.com/blog/1-4">Better Auth 1.4 - Stateless sessions, optimized queries, and more</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/957/css-advanced-and-obscure">Syntax - CSS: Advanced and Obscure</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jRMn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRMn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16db675f-2f59-4d06-9db3-d5b9ae4d7eec_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_!jRMn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!jRMn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16db675f-2f59-4d06-9db3-d5b9ae4d7eec_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!ZbNj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZbNj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZbNj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZbNj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZbNj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZbNj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg" width="1000" height="1102" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1102,&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_!ZbNj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZbNj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZbNj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZbNj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffade8149-7672-42be-9f8f-247a44786163_1000x1102.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"><svg role="img" 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"><g><title></title><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"><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"><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_!fzXu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fzXu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fzXu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fzXu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fzXu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fzXu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg" width="1000" height="1099" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1099,&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_!fzXu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fzXu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fzXu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fzXu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0d4e936-f659-42c9-a7ff-06acdc4acf86_1000x1099.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"><svg role="img" 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"><g><title></title><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"><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"><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 259]]></title><description><![CDATA[State of React, Promise subclasses, Next.js, RSC, JSX Tools, React Grab, Base UI, Waku, StyleX | Yoga CSS Grid, Radon, Brownfield, Detox, Bootsplash | TC39, Browserslist, Lint]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-259</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-259</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 21 Nov 2025 13:52:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!luKu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> here! &#128075;</p><p>It&#8217;s been another quiet week in the ecosystem, probably because everyone was afraid to announce anything during the massive Cloudflare outage! By the way, this one was not caused by <code>useEffect</code> &#128518;!</p><p>We have a good variety of interesting links, but I&#8217;m not sure what could be the headline. The most important news was probably the announcement of the upcoming CSS grid support in Yoga and React Native, but it&#8217;s still a draft PR for now. Also excited by the TC39 proposals progressing.</p><p>Make sure to take the <a href="https://survey.devographics.com/en-US/survey/state-of-react/2025?source=thisweekinreact.com">State of React 2025 survey</a>, which just opened today!</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_!XJ1F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XJ1F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XJ1F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XJ1F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XJ1F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XJ1F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b24a91f3-001b-46c6-8609-ec8dedc7815c_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_!XJ1F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XJ1F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XJ1F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XJ1F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb24a91f3-001b-46c6-8609-ec8dedc7815c_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33nu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33nu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a95a1148-7516-4233-b760-08bfc880020b_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_!33nu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!w4fV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w4fV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w4fV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w4fV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w4fV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w4fV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg" width="1090" height="551" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:551,&quot;width&quot;:1090,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Shadcn Admin Kit: Supercharge Your Next Admin&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="Shadcn Admin Kit: Supercharge Your Next Admin" title="Shadcn Admin Kit: Supercharge Your Next Admin" srcset="https://substackcdn.com/image/fetch/$s_!w4fV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 424w, https://substackcdn.com/image/fetch/$s_!w4fV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 848w, https://substackcdn.com/image/fetch/$s_!w4fV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!w4fV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbfcd929-3563-4d93-99b0-bb77f8617d6d_1090x551.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"><svg role="img" 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"><g><title></title><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"><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"><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/shadcn-admin-kit/">Shadcn Admin Kit: Supercharge Your Next Admin</a></strong></p><p>Your AI coding assistant knows CRUD, right? Except it reinvents the wheel every time and accumulates tech debt like crazy. &#129760; Help it code smarter with <a href="https://github.com/marmelab/shadcn-admin-kit">Shadcn Admin Kit</a>, an AI-ready library built on best practices (TanStack Query, React Router, React Hook Form, Radix UI, React-Admin).</p><p>With dozens of ready-to-use blocks, a flexible headless core, and full composability, it scales from simple admins to complex B2B apps, without ever getting in your way.</p><p>The best part? Components live in your repo. Modify them freely; no waiting for releases or messy patches.</p><p>&#8594; Get started with the open-source <a href="https://marmelab.com/shadcn-admin-kit/">Shadcn Admin Kit</a> today! &#128165;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33nu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33nu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a95a1148-7516-4233-b760-08bfc880020b_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_!33nu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-nov19">Product for Engineers - Non-obvious pricing advice for startups</a></p></li><li><p>&#128064; <a href="https://github.com/reactwg/async-react/discussions/3">Async React - New </a><code>use()</code><a href="https://github.com/reactwg/async-react/discussions/3"> docs for Promise subclasses</a>: When implementing a Suspense-enabled library, you can help React avoid unnecessarily suspending by setting <code>value/status/reason</code> attributes on a Promise, so that React can read it synchronously.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/85773">Next.js MCP PR - New </a><code>get_routes</code><a href="https://github.com/vercel/next.js/pull/85773"> tool</a>: Gives AI agents access to a list of route handlers, available in v16.0.3.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/85915">Next.js PR - New </a><code>next analyze</code><a href="https://github.com/vercel/next.js/pull/85915"> CLI command</a>: New built-in experimental bundle analyzer for Next.js and Turbopack. The <a href="https://x.com/timneutkens/status/1990841104552357905">&#8220;import stack&#8221;</a> helps you figure out where a module is being used. Available in v16.0.2-canary.22, scheduled for v16.1.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/86120">Next.js PR - New </a><code>next upgrade</code><a href="https://github.com/vercel/next.js/pull/86120"> CLI command</a>: New easy-to-remember command, just a convenient alias to the codemods that already exist, available in v16.0.2-canary.24.</p></li><li><p>&#128202; <a href="https://survey.devographics.com/en-US/survey/state-of-react/2025?source=thisweekinreact.com">State of React 2025 - Survey is now open</a>: Please take it, and don&#8217;t forget to vote for our newsletter at the end &#128519;.</p></li><li><p>&#128184; <a href="https://strich.io/?ref=twir">STRICH - Add lightning-fast 1D+2D barcode/QR scanning to your web app with a lean JS lib. Simple, predictable pricing, free trial and demo!</a></p></li><li><p>&#128220; <a href="https://pedrocattori.com/posts/just-javascript/">Just JavaScript</a>: A Remix maintainer gives their opinion on whether React Router, Remix 3, Svelte, and React are just JavaScript or not.</p></li><li><p>&#128220; <a href="https://marmelab.com/blog/2025/11/14/react-server-components-with-parcel.html">React Server Components With Parcel</a>: Implements a simple task management application. I found it interesting to see how the Parcel integration works, starting from zero.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/tooltip-components-should-not-exist">Tooltip Components Should Not Exist</a>: Explains that a generic <code>&lt;Tooltip&gt;</code> component is too low-level for a design system and leads to anti-patterns. Instead, it could be better to expose more specialized tooltip components.</p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/testing-async-react-rsc-components">Testing async React RSC components</a>: Testing React Server Components looks challenging. It may be easier to avoid async components and leverage <code>use()</code> instead.</p></li><li><p>&#128220; <a href="https://laktek.com/modal-dialogs-without-react-javascript">Modal dialogs without React (or JavaScript)</a>: This interactive article demonstrates that you might not need a third-party component library with a <code>&lt;Modal&gt;</code> component, thanks to modern Web API alternatives that are now widely supported.</p></li><li><p>&#128220; <a href="https://www.epicweb.dev/vitest-browser-mode-vs-playwright">Vitest Browser Mode vs Playwright</a>: A great comparison of these tools, both of which can run React component tests with quite different tradeoffs. Vitest Browser Mode is the recommended approach.</p></li><li><p>&#128230; <a href="https://www.ycombinator.com/launches/OnI-jsx-tool-in-browser-react-ide">JSX Tools - In-Browser React IDEs</a>: Interesting new Y Combinator startup that turns your Chrome DevTools into an AI-powered IDE that understands React/JSX and lets you select UI elements to edit.</p></li><li><p>&#128230; <a href="https://github.com/aidenybai/react-grab">React Grab - Grab any element on in your app and give it to Cursor, Claude Code, etc</a>: It looks quite similar to JSX Tools above, except that you keep give the grabbed context to an external IDE.</p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases#v1-0-0-beta-5">Base UI 1.0 beta.5 - New button component, detached triggers, Autocomplete/Combobox improvements, and more</a>: The upcoming UI library from the former Radix UI team keeps progressing, and announced that the lib will be RC/stable in December.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/router/releases/tag/v1.136.0">TanStack Router 1.136 - New </a><code>createServerEntry()</code><a href="https://github.com/TanStack/router/releases/tag/v1.136.0"> API</a></p></li><li><p>&#128230; <a href="https://newsletter.daishikato.com/p/what-s-new-in-waku-v0-27-1">Waku 0.27.1 - Static pages/layouts/slices are now rendered at build time</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/stylex/releases/tag/0.17.0">StyleX 0.17 Add support for Unplugin, new </a><code>defineMarker()</code><a href="https://github.com/facebook/stylex/releases/tag/0.17.0"> API, ESLint improvements</a></p></li><li><p>&#128230; <a href="https://github.com/47ng/nuqs/releases/tag/v2.8.0">nuqs 2.8 - Add react-router v5 support</a></p></li><li><p>&#128230; <a href="https://c15t.com/changelog/2025-10-27-v1.8.0">c15t 1.8 - Content Management - Hybrid consent storage, user identification. configurable legal links, and more</a></p></li><li><p>&#128230; <a href="https://bsky.app/profile/wojtekmaj.pl/post/3m5tfx5nrgs2i">vite-plugin-react-fallback-throttle</a>: Could help speed up your React 19 Suspense unit tests by removing a hardcoded 300ms delay.</p></li><li><p>&#128230; <a href="https://storybook.js.org/blog/storybook-mcp-sneak-peek/">Storybook 10.1 alpha - Storybook MCP sneak peek</a></p></li><li><p>&#128230; <a href="https://github.com/vercel/streamdown/releases/tag/streamdown%401.5.0">Streamdown 1.5 - Markdown streaming renderer - New docs, performance improvements, fullscreen view for diagrams</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=yc4yvjM72uE">CodeTV - Hands On With Async React with Ricky Hanlon</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=gXz-lLIJbMI">Ben Holmes - I fixed Zustand&#8217;s biggest problem</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=LyKOB_xNXEY">Youssef Benlemlih - The Coolest TanStack Feature - View Transitions</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=qrqlHdevfOc">Jan Marshal - TanStack Start Is Shockingly Good, 100% Typesafe!</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_!-kF2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-kF2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-kF2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-kF2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-kF2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-kF2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe281eda-67ac-4248-9d85-c1876d0a0ddb_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_!-kF2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-kF2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-kF2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-kF2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe281eda-67ac-4248-9d85-c1876d0a0ddb_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"><svg role="img" 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"><g><title></title><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"><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"><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><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33nu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33nu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a95a1148-7516-4233-b760-08bfc880020b_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_!33nu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!bB7o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bB7o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bB7o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bB7o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bB7o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bB7o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32ae163b-73ef-4fea-96d8-05fb582d3699_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;Slow And Janky Data Grids Suck. LyteNyte Grid Doesn't. &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="Slow And Janky Data Grids Suck. LyteNyte Grid Doesn't. " title="Slow And Janky Data Grids Suck. LyteNyte Grid Doesn't. " srcset="https://substackcdn.com/image/fetch/$s_!bB7o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bB7o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bB7o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bB7o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32ae163b-73ef-4fea-96d8-05fb582d3699_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"><svg role="img" 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"><g><title></title><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"><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"><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.1771technologies.com/">Slow And Janky Data Grids Suck. LyteNyte Grid Doesn&#8217;t.</a></strong></p><p>Frustrated with janky data grids that break down at scale, dictate your architecture, and waste hours on messy workarounds?</p><p><strong>Unleash unmatched grid speed with LyteNyte Grid!</strong> The 40kb data grid that handles 10,000 updates per second, renders millions of rows, and offers 100+ advanced features ranging from server data loading to tree views. Built in React for React, it can be headless or pre-styled, and our declarative API means no more awkward integrations or workarounds. LyteNyte skips the wrappers and delivers pure performance.</p><p><strong><a href="https://www.1771technologies.com/demo">See LyteNyte Grid in action today</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33nu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33nu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a95a1148-7516-4233-b760-08bfc880020b_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_!33nu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://www.callstack.com/blog/what-you-can-build-with-react-native-on-meta-quest?utm_campaign=meta&amp;utm_source=TWIR&amp;utm_medium=email&amp;utm_content=what-you-can-build-with-react-native-on-meta-quest">4 React Native app ideas for the Meta Horizon Start Dev Competition - submit your app by Dec 9, 2025 and win $25k.</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/yoga/pull/1865">Yoga PR - CSS Grid support</a>: A developer from the Expo team is implementing the CSS Grid specification into Yoga, the React Native layout engine! This will also benefit many other tools and renderers that also use Yoga. &#127881;</p></li><li><p>&#128038; <a href="https://x.com/tomekzaw_/status/1989009271401426982">Reanimated preview - Support for animating text inside </a><code>Animated.Text</code></p></li><li><p>&#128038; <a href="https://x.com/swmansion/status/1990801086622429568">Radon IDE now has a free plan for non-commercial usage</a></p></li><li><p>&#128227; <a href="https://developer.apple.com/programs/mini-apps-partner/">Apple - Mini Apps Partner Program</a></p></li><li><p>&#128467; <a href="https://www.reactnativelondon.co.uk/?utm_source=thisweekinreact">RNLConf</a> - &#127468;&#127463; London - Thanks to everyone who made this year unforgettable! Tickets for RNLConf 2026 are now open. Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://hashrocket.com/blog/posts/nativewind-speeding-up-styling-in-react-native">Nativewind: Speeding up Styling in React Native</a></p></li><li><p>&#128220; <a href="https://blog.swmansion.com/building-an-integrated-react-native-brownfield-app-using-expo-step-by-step-android-guide-ee341c0fd982">Building an Integrated React Native Brownfield App Using Expo: Step-by-Step Android Guide</a></p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/expo-updates-stuck-on-android-when-force-update/">UI Freeze Workaround for React Native Expo OTA Updates</a></p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/react-native-android-enabling-flog/">How to enable React Native Core&#8217;s FLog logging on Android</a></p></li><li><p>&#128220; <a href="https://blog.swmansion.com/building-an-ai-powered-note-taking-app-in-react-native-part-2-image-semantic-search-0456895cdf17">Building an AI-Powered Note-Taking App in React Native &#8212; Part 2: Image Semantic Search</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/how-to-integrate-eas-workflows-with-github-actions">How to integrate EAS Workflows with GitHub Actions for faster mobile CI</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/from-a-brownfield-react-native-and-next-js-stack-to-one-expo-app">Going Universal: From a brownfield React Native and Next.js stack to one Expo app</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/expo-brownfield-target/releases/tag/v0.0.1">Expo Brownfield Target - Expo config plugin extending native projects for building app as a brownfield</a></p></li><li><p>&#128230; <a href="https://github.com/react-navigation/react-navigation/releases/tag/%40react-navigation%2Fstack%407.6.4">React Navigation Stack 7.6.4 - Fix gaps between animating screens bug under New Architecture</a></p></li><li><p>&#128230; <a href="https://github.com/wix/Detox/releases/tag/20.46.0">Detox 20.46 - Configurable Android systemUI</a></p></li><li><p>&#128230; <a href="https://github.com/irekrog/react-native-torch-nitro">Nitro Torch - Flashlight library for iOS and Android</a></p></li><li><p>&#128230; <a href="https://github.com/DaveyEke/expo-speech-transcriber">Expo Speech Transcriber - New iOS-only lib, supports iOS 26 SpeechAnalyzer, realtime transcription</a></p></li><li><p>&#128230; <a href="https://www.swift.org/blog/embedded-swift-improvements-coming-in-swift-6.3/">Swift 6.3 dev snapshot - Embedded Swift Improvements</a></p></li><li><p>&#128230; <a href="https://github.com/zoontek/react-native-bootsplash/pull/730#issuecomment-3543026439">Bootsplash 7.0 beta - Revamped Expo plugin</a></p></li><li><p>&#128230; <a href="https://github.com/darkresearch/streamdown-rn">Streamdown RN - Streaming markdown renderer based on Vercel&#8217;s Streamdown</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=eH2zlBprK1k">Callstack Webinar - Scaling React Native at Zalando: How Brownfield Migration Paid Off</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=SHEyzLJ6hGY">Software Mansion - Meet React Native Worklets: Run JavaScript on Multiple Threads</a></p></li><li><p>&#127897;&#65039; <a href="https://share.transistor.fm/s/34807619">Rocket Ship 85 - Valdi vs React Native, Uniwind v1, WebGPU, Game Dev &amp; AI Engineering</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-347-skylight-smart-displays-powered-by-react-native">RNR 347 - Skylight: Smart Displays Powered by React Native</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33nu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33nu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a95a1148-7516-4233-b760-08bfc880020b_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_!33nu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#129419; <a href="https://bsky.app/profile/robpalmer.bsky.social">TC39 meeting in progress - Live updates from Rob Palmer</a>: The meeting is still in progress, but we already know great ES proposals that have changed stage. I&#8217;m particularly excited by <code>Promise.allKeyed()</code>, Import Text and <code>Object.keysLength()</code>.</p></li><li><p>&#128220; <a href="https://www.bram.us/2025/11/17/faking-two-phase-view-transitions-with-the-navigation-apis-precommithandler/">Faking Two-Phase View Transitions with the Navigation API&#8217;s precommitHandler</a>: The problem with Cross-Document View Transitions is that the transition can be delayed until the navigation commits. A solution could be to transition immediately to an intermediate skeleton.</p></li><li><p>&#128220; <a href="https://wingolog.org/archives/2025/11/13/the-last-couple-years-in-v8s-garbage-collector">The last couple years in v8&#8217;s garbage collector</a></p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/browserslist-baseline/">Browserslist &amp; Baseline</a></p></li><li><p>&#128220; <a href="https://piccalil.li/blog/perfecting-baseline/">Perfecting Baseline</a></p></li><li><p>&#128230; <a href="https://github.com/3ru/eslint-plugin-baseline-js">ESLint Plugin Baseline JS</a></p></li><li><p>&#128230; <a href="https://eslint.org/blog/2025/11/eslint-v10.0.0-alpha.0-released/">ESLint v10.0.0-alpha.0</a></p></li><li><p>&#128230; <a href="https://github.com/oxc-project/oxc/releases/tag/apps_v1.29.0">oxlint v1.29.0 &amp; oxfmt v0.14.0</a></p></li><li><p>&#128230; <a href="https://www.prisma.io/blog/announcing-prisma-orm-7-0-0">Prisma ORM 7.0 - Rust-free client by default, smaller, faster</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!33nu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!33nu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a95a1148-7516-4233-b760-08bfc880020b_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_!33nu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!33nu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!33nu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa95a1148-7516-4233-b760-08bfc880020b_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!0dxK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0dxK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0dxK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0dxK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0dxK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0dxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg" width="992" height="327" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:327,&quot;width&quot;:992,&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_!0dxK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0dxK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0dxK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0dxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ff83cc-31d8-4b2f-891f-2462089e1928_992x327.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"><svg role="img" 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"><g><title></title><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"><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"><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_!luKu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!luKu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 424w, https://substackcdn.com/image/fetch/$s_!luKu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 848w, https://substackcdn.com/image/fetch/$s_!luKu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!luKu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!luKu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg" width="830" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:830,&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_!luKu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 424w, https://substackcdn.com/image/fetch/$s_!luKu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 848w, https://substackcdn.com/image/fetch/$s_!luKu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!luKu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90dd7a53-b577-4164-aa6f-16d9ec7e5fac_830x1122.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"><svg role="img" 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"><g><title></title><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"><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"><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 258]]></title><description><![CDATA[TanStack, Next.js, ImGui, next-intl, React-Email, Ink, React Router | Valdi, IntersectionObserver, Nitro, Radon, Lynx, WebGPU, Audio | TC39, Node, Web Animations, TypeScript, pnpm]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-258</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-258</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 14 Nov 2025 13:33:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!onoY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> here! &#128075;</p><p>This week has been relatively calm in the ecosystem. We have a good variety of community blog posts, releases, and weak signals. I&#8217;m not sure what to highlight, so I&#8217;ll just let you enjoy reading it!</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><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><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></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_!4C-O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4C-O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4C-O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4C-O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4C-O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4C-O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edae6a20-27d8-4ac4-a88e-04e09f115f5b_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;AG Charts: The Best React Charts in the World.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="AG Charts: The Best React Charts in the World." title="AG Charts: The Best React Charts in the World." srcset="https://substackcdn.com/image/fetch/$s_!4C-O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4C-O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4C-O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4C-O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedae6a20-27d8-4ac4-a88e-04e09f115f5b_2400x1256.jpeg 1456w" sizes="100vw"></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"><svg role="img" 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"><g><title></title><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"><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"><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.ag-grid.com/charts?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=2025-email-6">AG Charts: The Best React Charts in the World.</a></strong></p><p><strong>AG Charts</strong> is a high-performance, canvas-based charting library from <a href="https://www.ag-grid.com/react-table?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=2025-email-6">AG Grid</a>.</p><p>Originally built to power AG Grid&#8217;s Integrated Charts, it now serves over <strong>1M npm downloads</strong> each month.</p><ul><li><p>&#127379; <strong>Free</strong>: A wide range of chart types (bar, line, scatter, area, and more) &#8212; free, forever.</p></li><li><p>&#128640; <strong>Fast</strong>: Optimised canvas rendering for large datasets (1M+ points).</p></li><li><p>&#129470; <strong>Accessible</strong>: Built-in support for screen readers and keyboard navigation.</p></li><li><p>&#128260; <strong>AG Grid Integration</strong>: Shared API with AG Grid for seamless integration.</p></li></ul><p>&#128073; Get Started for Free: <a href="https://www.ag-grid.com/charts?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=2025-email-6">www.ag-grid.com/charts</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!onoY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!onoY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 424w, https://substackcdn.com/image/fetch/$s_!onoY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 848w, https://substackcdn.com/image/fetch/$s_!onoY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!onoY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!onoY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg" width="1456" height="425" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:425,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack DB 0.5 &#8212; Query-Driven Sync&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 DB 0.5 &#8212; Query-Driven Sync" title="TanStack DB 0.5 &#8212; Query-Driven Sync" srcset="https://substackcdn.com/image/fetch/$s_!onoY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 424w, https://substackcdn.com/image/fetch/$s_!onoY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 848w, https://substackcdn.com/image/fetch/$s_!onoY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!onoY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2e1ea57-fd90-435e-8c72-2c81a8d26ac1_1578x461.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"><svg role="img" 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"><g><title></title><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"><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"><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-db-0.5-query-driven-sync">TanStack DB 0.5 &#8212; Query-Driven Sync</a></strong></p><p>A collection shouldn&#8217;t dictate what data loads: Your queries should. This concept is now implemented in TanStack DB with a new <code>syncMode: &#8216;eager&#8217; | &#8216;on-demand&#8217; | &#8216;progressive&#8217;</code> option. This moves the library closer to how GraphQL clients like Apollo/Relay work, where components declare their data dependency, and the client figures out how to load and maintain that data. This can be adapted to work on top of any existing backend API, as long as you provide code to map the query predicates into actual API calls.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://strapi.io/blog/how-to-build-a-frontend-with-lovable-dev-for-your-strapi-backend?utm_campaign=19282052-Newsletter%20Sponsorships&amp;utm_source=React&amp;utm_medium=2nd-sponsor">Build a React frontend for your backend with Lovable and Strapi in this step-by-step tutorial</a></p></li><li><p>&#128227; Both <a href="https://bun.com/docs/guides/ecosystem/tanstack-start">Bun</a> and <a href="https://vercel.com/changelog/support-for-tanstack-start">Vercel</a> announced TanStack Start support, leveraging the Nitro Vite plugin.</p></li><li><p>&#128064; <a href="https://github.com/vercel/next.js/pull/86000">Next.js PR - New </a><code>config.experimental.transitionIndicator</code><a href="https://github.com/vercel/next.js/pull/86000"> option</a>: This turns on an experimental React Transition Indicator feature to trigger your browser&#8217;s native spinner during pending React transitions. It&#8217;s still early, and should only work in Chromium, but I&#8217;m excited to give it a try asap!</p></li><li><p>&#128467; <a href="https://reactadvanced.com/canada/?utm_source=thisweekinreact">React Advanced</a> - &#127464;&#127462; Toronto - March 24 &amp; 26. Check out the incredible lineup featuring Wes Bos, Hosh Cameau, Henri Helvetica, and many more top React experts! Get a 10% discount with code &#8220;TWIR&#8221;</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/react-19-error-boundary-changed/">React 19 Error Boundary Behaves Differently</a>: Explains a subtle Error Boundary behavior change that came with React 19, implementing a fail-fast behavior that bails out on the first error instead of aggregating errors.</p></li><li><p>&#128220; <a href="https://aifoc.us/dead-framework-theory/">Dead Framework Theory</a>: New frameworks are dead on arrival in a world where React has become the platform. LLMs output React code by default and/or due to hardcoded system prompts, creating a self-reinforcing loop that hinders innovation.</p></li><li><p>&#128220; <a href="https://engineering.fb.com/2025/11/11/web/stylex-a-styling-library-for-css-at-scale/">StyleX: A Styling Library for CSS at Scale</a>: StyleX maintainer gives a nice overview of Meta&#8217;s CSS-in-JS library.</p></li><li><p>&#128220; <a href="https://dev.to/lazarv/the-illusion-of-language-what-directives-really-are-445">The Illusion of Language: What Directives Really Are</a>: Compares directives to C++ pragmas/macros, and tells us what we can learn from history.</p></li><li><p>&#128220; <a href="https://vercel.com/blog/vercel-the-anti-vendor-lock-in-cloud">Vercel: The anti-vendor-lock-in cloud</a>: Vercel argues that a framework-defined infrastructure creates more portable code and less lock-in. Next.js adapters formalize the framework-platform contract.</p></li><li><p>&#128220; <a href="https://howtotestfrontend.com/resources/react-act-function-everything-you-need-to-know">Everything you need to know about act() in React tests</a>: A deep dive on the test helper function that ensures React pending updates are applied before making assertions.</p></li><li><p>&#128220; <a href="https://www.charpeni.com/blog/dont-blindly-use-usetransition-everywhere">Don&#8217;t Blindly Use useTransition Everywhere</a>: An interactive blog post explains that the UX of a React docs example is not ideal (switching tabs with expensive content), and suggests an improvement.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/error-handling-in-react-with-react-error-boundary?friend=TWIR">Error Handling in React with react-error-boundary</a>: The lib provides a declarative error boundary component for rendering errors, and you can also use <code>useErrorBoundary()</code> to trigger it imperatively.</p></li><li><p>&#128184; <a href="https://coderabbit.link/F8zN5Km">CodeRabbit - Cut Code Review Time &amp; Bugs in Half</a></p></li><li><p>&#128230; <a href="https://github.com/tmikov/imgui-react-runtime">ImGui React Runtime</a>: Hermes maintainer created a custom runtime and React renderer for Dear ImGui (C++ GUI lib). Experimental, but clearly shows Static Hermes&#8217; ability to mix typed and untyped JS in a single project, while enabling direct, zero-cost FFI bindings to the underlying C++ lib.</p></li><li><p>&#128230; <a href="https://next-intl.dev/blog/use-extracted">Next-Intl 4.5 - Introducing </a><code>useExtracted()</code><a href="https://next-intl.dev/blog/use-extracted">: The Tailwind of i18n</a>: This new API is an attempt to bring Tailwind properties (colocation, local reasoning, no naming&#8230;) to i18n, improving AI support along the way.</p></li><li><p>&#128230; <a href="https://resend.com/blog/react-email-5">React Email 5.0 - Support for dark mode, Tailwind 4, new components, React 19.2, Next.js 16</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v795">React Router 7.9.5 - Unstable instrumentation API, unstable concurrent prerendering</a></p></li><li><p>&#128230; <a href="https://github.com/vadimdemedes/ink/releases/tag/v6.5.0">Ink 6.5 - CLI renderer - New incremental rendering mode to only updates changed lines</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=1aP0HEatAyQ">Shruti Kapoor - 4 Features of React 19.2 You Must Know</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/954/fullstack-tanstack-the-scoop-with-tanner-linsley">Syntax.fm 954 - Fullstack TanStack! The Scoop with Tanner Linsley</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" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!ziFw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ziFw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ziFw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ziFw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ziFw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ziFw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg" width="1062" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1062,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Debug smarter with real time logs in VS Code&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="Debug smarter with real time logs in VS Code" title="Debug smarter with real time logs in VS Code" srcset="https://substackcdn.com/image/fetch/$s_!ziFw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ziFw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ziFw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ziFw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e04855c-5c22-47f9-878e-a0cce1837bd3_1062x600.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"><svg role="img" 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"><g><title></title><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"><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"><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://console-ninja.com/?referrer=ThisWeekInReactNov25">Debug smarter with real time logs in VS Code</a></strong></p><p>No more switching between your terminal and browser dev tools. <strong>Console Ninja</strong> brings your runtime logs, errors, and variable values <strong>right into VS Code</strong>, Cursor, Windsurf (and other VS Code editors), exactly where they happen in your code.</p><p>See live console.log output right next to your source code, filter messages, and instantly spot issues without breaking your flow. Works seamlessly with Vite, Next.js 16, React Native (iOS and Android), Astro, and more. Upgrade your AI agent &#129302; with real-time runtime insights for smarter debugging.</p><p>Debug faster. Stay focused. Code confidently.</p><p>&#128073; <strong>Check it now:</strong> <strong><a href="https://console-ninja.com/?referrer=ThisWeekInReactNov25">Here</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!bAFq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bAFq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bAFq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bAFq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bAFq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bAFq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_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;Valdi - Cross-platform UI framework&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="Valdi - Cross-platform UI framework" title="Valdi - Cross-platform UI framework" srcset="https://substackcdn.com/image/fetch/$s_!bAFq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bAFq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bAFq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bAFq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7c74e60-e9d7-447e-b1ef-a8b9d1a2904e_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"><svg role="img" 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"><g><title></title><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"><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"><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/Snapchat/Valdi">Valdi - Cross-platform UI framework</a></strong></p><p>Snapchat released a beta version of the cross-platform UI framework they&#8217;ve used in production apps for the last 8 years. It&#8217;s not based on React, but also uses a similar declarative model and relies on the Yoga layout engine. TypeScript components are compiled directly to native iOS, Android, and macOS views.</p><p>You might also want to read:</p><ul><li><p>&#128214; <a href="https://github.com/Snapchat/Valdi/blob/main/docs/docs/faq.md#why-use-valdi-instead-of-react-native">FAQ: Why use Valdi instead of React Native?</a></p></li><li><p>&#128214; <a href="https://github.com/Snapchat/Valdi/blob/main/docs/docs/start-from-react.md">Valdi for React Developers</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-nov12">Product for Engineers - Finding a job as a product engineer</a></p></li><li><p>&#128038; <a href="https://x.com/reczko_konrad/status/1986496404777205784">Konrad Reczko - React Native Jelly Slider demo</a>: Greatly shows that advanced WebGPU / TypeGPU code can be shared across platforms with minor integration changes.</p></li><li><p>&#128038; <a href="https://x.com/SzymonRybczak/status/1986199665000566848">Szymon Rybczak on the recent React Native CLI DevServer vulnerability</a>: This remote code execution vulnerability was unfortunately not disclosed responsibly. It only impacts 0.80/81, for which the security fix has been backported as soon as possible. Make sure to upgrade!</p></li><li><p>&#128064; <a href="https://github.com/facebook/react-native-website/pull/4868">React Native Website PR - Add docs for IntersectionObserver, IntersectionObserverEntry</a>: This quite exciting DOM API is coming to React Native! Even better, I&#8217;ve heard it should also work with <code>&lt;Fragment ref</code><a href="https://react.dev/reference/react/Fragment#using-fragment-refs-for-dom-interaction">&gt;</a>!</p></li><li><p>&#128064; <a href="https://github.com/facebook/react-native-website/pull/4873">React Native Website PR - Promote Web Performance APIs as stable</a>: The <code>global.performance</code> Web API is about to become officially supported.</p></li><li><p>&#128220; <a href="https://blog.swmansion.com/react-natives-new-architecture-the-tricky-parts-3-4-c4638c65927c">React Native&#8217;s New Architecture: The Tricky Parts (3/4)</a>: Implements native component measurements on Android so that Yoga knows its underlying dimensions.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/exploring-lynx-js-from-quick-start-to-cli-workflows">Exploring Lynx JS: From Quick Start to CLI Workflows</a>: Callstack devs remind us of this interesting React Native competitor from ByteDance. They created a CLI to ease the creation of greenfield Lynx apps. Speaking of Lynx, it now has <a href="https://lynxjs.org/next/react/react-compiler.html">experimental support for the React Compiler</a>.</p></li><li><p>&#128220; <a href="https://blog.swmansion.com/how-to-add-vega-os-support-to-your-react-native-app-2b689d939492">How to Add Vega Support to Your React Native App?</a></p></li><li><p>&#128220; <a href="https://spin.atomicobject.com/victory-native-xl/">Create a Chart with a Secondary Y Axis with Victory Native XL</a></p></li><li><p>&#128220; <a href="https://blog.swmansion.com/building-an-ai-powered-note-taking-app-in-react-native-part-1-text-semantic-search-3f3c94a2f92b">Building an AI-Powered Note-Taking App - Part 1: Text Semantic Search</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-audio-api/releases/tag/0.10.0">Audio API 0.10 - Decoding/stretcher modules, linear convolution effect (echo/reverb), worklet performance, RN 0.82</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/radon-ide/releases/tag/v1.13.0">Radon IDE 1.13 - Physical Android devices, Apollo DevTools, Network Inspector and AI improvements</a></p></li><li><p>&#128230; <a href="https://github.com/zykeco/react-native-ble-nitro">Nitro BLE - High-performance Bluetooth Low Energy library</a></p></li><li><p>&#128230; <a href="https://github.com/VladyslavMartynov10/react-native-nitro-event-kit">Nitro Event Kit - Access and manage local iOS calendar events</a></p></li><li><p>&#128230; <a href="https://github.com/l2hyunwoo/react-native-nitro-device-info">Nitro Device Info - High-performance, most methods are synchronous</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=24G2tui0Ts8">Beto - Getting started with Meta Horizon Development using Expo</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/tc39/agendas/blob/main/2025/11.md">Agenda for the 111th meeting of Ecma TC39</a>: A packed agenda for next week&#8217;s meeting!</p></li><li><p>&#128220; <a href="https://www.polarsignals.com/blog/posts/2025/11/04/javascript-source-maps-internals">The Inner Workings of JavaScript Source Maps</a></p></li><li><p>&#128220; <a href="https://allthingssmitty.com/2025/11/10/error-chaining-in-javascript-cleaner-debugging-with-error-cause/">Error chaining in JavaScript: cleaner debugging with Error.cause</a></p></li><li><p>&#128220; <a href="https://motion.dev/blog/web-animation-performance-tier-list">The Web Animation Performance Tier List</a></p></li><li><p>&#128220; <a href="https://cekrem.github.io/posts/why-typescript-wont-save-you/">Why TypeScript Won&#8217;t Save You</a></p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/the-weird-parts-of-position-sticky/">The Weird Parts of position: sticky;</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v25.2.0">Node.js 25.2 - Type stripping is now stable</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/10.21">pnpm 10.21 -</a> <a href="http://node.js/">Node</a> <a href="https://pnpm.io/blog/releases/10.21">runtime installation for deps, new </a><code>trustPolicy</code><a href="https://pnpm.io/blog/releases/10.21"> option to prevent supply chain attacks</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lKP1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lKP1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b073f-649a-4470-9fda-1dd0a9e295d3_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_!lKP1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!lKP1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b073f-649a-4470-9fda-1dd0a9e295d3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></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_!uStC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uStC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uStC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uStC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uStC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uStC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg" width="939" height="666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:939,&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_!uStC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uStC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uStC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uStC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F719e0325-17a4-4197-add6-a3306aa24f9c_939x666.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"><svg role="img" 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"><g><title></title><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"><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"><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_!k4Qm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k4Qm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k4Qm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k4Qm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k4Qm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k4Qm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg" width="812" height="743" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:743,&quot;width&quot;:812,&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_!k4Qm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k4Qm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k4Qm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k4Qm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1aef4129-0898-4d79-bd72-2b44f9cdacb8_812x743.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"><svg role="img" 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"><g><title></title><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"><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"><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>