<?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>Sun, 14 Jun 2026 17:49:53 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 285]]></title><description><![CDATA[React.foundation, Rust Compiler, S&#228;tteri, Motion, TanStack Table, React Router, Flow, NavLink | Runtimes, JSI, Standard Navigation, Testing Library, Static Hermes, BottomTabs, AGP, AI, Windows |]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-285</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-285</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 12 Jun 2026 12:38:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GfoR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, we&#8217;re taking a look at the new React Foundation website, as the React core repositories transition to their new home. All eyes on the React Compiler in Rust, coming soon in your everyday toolchain.</p><p>React Native 0.86 is almost here, but releases apparently like to land on Wednesday evenings &#128517; so we&#8217;ll cover it next week. Let&#8217;s focus on React Native Runtimes instead, a quite interesting multi-threading innovation.</p><p>Cloudflare has acquired VoidZero, and npm v12 will officially block postinstall scripts by default in July, improving our supply chain security.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!orli!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!orli!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!orli!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!orli!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!orli!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!orli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mike Grabowski&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!orli!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!orli!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!orli!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!orli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12ea2dcc-c8f5-48f4-bea8-b3c374f566d8_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!oIeW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oIeW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oIeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!oIeW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oIeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98703b7-6b84-4ea9-8f47-8988a8cdcf6f_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!92Qe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!92Qe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 424w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 848w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!92Qe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg" width="1400" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The React.Foundation website&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The React.Foundation website" title="The React.Foundation website" srcset="https://substackcdn.com/image/fetch/$s_!92Qe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 424w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 848w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!92Qe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd51cf3-e8e8-4499-a0d5-ad8041fc104a_1400x955.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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.foundation/">The React.Foundation website</a></strong></p><p>The React Foundation was <a href="https://react.dev/blog/2025/10/07/introducing-the-react-foundation">announced nearly a year ago</a>, and you may be wondering what actions it has taken so far. Did you know the React Foundation had a website? Although it&#8217;s still a work-in-progress (<a href="https://github.com/react-foundation-dev/react.foundation">source code</a>), it&#8217;s already up and running and worth taking a look at to discover what&#8217;s planned, such as:</p><ul><li><p>A system to fund maintainers of critical ecosystem libraries</p></li><li><p>An official React merchandise store with profits redistributed to maintainers</p></li><li><p>Quarterly transparent reports with revenue details, maintainer funding, and more</p></li><li><p>A logged-in &#8220;Contributor Status&#8221; page, adding a cool gamification layer</p></li></ul><p>Earlier today, most React-related repositories also moved from the <code>facebook</code> GitHub organization to the <code>react</code><a href="https://github.com/react"> GitHub organization</a>, reflecting the transition to the React Foundation. This includes React, React Native, Yoga, JSX, Metro, React-Strict-DOM, Create-React-App, and more.</p><p>It&#8217;s not <code>facebook/react</code> anymore, but <code>react/react</code>: end of an era!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://pscale.link/rw">PlanetScale - Low-latency queries, branch and deploy like code, and best-in-class reliability. All in one database.</a></p></li><li><p>&#128064; <a href="https://github.com/react/react/pull/36173">React Core PR - Port React Compiler to Rust</a> - The PR has been officially merged, although no Rust crate or npm package has been published yet. The <a href="https://github.com/oxc-project/oxc/pull/22942">Oxc integration</a> is available in Rust crate v0.135, and it&#8217;s being integrated <a href="https://github.com/rolldown/rolldown/pull/9671">in Rolldown</a> and <a href="https://github.com/oxc-project/oxc/pull/23202">in Oxlint</a>. See also the <a href="https://github.com/swc-project/swc/pull/11917">SWC integration PR</a> and the <a href="https://github.com/oven-sh/bun/pull/31785">Bun integration PR</a>.</p></li><li><p>&#128064; <a href="https://github.com/reactjs/rfcs/pull/278">React RFC - Support using disposable as useEffect cleanup</a> - A proposal for <code>useEffect</code> to integrate with the new ES feature Explicit Resource Management / <code>using</code>, allowing to return a disposable resource like <code>{[Symbol.dispose]: myEffectCleanupFunction}</code>.</p></li><li><p>&#128467;&#65039; <a href="https://reactadvanced.com/?utm_source=thisweekinreact">React Advanced London</a> - &#127468;&#127463; London - 23 &amp; 26 Oct. Call for Papers is open until June 22! Submit your talk and share your advanced React insights with the community. Get a 10% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://medium.com/flow-type/flow-for-typescript-users-in-2026-ad07ac0a2d92">Flow for TypeScript Users in 2026</a> - Flow&#8217;s syntax has converged with TypeScript to the point where it&#8217;s hard to tell them apart anymore. It&#8217;s stricter and offers features TypeScript lacks, including pattern matching and component/hook/renders syntax. I don&#8217;t know if Flow is ready for an official comeback, but I like its direction. Note that its compiler is also being ported to Rust,</p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/building-an-active-navlink-component-in-nextjs/">Building an Active NavLink Component in Next.js</a> - Building a production-grade reusable <code>NavLink</code> component for the App Router with an <code>isActive/className</code> render prop API inspired by React Router. It&#8217;s surprisingly not so easy: you need to deal with initial paint flickering and need to use Suspense for Cache Components.</p></li><li><p>&#128220; <a href="https://jjenzz.com/best-loading-states-are-no-loading-states/">The Best Loading States Are No Loading States</a> - Route transitions, route loaders, preloading, and global fallbacks can make loading states mostly disappear.</p></li><li><p>&#128220; <a href="https://reactjs-maxxing.vercel.app/blog/how-react-server-component-integrate-with-bundler">How React Server Components Integrate with Bundler</a></p></li><li><p>&#128220; <a href="https://www.jayfreestone.com/writing/updating-react-parents-in-response-to-changes-in-children/">When React parent components need to know their children</a></p></li><li><p>&#128220; <a href="https://www.react.doctor/blog/the-problem-with-useeffect">The problem with useEffect &#8211; React Doctor can help</a></p></li><li><p>&#128184; <a href="https://frontendnation.com/workshops/inside-developer-certifications-an-ama-with-alain-chautard?utm_source=twir&amp;utm_medium=newsletter&amp;utm_campaign=frontend_nation_certification_workshop_2026&amp;friend=TWIR">Certificates.dev: Certification AMA Workshop. Ask our expert how exams are built, graded, proctored, and impacts careers. Join for free!</a></p></li><li><p>&#128230; <a href="https://satteri.bruits.org/">S&#228;tteri - Flexible Rust-based Markdown / MDX engine</a> - A faster Rust-based alternative to the Unified ecosystem and the JS-based implementation of MDX. It could <a href="https://github.com/withastro/roadmap/pull/1364">become Astro&#8217;s default parser</a> in the future, and already <a href="https://github.com/withastro/starlight/releases/tag/%40astrojs%2Fstarlight%400.40.0">integrates with Starlight</a>.</p></li><li><p>&#128230; <a href="https://motion.dev/docs/arc">Motion 12.40 - Support for </a><code>arc()</code><a href="https://motion.dev/docs/arc"> motions</a> - This lets you animate elements along curved paths.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-table-v9-taking-form">TanStack Table 9.0 beta - State management and perf improvements, tree-shakable, extendable, composable</a> - TanStack Table took inspiration from TanStack Form state management to rebuild its state management on top of TanStack Store and atoms, preventing useless re-renders and becoming compatible with the React Compiler along the way.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/v8/CHANGELOG.md#v800-pre0">React Router 8.0 prerelease</a> - The next major version is now available for early adopters to try. It&#8217;s a relatively boring release, in a good way: the v8 future flags are gone, and their behaviors are now enabled by default. It also bumps runtime requirements, drops CJS and the <code>react-router-dom</code> package.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7170">React Router 7.17 - Ship Markdown docs for AI agents</a></p></li><li><p>&#128230; <a href="https://github.com/facebook/react/releases/tag/v19.2.7">React 19.2.7, 19.1.8, 19.0.7 - Fix a Server Actions FormData regression</a></p></li><li><p>&#128279; <a href="https://share.transistor.fm/s/dd8e79de">This Month in React - Who even is on the Core team anymore, TanStack got pwn&#8217;d bad</a></p></li><li><p>&#128279; <a href="https://creators.spotify.com/pod/profile/dan-neciu/episodes/Routing-at-Scale-with-TanStack-Routers-Nicolas-Beaussart--React-Router-Migration--Monorepos--PayFit-e3keqv9">Se&#241;ors at Scale - Routing at Scale with TanStack Router&#8217;s Nicolas Beaussart</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Iw3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Iw3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;William Candillon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="William Candillon" title="William Candillon" srcset="https://substackcdn.com/image/fetch/$s_!9Iw3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Iw3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F666fd9c4-b414-4e3c-a00b-065b5fd6f34e_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!Rlg4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rlg4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agent Conf 2026: Learn to Ship Cross-Platform with AI&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Agent Conf 2026: Learn to Ship Cross-Platform with AI" title="Agent Conf 2026: Learn to Ship Cross-Platform with AI" srcset="https://substackcdn.com/image/fetch/$s_!Rlg4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rlg4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2cc3a87-e93a-460e-b84f-24e8c3a514f8_1200x675.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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.agent.sh/?utm_campaign=agent_conf&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=ebt">Agent Conf 2026: Learn to Ship Cross-Platform with AI</a></strong></p><p>Callstack&#8217;s <a href="https://www.agent.sh/?utm_campaign=agent_conf&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=ebt">Agent Conf</a> (September 17-18, 2026, Warsaw) is bringing together hundreds of agentic engineering practitioners, with Nader Dabit, Levan Kvirkvelia, Tejas Kumar, Kent C. Dodds, Kitze, David Mokos, and more speakers to be announced soon. Learn how to work better with agents: build intuition for when to guide or let them run, understand loops, memory, cost, and failure modes, coordinate multi-agent systems, and hear what&#8217;s actually working for teams adopting agentic workflows today.</p><p>The last Early Bird Tickets are still available. Get an extra <strong>10% off</strong> with promo code <strong>TWIR</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!GfoR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GfoR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GfoR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg" width="1280" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;React Native Runtimes&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="React Native Runtimes" title="React Native Runtimes" srcset="https://substackcdn.com/image/fetch/$s_!GfoR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GfoR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabaf1315-6668-4e4d-8145-0c26a916e7fb_1280x640.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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/margelo/react-native-runtimes">React Native Runtimes</a></strong></p><p>Margelo, in collaboration with Callstack, introduced a new package to add a multi-runtime layer to React Native apps. It&#8217;s a great solution for performance-heavy features and business logic isolation to avoid blocking interaction.</p><p>If your app has features that jank on mount, slow first-open screens, background hydration or decoding, state logic competing with animation, it might be worth checking it out.</p><p>Key features:</p><ul><li><p>Run selected components, screens, and headless tasks.</p></li><li><p>Share state across runtimes through a native Zustand-style C++ singleton.</p></li><li><p>Prewarm runtimes to avoid cold-start lag.</p></li><li><p>Call a typed function on a specific runtime and await the result.</p></li><li><p>Expo support with a config plugin.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-jun10">Product for Engineers - The golden rules of agent-first product engineering</a></p></li><li><p>&#128064; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1006">React Native RFC - Android Gradle Plugin v9 adoption</a> - This drafts a three-phase AGP v9 adoption strategy to keep up with Android, doing the required changes to support <a href="https://developer.android.com/build/migrate-to-built-in-kotlin">built-in Kotlin</a> before the opt-outs are removed in AGP v10.</p></li><li><p>&#128064; <a href="https://github.com/facebook/hermes/blob/static_h/doc/blog/2026-06-05-new-hermes-stable-release.md">Static Hermes - What&#8217;s new in the next stable release</a> - This blog post announces many new ES features to be supported natively, including Set operations, Iterator helpers, <code>groupBy</code>, <code>TextDecoder</code>, and more. It will also be faster and support built-in TypeScript type-stripping!</p></li><li><p>&#128064; <a href="https://github.com/react-navigation/standard-navigation">Standard Navigation integration PRs</a> - Remember <a href="https://expo.dev/blog/expo-router-v56-decoupling-from-react-navigation">Expo Router 56 forking React Navigation</a>? Fortunately, we have a shared abstraction for creating navigators that can work with both routing libraries, and should help reduce ecosystem fragmentation. It has already been integrated into React Navigation (<a href="https://github.com/react-navigation/react-navigation/pull/13122">PR</a>) and Expo Router (<a href="https://github.com/expo/expo/pull/46456">PR</a>).</p></li><li><p>&#128467;&#65039; <a href="https://ti.to/chainreact/chainreact2026/discount/TWIR">Chain React</a> - &#127482;&#127480; Portland - 30-31 July. Incredible speaker lineup featuring Charlie Cheever (Expo), Seth Webster (React Foundation), Kacper Kapu&#347;ciak (Software Mansion), Mazen Chami (Infinite Red) and more. Get a 15% discount with code &#8220;TWIR&#8221;.</p></li><li><p>&#128467;&#65039; <a href="https://reactnativeconnection.io/?utm_source=thisweekinreact.com">React Native Connection</a> - &#127467;&#127479; Paris - 24 Sept. The premier French React Native conference is back! Secure your spot early and get a 15% discount with code &#8220;TWIR&#8221;. Call for Papers closes June 14.</p></li><li><p>&#128197; <a href="https://luma.com/20df5csq">React Native &amp; AI meet-up by Software Mansion</a> - June 18th, NYC &#127482;&#127480;</p></li><li><p>&#128220; <a href="https://expo.dev/blog/talking-to-jsi-in-swift">Talking to JSI in Swift: what changed in SDK 56</a> - In SDK 56, Expo&#8217;s native modules call JSI directly on Apple platforms. The Objective-C++ layer is gone, and calls are 1.6&#8211;2.3x faster.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/moving-away-from-expo-vector-icons">Moving away from </a><code>@expo/vector-icons</code> - Explanation on why the icons package is deprecated in favor of a better alternative, and the benefits of switching.</p></li><li><p>&#128220; <a href="https://andrei-calazans.com/posts/2026-06-01-exploring-inlined-requires/">Exploring Inlined Requires</a> - A 3-part series of Metro&#8217;s <code>inlineRequires</code>: the transform mechanics, when flipping the flag doesn&#8217;t improve cold start, and how Expo Router solves it with lazy loading.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/on-device-ai-after-wwdc-2026-whats-new">On-device AI after WWDC 2026: What&#8217;s new?</a> - A look into new AI features from Apple and how React Native will make use of them.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/ai-supported-brownfield-migration-to-react-native">AI-Supported Brownfield Migration to React Native</a></p></li><li><p>&#128220; <a href="https://expo.dev/blog/expo-highlights-new-products-and-plans-for-the-future">What happened at AppJS 2026? Highlights, new products, and plans for the future</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-testing-library/releases/tag/v14.0.0">React Native Testing Library 14.0 - React 19, async APIs, Test Renderer replacement</a></p></li><li><p>&#128230; <a href="https://devblogs.microsoft.com/react-native/%F0%9F%9A%80react-native-windows-v0-83-is-here/">React Native Windows 0.83 - Performance Testing Framework, Richer Pointer Event Support, Fabric Component Parity</a></p></li><li><p>&#128230; <a href="https://github.com/IronTony/react-native-docusign">React Native DocuSign - Native captive signing for React Native &amp; Expo</a></p></li><li><p>&#128230; <a href="https://lynxjs.org/next/blog/lynx-3-8">Lynx 3.8 - WebAssembly on Android, Adaptive Layout, Line-aware Auto Font Sizing, monthly release cadence</a></p></li><li><p>&#128230; <a href="https://github.com/brandtnewlabs/react-native-livechart">Livechart - High-performance live line &amp; candlestick charts for React Native, built on Skia and Reanimated</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.4.0">Nitro Fetch 1.4 - Support for local and non-HTTP URLs</a></p></li><li><p>&#128230; <a href="https://github.com/mrousavy/react-native-data-scanner">Data Scanner - Fast one-shot QR/Barcode scanning, powered by Nitro and native scanner UIs</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/agent-device/releases/tag/v0.17.0">Agent Device 0.17 - iOS runner stability, perf metrics, replay test sharding</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.12.0">Rozenite 1.12 - DevTools middleware fixes, compose sections across hook instances, support Expo bundle asset listings</a></p></li><li><p>&#128230; <a href="https://github.com/callstack/react-native-bottom-tabs/releases/tag/react-native-bottom-tabs%401.3.0">Bottom Tabs 1.3 - Liquid Glass tint color improvements</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=j4V3XwQ65s8">Simon Grimm - I used Expo and Vega OS to make a Fire TV App</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=vons_XypdQw">Daniel Friyia Jr - Intro to 3D Graphics with WebGPU and Expo</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128227; <a href="https://voidzero.dev/posts/voidzero-cloudflare">VoidZero is Joining Cloudflare</a> - Cloudflare acquired the company behind Vite, Vitest, Rolldown, Oxc, Oxfmt, Oxlint, and Vite+. These tools will remain open-source, MIT-licensed, and community-driven. Cloudflare promises no lock-in and plans to build its new <code>cf</code> CLI around Vite.</p></li><li><p>&#128227; <a href="https://github.blog/changelog/2026-06-09-upcoming-breaking-changes-for-npm-v12/">GitHub - Upcoming breaking changes for npm v12</a> - GitHub announces that npm v12 (scheduled for July) will improve security-related default behaviors, blocking install lifecycle scripts by default!</p></li><li><p>&#128220; <a href="https://zackoverflow.dev/writing/why-does-tsgo-use-so-much-memory">Why does tsgo use so much memory?</a> - It runs one type checker per thread.</p></li><li><p>&#128230; <a href="https://github.com/rolldown/rolldown/releases/tag/v1.1.0">Rolldown 1.1 - Enables lazy barrel optimization, aligns TS </a><code>references</code><a href="https://github.com/rolldown/rolldown/releases/tag/v1.1.0"> resolution with tsc</a></p></li><li><p>&#128230; <a href="https://blog.angular.dev/announcing-angular-v22-c52bb83a4664">Angular 22.0 - Signal Forms, Angular Aria, OnPush-by-default, async DI, IA, and more</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6Yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6Yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!V6Yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fdb0671-3e93-4d4f-8156-e7d931babbb3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!IXT8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IXT8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IXT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg" width="1448" height="1270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1270,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!IXT8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IXT8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5e532b-20a4-4c92-aa68-32a564d4211c_1448x1270.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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 284]]></title><description><![CDATA[TanStack Start, Compiler, React Router, Forms, TypeGPU, React Aria, shadcn, XState | App.js, Gesture Handler, SPM, Expo, Runtimes, Legend List, Desktop | npm, Node.js, Astro]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-284</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-284</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 05 Jun 2026 12:49:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BYl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, Kacper and Filip from <a href="https://swmansion.com/">Software Mansion</a> here.</p><p>This week, TanStack Start is once again in the spotlight. The React Compiler in Rust is on its way. React Router and Remix shipped important security patches &#8211; update immediately. There&#8217;s also a fresh batch of releases from TanStack Form, XState Store, shadcn, React Aria, and more.</p><p>On the React Native side, this week was dominated by <a href="http://appjs.co/">App.js Conf 2026</a> in Krak&#243;w. Gesture Handler 3.0, Swift Package Manager support for React Native, and Legend List 3.0 were among the highlights, alongside Expo announcements like EAS Observe.</p><p>Let&#8217;s go!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CvQ9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CvQ9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!CvQ9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CvQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9112fb11-1a75-4b26-86fb-644e8f60a537_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!icCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!icCx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!icCx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!icCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Atomic CRM: The Open-Source CRM Toolkit for Developers&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Atomic CRM: The Open-Source CRM Toolkit for Developers" title="Atomic CRM: The Open-Source CRM Toolkit for Developers" srcset="https://substackcdn.com/image/fetch/$s_!icCx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 424w, https://substackcdn.com/image/fetch/$s_!icCx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 848w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!icCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a3251-a466-4e6b-8c4e-557570c7a42a_2576x1270.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!BYl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BYl6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BYl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg" width="1000" height="545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:545,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack + Rspack&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack + Rspack" title="TanStack + Rspack" srcset="https://substackcdn.com/image/fetch/$s_!BYl6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BYl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4cf1b7e-aacd-4918-b646-41b3db97f7e2_1000x545.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>TanStack Start Gaining Momentum:</strong></p><ul><li><p>&#128220; <a href="https://tanstack.com/blog/start-adds-rsbuild-support">TanStack Start Adds First-Class Rsbuild Support</a> - TanStack Start now supports Rsbuild / Rspack alongside Vite via a new plugin adapter, covering SSR, streaming, HMR, Server Functions, and RSC.</p></li><li><p>&#128220; <a href="https://lovable.dev/fr/blog/building-apps-using-tanstack-start">Lovable - Building apps using TanStack Start</a> - The AI App builder is now using TanStack Start with SSR by default for all new projects.</p></li><li><p>&#128220; <a href="https://performance.dev/the-conductor-rewrite">The Conductor Rewrite: What They Changed to Make It Fast</a> - Migrating their Tauri desktop app from React Router to TanStack Router significantly reduced re-renders thanks to its built-in structural sharing and stable refs.</p></li><li><p>&#128220; <a href="https://workos.com/blog/tanstack-start-authentication-guide">TanStack Start authentication: A developer&#8217;s guide for 2026</a> - Why <code>beforeLoad</code> doesn&#8217;t protect server functions, the double-guard pattern, sessions, and middleware.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://svar.dev/react/gantt/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=may">SVAR React Gantt &#8211; Build project timelines with a pure React API and advanced scheduling (MIT &amp; PRO)</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/36173#issuecomment-4608356402">React Compiler update - The Rust compiler PR to be merged soon</a> - It already produces at 99.9% the same output as the original TS compiler. You can try it already through a local PR checkout. The Oxc team is already working on an integration (<a href="https://github.com/oxc-project/oxc/pull/22942">PR</a>).</p></li><li><p>&#128197; <a href="https://nextjs.org/nights">Next.js Nights - The Next.js team on tour (9 June SF, 11 June Amsterdam, 18 June London)</a> - They also <a href="https://x.com/nextjs/status/2059997719197098425">teased us</a> about an upcoming v16.3 release, including Instant Navigations and new AI-related features.</p></li><li><p>&#128272; <a href="https://x.com/ReactRouter/status/2061839906834395649">React Router &amp; Remix v2 - 7 CVEs published</a> - Includes RCE, CSRF, XSS, and DoS vulnerabilities. Update to React Router v7.16.0 / v6.30.4 or Remix v2.17.5.</p></li><li><p>&#128220; <a href="https://dev.to/mbarzeev/deprecating-a-react-component-using-typescript-overload-2ka">Deprecating a React component using TypeScript Overload</a> - How to ship a breaking component redesign without renaming it with the usage of TS overload, mark the old API as <code>@deprecated</code>, and let consumers opt into the new version by adding a <code>new</code> prop.</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-jun3">PostHog - PostHog Code and the self-driving product</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/form/releases/tag/%40tanstack/react-form%401.33.0">TanStack Form 1.33 - </a><code>FormGroup</code><a href="https://github.com/TanStack/form/releases/tag/%40tanstack/react-form%401.33.0"> API to simplify multi-step forms</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.77.0">React Hook Form 7.77 - new </a><code>resetDefaultValues</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.77.0"> API</a></p></li><li><p>&#128230; <a href="https://github.com/resend/react-email/releases/tag/react-email%406.5.0">React Email 6.5 - Filter compatibility warnings by client, accessibility improvements</a></p></li><li><p>&#128230; <a href="https://docs.swmansion.com/TypeGPU/ecosystem/typegpu-react/">TypeGPU React - React bindings for TypeGPU</a> - Hooks like <code>useFrame</code>, <code>useUniform</code>, and <code>useRoot</code> to write GPU shaders directly in TypeScript and integrate WebGPU into React components.</p></li><li><p>&#128230; <a href="https://github.com/facebook/lexical/releases/tag/v0.45.0">Lexical 0.45 - New composable DOMImportExtension replacing importDOM, backspace now preserves block type, canUndo/canRedo signals on HistoryExtension.</a></p></li><li><p>&#128230; <a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0">React Aria Components 1.18 - </a><code>Calendar</code><a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0"> multi-date selection, month/year pickers, new </a><code>TableFooter</code><a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0"> and </a><code>SliderFill</code><a href="https://github.com/adobe/react-spectrum/releases/tag/react-aria-components%401.18.0"> components</a> - Checkbox, Radio, and Switch now support description and error message slots.</p></li><li><p>&#128230; <a href="https://react-spectrum.adobe.com/releases/v1-4-0.html">React Spectrum 1.4 - drag &amp; drop in ListView and similar, TableView highlight selection &amp; TableFooter, custom prefixes in ComboBox/TextField, multi-date Calendar selection</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog">Shadcn UI 4.9 &amp; 4.10 - GitHub registries, </a><code>npx shadcn eject</code><a href="https://ui.shadcn.com/docs/changelog"> to extract any component into your codebase</a></p></li><li><p>&#128230; <a href="https://github.com/amannn/next-intl/releases/tag/v4.13.0">Next Intl 4.13 - </a><code>useExtracted</code><a href="https://github.com/amannn/next-intl/releases/tag/v4.13.0"> function now generates message keys using URL-safe base64</a></p></li><li><p>&#128230; <a href="https://github.com/xyflow/xyflow/releases/tag/%40xyflow/react%4012.11.0">React Flow 12.11 - new </a><code>autoPanOnSelection</code><a href="https://github.com/xyflow/xyflow/releases/tag/%40xyflow/react%4012.11.0"> prop</a></p></li><li><p>&#128230; <a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0">XState Store 4.0 - </a><code>createStoreLogic</code><a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0"> for reusable stores, </a><code>enq.trigger</code><a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0"> for chaining events, Standard Schema support, </a><code>store.can</code><a href="https://github.com/statelyai/xstate/releases/tag/%40xstate%2Fstore%404.0.0"> for event checking.</a></p></li><li><p>&#128230; <a href="https://github.com/pierpo/react-archer/releases/tag/v5.0.0">React Archer 5.0 - Draw arrows between elements - Add React 19 support</a></p></li><li><p>&#128230; <a href="https://github.com/nickjvandyke/eslint-plugin-react-you-might-not-need-an-effect/blob/main/CHANGELOG.md#100-2026-05-31">ESLint Plugin React &#8221;You Might Not Need An Effect&#8221; 1.0</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=J4kzovOTNKw">Jack Herrington - All 17 TanStack Projects In ONE App!</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=dbe0wC9Y8bo">Se&#241;ors at Scale - Redux at Scale with Mark Erikson</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LRtz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LRtz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LRtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mike Grabowski&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mike Grabowski" title="Mike Grabowski" srcset="https://substackcdn.com/image/fetch/$s_!LRtz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LRtz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc3fa76-9d98-422d-8022-0880801222ca_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!NHmk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NHmk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NHmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!NHmk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NHmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3fbaa05-321f-4949-8338-99e540e235b3_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!RMQw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMQw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Highlights from App.js Conf 2026&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Highlights from App.js Conf 2026" title="Highlights from App.js Conf 2026" srcset="https://substackcdn.com/image/fetch/$s_!RMQw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!RMQw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fc2e17-72e0-4839-b3de-e1ca93ac9dd5_2560x1440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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://appjs.co/">Highlights from App.js Conf 2026</a></strong></p><p>Last week, the community gathered at the App.js Conf happening in Krak&#243;w. We&#8217;re highlighting three announcements here, since many of the others shipped over the past month and were demoed again on stage. Make sure to catch the rest of the talks through the live stream recordings (<a href="https://www.youtube.com/live/4H8iRPN0Q2M?si=2dYvWbCDiA3SHznk">Day 1</a>, <a href="https://www.youtube.com/live/dvpeMlwPNnw?si=po7jCHjf84nn04vF">Day 2</a>).</p><p><strong><a href="https://github.com/software-mansion/react-native-gesture-handler/releases/tag/v3.0.0">React Native Gesture Handler 3.0</a></strong></p><p>Major release rebuilt for the New Architecture, dropping Old Architecture support, introducing a new hook-based API which is React Compiler friendly, a new <code>Touchable</code> component with built-in animations and deeper Reanimated integration.</p><p><strong>Swift Package Manager support for React Native</strong></p><p>Meta + Expo previewed <code>npx react-native spm</code>, which scaffolds SPM config to replace CocoaPods: generates a committable Xcode project, runs codegen, caches XCFrameworks globally. CocoaPods trunk goes read-only Dec 2. Both Cocoapods and SPM work in parallel during the transition.</p><p><strong><a href="https://docs.expo.dev/eas/observe/introduction/">EAS Observe</a></strong></p><p>New Expo production performance monitoring service that tracks real-world startup times, render performance, and bundle load times across devices, with release comparison and per-session investigation. Currently in Private Preview, free up to 10K MAU for at least three months.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://docs.maestro.dev/get-started/maestro-mcp?utm_source=this-week-in-react">Maestro MCP - Let your AI agent write and run mobile UI tests for you</a></p></li><li><p>&#128038; <a href="https://x.com/tmikov/status/2060005546053579163">N-API v10 support landed in Hermes trunk - native Node-API addons can now run on Hermes without modification. Still experimental.</a></p></li><li><p>&#128467;&#65039; <a href="https://ti.to/chainreact/chainreact2026/discount/TWIR">Chain React</a> - &#127482;&#127480; Portland - 30-31 July. The US React Native conference is back! Grab your tickets now and get a 15% discount with code &#8220;TWIR&#8221;!</p></li><li><p>&#128220; <a href="https://evanbacon.dev/blog/expo">Things I Learned While Building Expo</a> - Evan Bacon is leaving Expo after 9 years. He wrote what he learned on dogfooding, listening user feedback, building developer trust through rough patches, and why data beats vibes when you&#8217;re building developer tools.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/expo-router-v56-decoupling-from-react-navigation">Expo Router v56: Decoupling from React Navigation</a> - Covers the decision to fork React Navigation internals for full architectural control, codemod-assisted migration, streaming SSR with generateMetadata, and new Android toolbar API and Native Tabs customization.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/native-code-expo-sdk-56">Native code in Expo SDK 56: inline modules and type generation</a> - How inline modules let you write Swift and Kotlin files directly alongside your app code, and how <code>expo-type-information</code> automatically generates matching TypeScript interfaces from them.</p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-runtimes">React Native Runtimes - Run RN Components and business logic in isolated Hermes runtimes</a> - This Margelo/Callstack library permits rendering React components on separate JS Runtimes, and share state across them.</p></li><li><p>&#128230; <a href="https://github.com/shirakaba/expo-desktop">Expo Desktop - build macOS and Windows desktop app with Expo</a> - Unofficial announcement coming from community.</p></li><li><p>&#128230; <a href="https://www.react.doctor/react-native">React Native Doctor</a> - New open-source CLI that scans your React Native app for performance and security bugs and fixes them with AI agents</p></li><li><p>&#128230; <a href="https://github.com/TanStack/ai/releases/tag/@tanstack/ai@0.23.0">TanStack AI 0.23 - React Native support</a> - Chat clients and framework hooks now run in React Native via a new <code>fetcher</code> option.</p></li><li><p>&#128230; <a href="https://keyframer.dev/">Keyframer.dev - Visual Animation Editor for React Native</a> - Outputs production-ready Reanimated v4 code - drag keyframes on a timeline, or type a prompt and get a <code>useAnimatedScene</code> hook you can paste directly into your project.</p></li><li><p>&#128230; <a href="https://github.com/LegendApp/legend-list/blob/main/CHANGELOG.md#300">Legend List 3.0 - Web support added, scroll jump prevention is now core behavior, and </a><code>maintainVisibleContentPosition</code><a href="https://github.com/LegendApp/legend-list/blob/main/CHANGELOG.md#300"> is now opt-in and disabled by default.</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.11.0">Rozenite 1.11 - Network activity timeline &amp; export, performance startup insights, waterfall view, navigation dispatch origin tracking</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-bottom-sheet">@swmansion/react-native-bottom-sheet - Native bottom-sheet components, inline and modal, with content-based sizing and scrollable-child handling</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.13.0">Sentry React Native 8.13 - </a><code>NavigationContainer</code><a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.13.0"> wrapper for React Navigation, iOS Swift Package Manager support, Expo Router param extraction, pause/resume app hang tracking</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/argent/releases/tag/v0.9.0">Argent 0.9 - new </a><code>screenshot-diff</code><a href="https://github.com/software-mansion/argent/releases/tag/v0.9.0"> too, configurable release-age-aware update reminders</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.16.0">Agent Device 0.16 - Maestro YAML replay compatibility, structured MCP command tools, iOS transform gestures, Android ANR recovery</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.8.0">Uniwind 1.8 - Vite 8 support, </a><code>uniwind generate-artifacts</code><a href="https://github.com/uni-stack/uniwind/releases/tag/v1.8.0"> CLI</a></p></li><li><p>&#128230; <a href="https://github.com/RevenueCat/react-native-purchases/releases/tag/10.2.0">React Native Purchases 10.2 - Ad tracking support</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=yH0QwDpV4ZM">Code with Beto - Why AI-Built Apps Feel Cheap (And How to Fix It)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=bu8X9mCL0Ek">Expo - Where is Expo Go?</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128202; <a href="https://survey.devographics.com/en-US/survey/state-of-css/2026?source=this_week_in_react">State of CSS 2026 - Survey is now open</a></p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/your-node-js-streams-arent-backpressuring-theyre-silently-eating-your-memory/">Node.js streams, backpressure, memory leaks</a> - A pragmatic 2-part deep dive to help you reduce the memory footprint of your streams.</p></li><li><p>&#128220; <a href="https://pierre.computer/writing/on-rendering-diffs">On Rendering Diffs &#8211; Pierre Computer Company</a> - Deep dive into building a zero-blanking diff virtualizer using the &#8220;Inverse Sticky Technique&#8221;, with insights on layout estimation, DOM pooling, memory optimization, and deferred syntax highlighting.</p></li><li><p>&#128230; <a href="https://github.com/nodejs/node/releases/tag/v26.3.0">Node.js 26.3 - New </a><code>permission.drop()</code><a href="https://github.com/nodejs/node/releases/tag/v26.3.0"> API, configurable HTTP header validation, </a><code>Buffer.poolSize</code><a href="https://github.com/nodejs/node/releases/tag/v26.3.0"> bumped to 64 KiB</a> - Improves the security model, letting you start with the permissions you need for initialization, then drop the ones you no longer need at runtime.</p></li><li><p>&#128230; <a href="https://github.com/npm/cli/releases/tag/v11.16.0">npm 11.16 - Phase 1 of package.json </a><code>allowScripts</code> - npm is rolling out supply chain security improvements in 2 phases, catching up with other package managers. v11.16 adds <code>package.allowScripts=[]</code> and warns on unapproved postinstall scripts. v12.0 will block them by default.</p></li><li><p>&#128230; <a href="https://github.com/endevco/aube/releases/tag/v1.17.0">Aube 1.17 - Rust-based package manager - Staged publish trust, hoisting limits, remote tarball integrity fixes, and OTP support for dist-tag writes</a></p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.5">pnpm 11.5 - </a><code>hoistingLimits</code><a href="https://pnpm.io/blog/releases/11.5"> setting, interactive prompt library, detect staged publishing trust downgrades</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-640/">Astro 6.4 - Pluggable markdown processor, Rust-based Markdown processor for faster builds, and Cloudflare helpers for advanced routing.</a></p></li><li><p>&#128230; <a href="https://github.com/yarnpkg/berry/releases/tag/%40yarnpkg/cli/4.16.0">Yarn 4.16 - New stage command for staged publishing, editor SDK support for oxc</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cDon!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cDon!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!cDon!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!cDon!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefcc9b11-3aa3-4909-a98a-3674f4b8f2f0_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!IK3V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IK3V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 424w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 848w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1272w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IK3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png" width="599" height="552" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:552,&quot;width&quot;:599,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!IK3V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 424w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 848w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1272w, https://substackcdn.com/image/fetch/$s_!IK3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0c38b90-57e1-4069-9946-1c18f23f4b68_599x552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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 283]]></title><description><![CDATA[TanStack, RSC, Liquid DOM, Performance, i18n, docs, Apollo, shadcn | Expo, Reanimated, worklets, NativeScript, Standard Navigation, Strict DOM, Lynx, Apex, ExecuTorch | TC39,]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-283</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-283</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 29 May 2026 12:45:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4fiO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week we have great deep dive blog posts about data fetching (TanStack vs Next.js) and performance (GitHub and Linear).</p><p>On the React Native side, Expo dropped a major SDK with Expo UI stable. Reanimated leverages the shared animation backend and improves CSS animations on iOS.</p><p>Supply chain security remains an important topic. npm introduced staged publishing workflows, and will block postinstall scripts by default in the near future.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cBLm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cBLm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cBLm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!cBLm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cBLm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2bd720-6d70-48e2-876d-89a2f7756a1e_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="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_!haBF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!haBF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!haBF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!haBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!haBF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!haBF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!haBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76414d2b-21a2-4028-a365-451b2c0aa9e5_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://blog.sentry.io/fixing-javascript-observability/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=observability-fy27q2-evergreen&amp;utm_content=newsletter-react-link-javascript-blog-learnmore">Sentry - One engineer, 44 libraries, and a Node API nobody was using. Here&#8217;s how JavaScript observability is getting fixed upstream.</a></p></li><li><p>&#128220; <a href="https://aurorascharff.no/posts/component-architecture-for-react-server-components/">Component Architecture for React Server Components</a> - A deep dive into data fetching techniques, their limits and tradeoffs. RSCs permit to design explicit loading experiences and leverage composition more than loaders.</p></li><li><p>&#128220; <a href="https://tkdodo.eu/blog/tan-stack-router-and-query">TanStack Router and Query</a> - Integrating Query with Route loaders permits to start fetching data as early as possible (even on intent / link hover), and have granular control over what suspends/defers. It&#8217;s recommended to avoid <code>Router.useLoaderData()</code> and treat the loader as a fire-and-forget event handler.</p></li><li><p>&#128220; <a href="https://github.blog/engineering/architecture-optimization/from-latency-to-instant-modernizing-github-issues-navigation-performance/">Modernizing GitHub Issues navigation performance</a> - GitHub is in the middle of moving from Rails-rendered pages to a React frontend. They explain how they improved Issues navigation performance, involving a mix of soft/hard navigation and Rails Turbo transitions.</p></li><li><p>&#128220; <a href="https://performance.dev/how-is-linear-so-fast-a-technical-breakdown">How&#8217;s Linear so fast?</a> - Someone studied in depth their techniques, involving many details, including using MobX observables and storing content locally in IndexedDB.</p></li><li><p>&#128220; <a href="https://formisch.dev/blog/one-core-six-frameworks/">One core, six frameworks, zero runtime abstraction</a> - Formisch is a framework-agnostic form library that integrates with many frameworks by swapping native reactivity at build time instead of providing adapters. React doesn&#8217;t have native signals so it still requires a minimal signal implementation.</p></li><li><p>&#128184; <a href="https://www.skybridge.tech/?utm_source=Third+Party&amp;utm_medium=react+newsletter&amp;utm_campaign=Skybridge+V1">Skybridge V1 - MCP Apps developers, meet the react framework for building MCP apps. Write once, run in ChatGPT, Claude, and any MCP client.</a></p></li><li><p>&#128230; <a href="https://getspiceflow.com/">Spiceflow - Type-safe API and full-stack React RSC framework focused on absolute simplicity</a> - A new meta-framework being actively worked on. See also <a href="https://holocron.so/">Holocron</a>, a Mintlify-compatible docs site generator built on top.</p></li><li><p>&#128230; <a href="https://github.com/AndrewPrifer/liquid-dom">Liquid DOM - Liquid Glass for the Web</a> - A promising library based on WebGPU and HTML-in-Canvas, providing first-class React and React-Three-Fiber bindings.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-virtual-perf-and-ios">TanStack Virtual 3.15 - A lot faster, fix iOS momentum scroll</a></p></li><li><p>&#128230; <a href="https://tanstack.com/blog/tanstack-virtual-chat">TanStack Virtual 3.16 - Chat support: end anchoring, append-follow, stable prepends, streaming</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-05-registry-include">shadcn CLI 4.8 - Registry authors can split large </a><code>registry.json</code><a href="https://ui.shadcn.com/docs/changelog/2026-05-registry-include"> files into smaller slices</a></p></li><li><p>&#128230; <a href="https://github.com/haydenbleasel/ultracite/releases/tag/ultracite%407.8.0">Ultracite 7.8 - Zero-config linter preset for ESLint/Biome/Oxlint - Add TanStack preset</a></p></li><li><p>&#128230; <a href="https://www.apollographql.com/blog/whats-new-in-apollo-client-4-2">Apollo Client 4.2 - Type-safe default options, event-based refetching</a></p></li><li><p>&#128230; <a href="https://lingui.dev/blog/2026/05/22/lingui-context-directives">Lingui 6.1 - Directives to set i18n context and namespace multiple translations at once</a></p></li><li><p>&#128230; <a href="https://github.com/nkzw-tech/fbtee">fbtee 2.0 - i18n framework for JS and React, modern continuation of facebook/fbt</a></p></li><li><p>&#128230; <a href="https://press.fumadocs.dev/blog/introducing-fumapress">Fumapress - Docs framework based on Fumadocs (agnostic), Vite, React, MDX, Waku</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=_PB9rHndhU8">Jack Herrington - Is TanStack Starts Deferred Hydration Revolutionary?</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=OODK3KGUjDA">Tobi Mey - I Tested Next.js Dev MCP</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=LZa3GIpX4l4">Wiskey.fm - React Foundation, AI Agents, and the Future of Frameworks w/ Seth Webster</a></p></li><li><p>&#127897;&#65039; <a href="https://www.youtube.com/watch?v=anz2xw4FY9c">Se&#241;ors at Scale - TanStack Query at Scale with Dominik Dorfmeister (TkDodo)</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QKZi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QKZi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QKZi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Evan Bacon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Evan Bacon" title="Evan Bacon" srcset="https://substackcdn.com/image/fetch/$s_!QKZi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QKZi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2bc5400-58ea-45a5-9b57-69a3fdf7a5bd_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="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_!hb4_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hb4_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hb4_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Agent Conf CFP is Now Open&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Agent Conf CFP is Now Open" title="Agent Conf CFP is Now Open" srcset="https://substackcdn.com/image/fetch/$s_!hb4_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hb4_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fe1102d-f3c1-43d8-ab2c-39f8d90a23fc_1200x675.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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.agent.sh/?utm_campaign=agent_conf&amp;utm_source=twir&amp;utm_medium=email&amp;utm_content=cfp">Agent Conf CFP is Now Open</a></strong></p><p>If you&#8217;re building agents, pushing the boundaries of AI engineering, or have something genuinely new to share about autonomous systems, this one is for you.</p><p><strong>Agent Conf</strong> is calling for proposals, and they want the good stuff - not safe corporate talks, but bold, experimental, and production-hardened ideas that move the field forward. As a speaker, you&#8217;ll be sharing the stage with heavy hitters like <strong>Kent C. Dodds</strong> and <strong>Nader Dabit</strong>.</p><p>The deadline is June 20, 2026. Submit your talk at <strong><a href="https://sessionize.com/agent-conf-2026/">https://sessionize.com/agent-conf-2026/</a></strong>.</p><p><strong>Agent Conf</strong> is happening in Warsaw on September 17-18, 2026. <strong>Get 10% off</strong> your ticket with promo code <strong>TWIR</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="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_!4fiO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4fiO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4fiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Expo SDK 56&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Expo SDK 56" title="Expo SDK 56" srcset="https://substackcdn.com/image/fetch/$s_!4fiO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4fiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2a14cf-d578-4520-a07c-3657f86564e7_1800x1012.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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-56">Expo SDK 56</a></strong></p><p>A new Expo SDK is out! As always it&#8217;s packed with lots of changes. It bumps to React Native 0.85 and React 19.2, which bring Hermes V1 by default, the new animation backend, and more.</p><p>Here are the most notable highlights:</p><ul><li><p><a href="https://expo.dev/blog/expo-ui-stable-sdk-56">Stable Expo UI</a> - SwiftUI on iOS and Jetpack Compose on Android, now production-ready, providing universal components, replacing 8 community libraries. The <a href="https://expo.dev/blog/worklet-integration-in-expo-ui-synchronously-controlling-swiftui-and-compose-state">worklet integration and </a><code>useNativeState()</code> help you implement flicker-free <code>&lt;TextInput&gt;</code> masking.</p></li><li><p>Expo Router - no longer depends on <code>@react-navigation/*</code>. It ships with experimental support for the new native stack (Material-style headers, predictive back gesture), SSR streaming on web, and customizable SuspenseFallback in layout routes.</p></li><li><p>Faster native builds - precompiled XCFrameworks cut iOS clean builds ~16% and opt-in precompiled headers on Android deliver up to 2.81x faster CMake builds.</p></li><li><p>Expo modules improvements - inline modules let you write Kotlin/Swift alongside JS with automatic TS type generation. A new Kotlin compiler plugin replaces reflection, yielding ~40% faster cold starts and ~33% faster first render on Android.</p></li></ul><p>And many more great additions like File System API, consistent status and navigation bars, and stable iOS widgets, there are far too many updates to list. Make sure to check out the <a href="https://expo.dev/changelog/sdk-56">full changelog</a> or <a href="https://www.youtube.com/watch?v=MKqGbv-Tssg">watch the official intro video</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may27">PostHog - 4,063 errors closed without a human opening PostHog &#8211; here&#8217;s what we learned</a></p></li><li><p>&#128064; <a href="https://github.com/react-navigation/react-navigation/pull/13118">React Navigation PR - Rework server rendering API to support streaming</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react-strict-dom/pull/475">React Strict DOM PR - Adopt React Native 0.82 DOM Node APIs</a></p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/1003">React Native RFC - Dedicated </a><code>*Instance</code><a href="https://github.com/react-native-community/discussions-and-proposals/pull/1003"> types for built-in RN component refs</a> - With the upcoming Strict TypeScript API and auto-generated types, built-in components will be typed as functions instead of classes: <code>useRef&lt;View&gt;</code> will break. This RFC proposes to export a <code>ViewInstance</code> type to let you type <code>useRef&lt;ViewInstance&gt;</code> instead.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/deep-dive-in-keyboard-handling">The Go-To Guide for Understanding Keyboards in React Native</a> - A deep dive into how keyboards work, differences between OS versions, quirks, and how to make it work across platforms.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/profile-react-components-in-react-native-release-builds">Profile React Components in React Native Release Builds</a> - A way to profile without debug-mode overhead similar to what web developers do for a long time.</p></li><li><p>&#128220; <a href="https://nicolasgallagher.com/one-react-for-web-and-native/">One React for Web and Native</a> - An outline on how to unify React Native with the web platform to reduce ecosystem fragmentation. React Native directly implements subsets of the DOM specification to make React Strict DOM possible.</p></li><li><p>&#128230; <a href="https://www.npmjs.com/package/@nativescript/react-native">NativeScript React Native</a> - TurboModule wrapper giving access to all native APIs in React Native, letting you create UIKit views on the fly. This looks promising, and I&#8217;m sure we&#8217;ll hear more about it soon!</p></li><li><p>&#128230; <a href="https://lynxjs.org/next/blog/lynx-ui">Lynx UI</a> - The React Native competitor launched unstyled UI components for ReactLynx covering scroll views, popovers, swipers, sheets, reference design language. Programmable interactions and motion.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/4.4.0">Reanimated 4.4 - iOS CSS Core Animation engine, Animation Backend, useTimestamp hook, precompiled headers on Android</a> - Add supports for RN 0.85 new shared animations backend, behind a flag.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-reanimated/releases/tag/worklets-0.9.1">Worklets 0.9.1 - Cross-runtime Promises, uniform Shareable hosting, DX improvements</a></p></li><li><p>&#128230; <a href="https://github.com/react-navigation/standard-navigation">Standard Navigation - API for creating navigators that can work with multiple navigation libraries, such as React Navigation and Expo Router</a></p></li><li><p>&#128230; <a href="https://github.com/module-federation/core/releases/tag/v2.5.0">Module Federation 2.5 - Metro plugin for Rock, manifest hashes for native caching, observability integration</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/releases/tag/0.6.0">Enriched Markdown 0.6 - Mentions, superscript/subscript, custom selection, better streaming</a></p></li><li><p>&#128230; <a href="https://github.com/gronxb/hot-updater/releases">Hot Updated 0.32 - Bundle diffing, content-addressed storage, faster OTA deploys</a></p></li><li><p>&#128230; <a href="https://maestro.dev/blog/maestro-cli-v2-6-0">Maestro CLI 2.6 - Maestro Viewer, parallel iOS sim execution, MCP improvements</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-executorch/releases/tag/v0.9.0">ExecuTorch 0.9 - 10x faster Whisper, Multilingual Text-to-Speech, continuous voice activity detection</a></p></li><li><p>&#128230; <a href="https://github.com/getsentry/sentry-react-native/releases/tag/8.12.0">Sentry RN 8.12 - Expo Router integration, build-time label injection, multi-instance TTID/TTFD</a></p></li><li><p>&#128230; <a href="https://github.com/uni-stack/uniwind/releases/tag/v1.7.0">Uniwind 1.7 - Major bundler refactor, flex parsing fix</a></p></li><li><p>&#129302; <a href="https://www.callstack.com/blog/introducing-apex-a-fast-specialized-model-for-react-native">Apex (private beta) - React Native coding model, based on Gemma 4, built by Callstack</a> - A smaller domain-specific model can be faster, more performant and cost-effective than a general model.</p></li><li><p>&#129302; <a href="https://github.com/margelo/react-native-skills">Margelo RN agent skills - AI skills for Nitro Modules, VisionCamera, MMKV</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/playlist?list=PLSk21zn8fFZCE_TlHUVnTVMm7mNl_fzxl">App.js Conf 2026</a> - The conf starts tomorrow, free to watch live.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://bsky.app/profile/tc39.es/post/3mmhlitpxrq2a">TC39 - 114th meeting outcome</a> - Last week&#8217;s meeting advanced many exciting ES proposals: Explicit Resource Management, <code>Atomics.pause</code>, <code>Iterator</code> APIs, <code>Intl</code> APIs, and more.</p></li><li><p>&#128064; <a href="https://github.com/npm/cli/pull/9360">npm PR - Phase 1 of making install scripts opt-in</a> - npm CLI implementing new supply chain security features! This introduces various APIs such as <code>package.allowScripts</code>. Phase 1 (being backported in v11) will emit an advisory warning on unapproved scripts. Phase 2 (v12.0) will block unapproved script runs by default.</p></li><li><p>&#128064; <a href="https://github.com/WICG/persistent-iframes">WICG proposal - Persistent Iframes</a> - Very early, but this could help make MPAs more compelling against SPAs if there was a way to preserve chats and audio/video players across navigation.</p></li><li><p>&#128220; <a href="https://www.joshwcomeau.com/animation/css-vs-javascript/">CSS vs. JavaScript animations</a> - Explains the performance and flexibility tradeoff of animating with JS vs animating with CSS/WAAPI on a separate thread.</p></li><li><p>&#128230; <a href="https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/">npm CLI 11.15 - Staged publishing, new </a><code>--allow-*</code><a href="https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/"> flags</a> - 2 updates focused on supply-chain security. Use <code>npm stage</code> to publish a release in 2 phases, requiring the approval of a human maintainer.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.3">pnpm 11.3 - npm staged publishing with </a><code>pnpm stage</code><a href="https://pnpm.io/blog/releases/11.3">, </a><code>trustLockfile</code><a href="https://pnpm.io/blog/releases/11.3"> setting</a></p></li><li><p>&#128230; <a href="https://deno.com/blog/v2.8">Deno 2.8 - New commands, defaults to </a><code>:npm</code><a href="https://deno.com/blog/v2.8">, Node.js compatibility, </a><code>import defer</code><a href="https://deno.com/blog/v2.8">, and more</a></p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v24.16.0">Node 24.16 - Test runner improvements, </a><code>randomUUIDv7()</code><a href="https://nodejs.org/en/blog/release/v24.16.0">, more APIs support </a><code>AbortSignal</code></p></li><li><p>&#128230; <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151">Firefox 151 - </a><code>@container</code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151"> queries (widely available), Document Picture-in-Picture, Web Serial API</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0DK0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0DK0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!0DK0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d8f2005-e99e-4620-b095-1a551b8110e7_600x64.png 1456w" sizes="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_!3asJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3asJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3asJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg" width="1000" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!3asJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3asJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5f9435a-b7f4-4f1a-8881-b6a3c52cd30f_1000x1112.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!PrCs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PrCs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PrCs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg" width="1000" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!PrCs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PrCs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88dbdf8a-9591-429d-90e5-506a8e07235c_1000x457.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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 282]]></title><description><![CDATA[Security, Fate, TanStack, Redux, Jotai, Base UI, Relay, Storybook | Hermes-node, Expo, Rozenite, Harness, VR, Nitro, Skia, Redraw | TC39, Bun, pnpm, npm, Yarn, Node, Webpack]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-282</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-282</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Fri, 22 May 2026 12:14:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!q9KJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>It looks like security is going to be a hot topic this year! &#128517;<br>More packages are being compromised, and blog posts are also covering recent RSC vulnerabilities.<br>Maybe we&#8217;re reaching a tipping point, and better security practices will consolidate this year.</p><p>On the React Native side, Hermes-node is quite exciting, although it&#8217;s very early.</p><p>An exciting TC39 meeting is currently underway, and several proposals have already progressed.<br>Yarn and npm are improving on the security side.<br>Bun and pnpm are being ported to Rust.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qgeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qgeO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qgeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!qgeO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qgeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9026edff-81ce-4482-99e0-6604e7147b2f_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!Tjvb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tjvb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ship AI generated code safely with Meticulous.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ship AI generated code safely with Meticulous." title="Ship AI generated code safely with Meticulous." srcset="https://substackcdn.com/image/fetch/$s_!Tjvb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tjvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c3818ca-79e6-4f89-bbb9-2e7f55750290_2816x1472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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=26q2&amp;utm_content=1st">Ship AI generated code safely with Meticulous.</a></strong></p><p>Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, <em>you&#8217;re</em> the one getting paged at 2am when it breaks in prod.</p><p>Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly, and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st">Meticulous gives you near-exhaustive coverage in weeks, without any developer effort</a>.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p>No maintenance (seriously)</p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>Check it out</strong> - and see why one engineering leader at Dropbox said that &#8220;<a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q2&amp;utm_content=1st#:~:text=Once%20we%20started%20using%20Meticulous%2C%20we%20couldn%27t%20imagine%20working%20without%20it.">once we started using Meticulous, we couldn&#8217;t imagine working without it</a>.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!q9KJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q9KJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg" width="1365" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1365,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Mini Shai-Hulud worm keeps digging&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Mini Shai-Hulud worm keeps digging" title="Mini Shai-Hulud worm keeps digging" srcset="https://substackcdn.com/image/fetch/$s_!q9KJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!q9KJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6bde5f3-3c00-48a2-a84d-e782293273d0_1365x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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.wiz.io/blog/mini-shai-hulud-teampcp-hits-antv-supply-chain">Mini Shai-Hulud worm keeps digging</a></strong></p><p>Remember last week&#8217;s TanStack Router compromise? The dangerous worm from TeamPCP keeps compromising users and maintainers across ecosystems, affecting popular packages such as <code>echarts-for-react</code> and <code>@antv</code>, and GitHub actions such as <code>actions-cool/issues-helper</code>. <a href="https://openai.com/index/our-response-to-the-tanstack-npm-supply-chain-attack/">OpenAI employees got compromised</a>, leading them to regenerate code signing certificates. Grafana has been <a href="https://grafana.com/blog/grafana-labs-security-update-latest-on-tanstack-npm-supply-chain-ransomware-incident/">blackmailed by a ransomware group</a>.The Million.js repository was also <a href="https://github.com/aidenybai/million/issues/1186">briefly compromised</a>, but they seem to have gotten lucky: it apparently didn&#8217;t affect anyone.</p><p>Rumors also link this worm to the <a href="https://github.com/nrwl/nx-console/security/advisories/GHSA-c9j4-9m59-847w">Nx Console VSCode extension compromise</a>, and possibly connected to a major <a href="https://x.com/github/status/2056949168208552080">GitHub internal repo breach</a>. This story isn&#8217;t over &#8212; &#8220;Mini&#8221; feels like a very questionable name &#128517;!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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>&#128467;&#65039; <a href="https://reactnorway.com/?utm_medium=social&amp;utm_source=ThisWeekReact">React Norway</a> - &#127475;&#127476; Oslo - 5 June - Experience the &#8220;Rock &amp; React&#8221; atmosphere in a unique one-track full-stack festival with 350+ passionate developers. -10% with code &#8220;TWIR&#8221;.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/react-server-components-in-tanstack/">React Server Components in TanStack</a> - A pragmatic intro to TanStack&#8217;s flexible RSC model, CompositeComponent, and how much it could save in terms of client bundle size.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/jotai-structural-sharing-vs-selectatom/">Structural sharing, selectAtom, and why your jotai atoms re-render too much</a> - Explains how deriving atoms, decomposing into primitive atoms, and structural sharing can help avoid re-renders.</p></li><li><p>&#128220; <a href="https://lachlan.nz/blog/the-react2shell-story">The React2Shell Story</a> - 2 articles from the duo who reported the security flaw allowing remote code execution in RSC.</p></li><li><p>&#128220; <a href="https://saschb2b.com/blog/flight-protocol-dos">The Flight Protocol Made Your DoS My Problem</a> - React/Next.js recently patched various CVEs. One of them could block your Node process in a single HTTP request.</p></li><li><p>&#128184; <a href="https://certificates.dev/react/free-weekend?friend=TWIR">Certificates.dev - React Free Weekend is coming. Get unlimited access to mid-level training, incl. coding challenges + trial exam for 48H.</a></p></li><li><p>&#128230; <a href="https://fate.technology/posts/fate-1.0">Fate 1.0 - The first full Async React Metaframework</a> - Fate is a Relay-inspired framework (not based on GraphQL) supporting view composition, normalized caching, data masking, Async React features, live views through Server-Sent Events, Drizzle, garbage collection, and more.</p></li><li><p>&#128230; <a href="https://github.com/TanStack/router/releases/tag/release-2026-05-20-1004">TanStack Router releases - Deferred hydration capabilities, route matching priority</a> - Deferred Hydration (experimental, <a href="https://tanstack.com/start/latest/docs/framework/react/guide/deferred-hydration">docs</a>) could help improve your page&#8217;s perceived performance by making it interactive sooner. They also recently introduced <a href="https://tanstack.com/start/latest/docs/framework/react/guide/css-styling#inline-route-css-in-production">CSS inlining</a> and a <a href="https://tanstack.com/start/latest/docs/framework/react/guide/middleware#csrf-middleware">CSRF middleware</a>.</p></li><li><p>&#128230; <a href="https://tanstack.com/blog/streaming-structured-output">TanStack AI releases - </a><code>useChat()</code><a href="https://tanstack.com/blog/streaming-structured-output"> supports streaming structured output</a></p></li><li><p>&#128230; <a href="https://github.com/reduxjs/react-redux/releases/tag/v9.3.0">React Redux 9.3 - </a><code>connect</code><a href="https://github.com/reduxjs/react-redux/releases/tag/v9.3.0"> API deprecated, Trusted Publishing fixed</a> - The old HOC API is not removed, but it&#8217;s recommended to migrate to <code>useSelector/useDispatch</code></p></li><li><p>&#128230; <a href="https://github.com/reduxjs/redux-toolkit/releases/tag/v2.12.0">Redux Toolkit 2.12 - TypeScript Improvements, Skills</a></p></li><li><p>&#128230; <a href="https://base-ui.com/react/overview/releases/v1-5-0">Base UI 1.5 - Major mount perf improvements for popovers/dialogs/tooltips/menus</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.76.0">React Hook Form 7.76 - Improved </a><code>isDirty</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.76.0"> and </a><code>useFieldArray</code></p></li><li><p>&#128230; <a href="https://github.com/facebook/relay/releases/tag/v21.0.0">Relay 21.0 - First-party TypeScript support, experimental RSC support, improved error handling</a></p></li><li><p>&#128230; <a href="https://storybook.js.org/blog/storybook-10-4/">Storybook 10.4 - TanStack React, React Native isolation, agentic setup, review filters</a></p></li><li><p>&#128230; <a href="https://github.com/millionco/react-doctor">React Doctor 0.2 - Your agent writes bad React. This catches it.</a></p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7151">React Router 7.15.1 - New </a><code>unstable_useRouterState</code><a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7151"> consolidation API</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=6moPS3AAbe4">Nuno Maduro - Why React Developers Are Leaving Next.js for TanStack, with Tanner Linsley</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=gwTQLZSIlsU">Fireship - A single PR just hijacked the NPM registry...</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/1005/programatic-and-skill-based-video-creation-with-remotion">Syntax.fm 1005 - Programatic and Skill based Video Creation with Remotion</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oz5H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oz5H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Jack Herrington&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Jack Herrington" title="Jack Herrington" srcset="https://substackcdn.com/image/fetch/$s_!Oz5H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oz5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b904aa-e5c1-4cca-82d0-1ee3039d35ea_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!oYiC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oYiC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oYiC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tomorrow Only: Next.js Debugging Workshop&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tomorrow Only: Next.js Debugging Workshop" title="Tomorrow Only: Next.js Debugging Workshop" srcset="https://substackcdn.com/image/fetch/$s_!oYiC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oYiC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4a0929-2a97-4015-a433-b35164f8a535_1672x941.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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/nextjs-may-workshop/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q2-nextjsworkshop&amp;utm_content=newsletter-secondary-nextjs-workshop-register">Tomorrow Only: Next.js Debugging Workshop</a></strong></p><p>Most Next.js bugs don&#8217;t fail loudly. They fail in a webhook handler at 3am, in a server component nobody touched, in an auth flow that worked yesterday. Sentry&#8217;s hands-on workshop shows you how to catch them with high-context logs and distributed tracing.</p><p>Last chance to save your spot. <strong><a href="https://sentry.io/resources/nextjs-may-workshop/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=nextjs-fy27q2-nextjsworkshop&amp;utm_content=newsletter-secondary-nextjs-workshop-register">Register today.</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may20">PostHog - The 7 best session replay tools for mobile apps</a></p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/unlocking-expo-updates-in-an-isolated-brownfield-architecture-with-sdk-55">Unlocking Expo Updates in an Isolated Brownfield Architecture with SDK 55</a> - Running Expo Updates in Isolated Brownfield was always a challenge. Thanks to recent updates, it is a thing of the past.</p></li><li><p>&#128220; <a href="https://expo.dev/changelog/expo-go-loading-changes-may-2026">Changes to project loading behavior in Expo Go</a> - Breaking change for EAS Update users: Expo Go now enforces ownership checks. Self-hosted updates can no longer serve Hermes bytecode bundles.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/wtf-does-box-do-in-nitro-modules/">WTF does </a><code>.box()</code><a href="https://www.peterp.me/articles/wtf-does-box-do-in-nitro-modules/"> do in Nitro Modules?</a> - It converts <code>NativeState</code>-backed objects into <code>HostObjects</code> so they can cross worklet runtime boundaries.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/build-fast-no-matter-what-how-expo-is-optimizing-for-speed">Build fast, no matter what: how Expo is optimizing for speed (and how you can, too)</a> - Deep dive into Expo&#8217;s build speed optimizations: hardware scaling, Gradle caching, prebuilt binaries, and fingerprint-based workflows that avoid full rebuilds for JS-only changes.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/using-turbomodule-substitution-to-build-safer-react-native-plugin-systems">Using TurboModule Substitution to Build Safer React Native Plugin Systems</a> - Explains how React Native Sandbox 0.6 offers granular sandboxing capabilities.</p></li><li><p>&#128230; <a href="https://github.com/tmikov/hermes-node">Hermes Node - Node.js built-in module compatibility layer for the Hermes JS engine</a> - The creator of Hermes published an AI-driven prototype of a new JS/TS runtime built on Hermes, compatible with Node.js. It won&#8217;t outperform Node.js/V8 today, but Static Hermes could make it way faster in the future.</p></li><li><p>&#128230; <a href="https://github.com/daehyeonmun2021/react-native-skia-lab">Skia Lab - Beautiful react-native-skia demo</a> - A collection of painting, physics, shaders, and gesture interactions demos.</p></li><li><p>&#128230; <a href="https://updates.reactvision.xyz/meta-quest-lands-studio-scenes-drop-in-whats-new-in-viroreact-2-55-0-a8876564047a">ViroReact 2.55 - Ship as a native VR experience on Meta Quest</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/react-native-harness/releases/tag/v1.2.0">Harness 1.2 - iOS code coverage, permission automation, external xctest commands</a></p></li><li><p>&#128230; <a href="https://github.com/jamsch/expo-speech-recognition/releases/tag/v56.0.0">Expo Speech Recognition 56 - Expo SDK 56 support</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/typegpu-confetti/releases/tag/v0.3.0">TypeGPU Confetti 0.3 - Rewritten to use TypeGPU</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.3.0">Nitro Fetch 1.3 - Removed box/unbox, fixed binary responses, performance improvements</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.15.0">Agent Device 0.15 - Faster boot and test replay, iOS replay speedup, MCP discovery-only</a></p></li><li><p>&#128230; <a href="https://github.com/gre/react-native-view-shot/releases">View Shot 5.1 - iOS 17 compatibility, Windows support + example, Android ScrollView fix</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.10.0">Rozenite DevTools 1.10 - Network, Performance, Vite plugin improvements</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=aP8GSJ7oTuc">William Candillon - Debriefing Redraw &amp; TypeGPU</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=ywvywq0AGPM">Beto - Everything new in Expo SDK 56</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=GChgKhfuzYA">React Native Live Ep 11 - Building High-Performance UI with React Native Skia / William Candillon</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-353-building-react-native-apps-in-the-ai-era">RNR 353 - Building React Native Apps in the AI Era</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128064; <a href="https://github.com/tc39/proposal-explicit-resource-management">Explicit Resource Management reached TC39 stage 4</a> - A TC39 meeting is in progress, and many proposals have progressed. The most &#8220;user-facing&#8221; one &#8211; <code>using</code> &#8211; is going to be part of the standard and simplify your resource cleanup logic. I take the opportunity to show you <a href="https://x.com/sebastienlorber/status/2057033638827483236">how to leverage it immediately in Vitest/Jest tests</a>.</p></li><li><p>&#128064; <a href="https://github.com/npm/rfcs/pull/868">npm RFC - Make install scripts opt-in</a> - It&#8217;s great to see npm finally looking to catch up on security! They&#8217;d like to introduce an <code>allowScripts</code> map in <code>package.json</code> to help mitigate the recent supply chain attacks.</p></li><li><p>&#128064; <a href="https://github.com/oven-sh/bun/pull/30412">Bun PR - Rewrite Bun in Rust</a> - The bold, AI-driven PR landed in just one week, making Bun&#8217;s migration from Zig to Rust official. &#129327;</p></li><li><p>&#128220; <a href="https://developer.chrome.com/blog/declarative-partial-updates">Declarative partial updates</a> - New exciting APIs may come to the web platform: out-of-order streaming, and new HTML insertion methods supporting streaming. Already available in Chrome 148 behind an experimental flag.</p></li><li><p>&#128220; <a href="https://www.jasnell.me/posts/quic-comes-to-node">QUIC and HTTP/3 Come To Node.js (finally)</a> - A 5-part deep dive on the experimental <code>node:quic</code> API.</p></li><li><p>&#128230; <a href="https://github.com/pnpm/pnpm/releases/tag/v11.2.0">pnpm 11.12 - Experimental Rust install engine</a> - pnpm is also <a href="https://github.com/pnpm/pnpm/tree/main/pacquet">migrating to Rust</a>, with an incremental strategy. This release introduces an opt-in for the new Rust engine to power the install phase.</p></li><li><p>&#128230; <a href="https://github.com/yarnpkg/berry/releases/tag/%40yarnpkg%2Fcli%2F4.15.0">Yarn 4.15 - Add </a><code>npmMinimalAgeGate: 1d</code><a href="https://github.com/yarnpkg/berry/releases/tag/%40yarnpkg%2Fcli%2F4.15.0"> release cooldown by default</a> - Another package manager adopts better security defaults. BTW, Yarn is also being rewritten in Rust.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.2.0">Node 26.2 - </a><code>stream.compose</code><a href="https://nodejs.org/en/blog/release/v26.2.0"> stable, </a><code>fs.stat()</code><a href="https://nodejs.org/en/blog/release/v26.2.0"> returns </a><code>Temporal.Instant</code></p></li><li><p>&#128230; <a href="https://webpack.js.org/blog/2026-05-19-webpack-5-107/">Webpack 5.107 - Experimental HTML modules, experimental native TS support</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t0_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t0_i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!t0_i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4de2bb72-1223-448e-bb15-8c702499c58e_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></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_!8iBq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8iBq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8iBq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg" width="1000" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:770,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!8iBq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8iBq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b28299c-0079-4f70-b3b4-ab5036736c90_1000x770.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!zwy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zwy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zwy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg" width="1008" height="1800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1800,&quot;width&quot;:1008,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!zwy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zwy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56be86ab-71c9-4003-9a90-7ea001cf872f_1008x1800.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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 281]]></title><description><![CDATA[Next.js, TanStack, Security, Redact, React Router, Waku, HTML React Parser | Redraw, Expo, Tabs, Screens, Pressable, Activity, Strict DOM, Rock, SWC, Argent Rozenite | TC39, R]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-281</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-281</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Sun, 17 May 2026 13:54:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cCy_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>This week, security is making headlines, as two major React frameworks have announced vulnerabilities and compromised npm packages!</p><p>William Candillon unveiled his secret project: a new set of 2D primitives for React Native and the web.</p><p>It&#8217;s also an exciting week full of interesting releases all around the JS ecosystem!</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TAyB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TAyB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TAyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!TAyB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TAyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58879cf1-c6b6-486d-9468-446c5d869671_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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_!idfs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!idfs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!idfs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!idfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg" width="1024" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&#8239;AI That Gets React Native on Fire TV&#8239;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="&#8239;AI That Gets React Native on Fire TV&#8239;" title="&#8239;AI That Gets React Native on Fire TV&#8239;" srcset="https://substackcdn.com/image/fetch/$s_!idfs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!idfs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!idfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7477d82-f02d-4665-878b-9dc0c0f5720b_1024x600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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/42isydS">&#8239;AI That Gets React Native on Fire TV&#8239;</a></strong></p><p>We built an MCP server for Vega OS, our new React Native TV platform for Fire TV.&#8239;</p><p>Amazon Devices Builder Tools MCP gives your AI agent deep platform context, so instead of generic React Native suggestions, your agent understands how to scaffold correctly, integrate platform features, and follow Vega conventions.&#8239;</p><p>Explore building for TV without the friction of learning a new platform from scratch.&#8239;It&#8217;s&#8239;a step toward making our developer tooling as modern as the platform itself.&#8239;<a href="https://fandf.co/42isydS">One command to install.</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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_!cCy_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cCy_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cCy_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Next.js May 2026 security release&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Next.js May 2026 security release" title="Next.js May 2026 security release" srcset="https://substackcdn.com/image/fetch/$s_!cCy_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cCy_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2a0b151-fb31-428d-bb6e-b942833b2505_1200x628.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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/changelog/next-js-may-2026-security-release">Next.js May 2026 security release</a></strong></p><p>The Next.js team shipped a coordinated security release fixing 13 vulnerabilities across denial of service, middleware/proxy bypass, server-side request forgery, cache poisoning, XSS. Many vulnerabilities are quite impactful, cannot be blocked by cloud firewalls, and it&#8217;s recommended to update immediately to a patched version, v15.5.18 or v16.2.6. There&#8217;s also a Server Functions denial of service affecting React RSC packages, fixed in v19.2.6.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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_!dueW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dueW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dueW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dueW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg" width="1000" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TanStack npm supply-chain compromise&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TanStack npm supply-chain compromise" title="TanStack npm supply-chain compromise" srcset="https://substackcdn.com/image/fetch/$s_!dueW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dueW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dueW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826e86bb-696d-4866-bb4f-dcf9f4c16956_1000x563.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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/npm-supply-chain-compromise-postmortem">TanStack npm supply-chain compromise</a></strong></p><p>On May 11, an attacker published malicious versions across 42 <code>@tanstack/*</code> npm packages related to TanStack Router. Although the attack was detected quickly, its payload is a <a href="https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised">Mini Shai-Hulud worm</a> that infected other maintainers, leading to other compromised packages across npm and pypi ecosystems, including packages from Mistral AI, OpenSearch, UiPath, and more.</p><p>The attack vector was sneaky. A GitHub Action with a <code>pull_request_target</code> trigger was used to inject poisoned content into a shared GitHub Action pnpm cache. Then, their release pipeline read from that poisoned cache, restoring dangerous files that executed during the release process. No maintainer was hacked in the process. The npm releases have the Trusted Publishing checkmark despite being compromised, showing that package provenance does not guarantee its content is safe.</p><p>Given the increasing number of supply chain vulnerabilities affecting npm packages, it&#8217;s good to highlight measures that maintainers and users can take to stay safe:</p><ul><li><p>&#128220; <a href="https://tanstack.com/blog/incident-followup">Hardening TanStack After the npm Compromise</a> - Gives a good overview of what maintainers can do to reduce the supply chain risk. Low-hanging fruits include avoiding the very dangerous <code>pull_request_target</code> trigger, and removing usage of shared caches in sensitive workflow (note: actions such as <code>setup-node</code> using a cache by default).</p></li><li><p>&#128279; <a href="https://github.com/lirantal/npm-security-best-practices">npm package manager Security Best Practices</a> - A canonical resource to protect yourself as an npm package consumer, giving pragmatic recommendations for each package manager. IMHO, combining the Socket Firewall with pnpm 11 is likely the best option right now.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may13">Product for Engineers - Great companies are built in hackathons</a></p></li><li><p>&#128220; <a href="https://tannerlinsley.com/posts/projecting-react">Projecting React</a> - Tanner Linsley wants React to be slimmer, tried Preact without success. He compares React API to database tables, and its implementation to a materialized view. With AI, he&#8217;s creating a different <code>@@tanstack/redact</code> projection, one optimized for TanStack Start, significantly smaller, that already powers <code>tanstack.com</code>. It&#8217;s a narrow experiment, not something he plans to market as an alternative to React. In the future, more devs will likely build optimized projections of the libraries they depend on.</p></li><li><p>&#128220; <a href="https://longho.dev/posts/rsc-server-functions-are-not-an-api-boundary/">RSC Server Functions Are Not An API Boundary</a> - Server Functions are not a replacement for stable, observable, versioned, shared APIs. The generated Server Function ID can change over time as you refactor code, leading to version skew problems on redeploys. Note: cloud providers have skew protection features to mitigate this.</p></li><li><p>&#128220; <a href="https://programmingarehard.com/2026/05/06/react-router-dialogs.html/">Untangling dialogs in React Router</a> - Everything you need to know to simplify your code by using a parent <code>&lt;Outlet&gt;</code> and making each dialog live on its own dedicated route. Covers data revalidation, flash session toasts, dialog exit animations and more.</p></li><li><p>&#128220; <a href="https://www.userinterface.wiki/animating-container-bounds">Animating Container Bounds</a> - How to smoothly animate an element&#8217;s width/height based on its inner content with Motion.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/security-in-react-applications">Security in React Applications</a> - Prevent XSS, store tokens securely, validate inputs, use CSFR and CSPs.</p></li><li><p>&#128220; <a href="https://evilmartians.com/chronicles/from-react-to-native-web-with-nanotags-a-migration-that-saved-100kb">From React to native web with nanotags: a migration that saved 100 KB</a> - For a mostly static marketing site using Astro templates, it can be more efficient to hydrate Custom Elements rather than React.</p></li><li><p>&#128220; <a href="https://tympanus.net/codrops/2026/05/13/exploring-the-html-in-canvas-proposal/">Exploring the HTML-in-Canvas Proposal</a> - It could simplify integration 2D UIs in 3D worlds, in particular for React Three Fiber creative devs.</p></li><li><p>&#128184; <a href="https://github.com/svar-widgets/react-gantt">SVAR React Gantt &#8211; Build interactive project timelines with an open-source React Gantt library.</a></p></li><li><p>&#128230; <a href="https://waku.gg/blog/waku-v1-beta">Waku 1.0 beta</a> - The minimal RSC framework first beta marks our shift toward production readiness. It recently added support for Vite 8, Rolldown, Node 26, React performance tracks, flexible routing, CSP, and more.</p></li><li><p>&#128230; <a href="https://newsletter.daishikato.com/p/jotai-v2-20-0-and-the-store-building-blocks">Jotai 2.20 - Improves performance in high-throughput scenarios, refactor store building blocks</a></p></li><li><p>&#128230; <a href="https://github.com/remarkablemark/html-react-parser/releases/tag/v6.1.0">HTML React Parser 6.1 - add CSP support with </a><code>trustedTypePolicy</code></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=mOncu3xCllw">Ankita Kulkarni - Stop freezing your React apps, use this Background Trick instead</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=5QM7XjbqDug">Shruti Kapoor - Five Minute Deep Dive: React Server Components</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=XSmpScSiPhw">Josef Bender - Protecting my TanStack Start Server Functions</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/1004/tanhacked">Syntax.fm 1004 - TanHacked</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FCYr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FCYr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FCYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Theo Browne&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Theo Browne" title="Theo Browne" srcset="https://substackcdn.com/image/fetch/$s_!FCYr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FCYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f485a4d-3905-4217-b7b2-a93bdb4e55c9_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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_!S78t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S78t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S78t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S78t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tests are dead - Meticulous is here&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tests are dead - Meticulous is here" title="Tests are dead - Meticulous is here" srcset="https://substackcdn.com/image/fetch/$s_!S78t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!S78t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!S78t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37b5c2af-04bb-4755-ac8f-eeff2b9f0c3e_1200x630.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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=26q2&amp;utm_content=2nd">Tests are dead - Meticulous is here</a></strong></p><p>Meticulous creates and maintains an exhaustive suite of e2e ui tests with <strong>zero</strong> developer effort.</p><p>This quote from the CTO of Traba sums the product up best: &#8220;Meticulous has fundamentally changed the way we approach frontend testing in our web applications, fully eliminating the need to write any frontend tests. The software gives us confidence that every change will be completely regression tested, allowing us to ship more quickly with significantly fewer bugs in our code. The platform is easy to use and reduces the barrier to entry for backend-focused devs to contribute to our frontend codebase.&#8221;</p><p>Meticulous is used by companies like Notion, Dropbox, Wiz, LaunchDarkly, and many others.</p><p>This <a href="https://www.meticulous.ai/blog/lessons-from-a-decade?utm_source=thisweekinreact&amp;utm_campaign=26q2&amp;utm_content=2nd">post</a> from our CTO sets out the context of why exhaustive testing can double engineering velocity.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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_!Mk02!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mk02!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mk02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg" width="1365" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1365,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Redraw - 2D graphics primitives, powered by WebGPU&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Redraw - 2D graphics primitives, powered by WebGPU" title="Redraw - 2D graphics primitives, powered by WebGPU" srcset="https://substackcdn.com/image/fetch/$s_!Mk02!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mk02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86edce4-1ef0-4900-b502-1f5521fa4bcd_1365x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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://wcandillon.github.io/redraw/">Redraw - 2D graphics primitives, powered by WebGPU</a></strong></p><p>In an <a href="https://www.youtube.com/watch?v=nGLCmY7tdz4">amazing introduction video</a>, William Candillon presented what he&#8217;s been secretly working on for months: a new grade of 2D graphics primitives, powered by WebGPU. It&#8217;s still a technical preview and not open-source yet, but William is looking to make it source-available soon with a license that makes it sustainable.</p><p>It all started with &#8220;Can it be done in React Native?&#8221;, led to Skia on native, then WebGPU for unified 2D/3D composition across platforms. Redraw is the next step: bringing GPU-accelerated vector rendering with rich geometric information back to both native and web.</p><p>What it unlocks:</p><ul><li><p>Variable strokes - stroke width driven by path geometry (tangent, arc length)</p></li><li><p>Color along path - gradient callbacks mapped to arc length or distance</p></li><li><p>Vector feathering - soft shadows, blur, and glow without rasterization</p></li><li><p>Physically-based rendering - material effects computed directly on vector paths</p></li><li><p>Non-physically-based rendering - creative effects impossible with raster pipelines</p></li></ul><p>Built for composability:</p><ul><li><p>Compute shaders powered via <a href="https://typegpu.com/">TypeGPU</a> (optional dependency)</p></li><li><p>Zero-cost integration with Skia, Three.js, PixiJS, and WebGPU</p></li><li><p>Write shader logic in TypeScript, no WGSL required</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>&#128184; <a href="https://sentry.io/cookbook/track-checkout-performance-react-native/?utm_source=thisweekinreact&amp;utm_medium=paid-community&amp;utm_campaign=&amp;utm_content=newsletter-rn-link-rn-checkout-learnmore">Sentry - A guide to finding and fixing slow checkout requests in React Native with distributed tracing and proactive alerts.</a></p></li><li><p>&#128038; <a href="https://x.com/aswincode/status/2051689159723458746">iOS 26 native tab icon</a> - A look into how to display dynamic tab icons, what constraints Expo Router had, and what was needed to overcome them.</p></li><li><p>&#128064; <a href="https://github.com/facebook/react-strict-dom/discussions/471#discussioncomment-16896278">Is React Strict DOM still active?</a> - The project has been quiet since its initial maintainers left Meta, but it&#8217;s still used internally for new projects. Meta product engineers and community members are stepping in.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/react-native-pressable-faster-than-gesture-handler/">React Native Pressable faster than gesture handler</a> - A deep dive into why Gesture Handler adds additional cost compared to RN Pressable and Reanimated&#8217;s CSS transition API</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/hidden-cost-of-react-activity/">The Hidden Cost of React.Activity</a> - <code>&lt;Activity&gt;</code> is different from keeping a screen mounted but invisible. Heavy use of useEffect can badly impact performance when a screen becomes visible again.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/argent-agentic-toolkit-to-control-debug-and-profile-ios-applications/">Meet Argent: Agentic Toolkit to Control, Debug and Profile iOS applications</a> - Gives coding agents direct access to the iOS Simulator, helpful to inspect and debug RN iOS apps.</p></li><li><p>&#128220; <a href="https://shift.infinite.red/beyond-60-fps-building-a-real-time-can-bus-dashboard-with-nitro-modules-and-skia-d0f564f8d239">Beyond 60fps - Real-time CAN Bus dashboard with Nitro Modules and Skia</a> - A minor hobby-project issue turned into a deep look into how RN communication between native and JS works.</p></li><li><p>&#128220; <a href="https://medium.com/doctolib/expo-without-eas-scaling-the-react-native-developer-experience-of-an-app-with-90m-users-2694ea841805">Expo without EAS: Scaling the React Native developer experience of an app with 90M+ users</a> - Practical migration story from React Native to Expo at Doctolib, a popular healthcare app. It explains why EAS wasn&#8217;t a good fit for their setup, and how Callstack&#8217;s Rock modular toolkit helped them improve their build flow.</p></li><li><p>&#128230; <a href="https://expo.dev/changelog/sdk-56-beta">Expo SDK 56 Beta - Stable Expo UI, faster builds, improved startup performance on Android, RN 0.85</a> - As always, a very long changelog with many improvements, that we&#8217;ll cover in depth once stable.</p></li><li><p>&#128230; <a href="https://github.com/oblador/react-native-swc">React Native SWC - SWC-powered transformer &amp; minifier for Metro</a> - SWC recently added Flow supports, making it possible to fully replace Babel by SWC in RN&#8217;s transpilation pipeline. ~8x faster transform worker &amp; full real world bundling ~3x faster.</p></li><li><p>&#128230; <a href="https://blog.sentry.io/debugging-expo-react-native-sdk/">Sentry SDK 8.10+ - OTA update context, build failures, emergency launch detection, performance spans for prefetching, image/asset loading instrumentation</a></p></li><li><p>&#128230; <a href="https://github.com/mobile-ink/mobile-ink">Mobile Ink - iOS Skia/Metal drawing and continuous canvas primitives</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-nitro-fetch/releases/tag/v1.2.0">Nitro Fetch 1.2 - Native-side prefetching registration, web stub</a></p></li><li><p>&#128230; <a href="https://github.com/JoaoPauloCMarra/react-native-nitro-markdown/releases/tag/v0.6.0">Nitro Markdown 0.6 - RaTex math renderer, native release hardening, refreshed example benchmarks/docs</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rock/releases/tag/v0.13.0">Rock 0.13 - Experimental support for CNG &amp; Expo Config Plugins, validate Android 16KB ELF alignment</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-screens/releases/tag/4.25.0">RN Screens 4.25 - Drops the Legacy Architecture, Tabs API in RC, many Tabs user-facing improvements</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.9.0">Rozenite 1.9 - storage-plugin replaces mmkv-plugin, new react-hook-form plugin</a></p></li><li><p>&#127897;&#65039; <a href="https://infinite.red/react-native-radio/rnr-352-storybook-with-daniel-williams">RNR 352 - Storybook with Daniel Williams</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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/05.md">TC39 - Agenda for the 114th meeting - May 19-21</a> - A packed agenda, many proposals could progress next week, including Iterators, Explicit Resource Management, and more.</p></li><li><p>&#128230; <a href="https://voidzero.dev/posts/announcing-rolldown-1-0">Rolldown 1.0</a> - The high-performance Rust-based bundler is now stable and respects semantic versioning. It&#8217;s already powering Vite 8 as a 10-30x faster alternative to Rollup. Bundling in dev is on the roadmap to overcome the performance limitation of serving individual ESM files.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.1.0">Node.js 26.1 - Experimental </a><code>node:ffi</code><a href="https://nodejs.org/en/blog/release/v26.1.0"> module</a> - A promising Foreign Function Interface module for loading dynamic libraries and integrating with native languages.</p></li><li><p>&#128230; <a href="https://github.com/jestjs/jest/issues/9430#issuecomment-4400281169">Jest 30.4 - Support for </a><code>require(esm)</code> - Jest&#8217;s ESM support has been fully rewritten. It still requires the Node.js <code>--experimental-vm-modules</code> flag, but the Node.js team is working on stabilizing that feature.</p></li><li><p>&#128230; <a href="https://bun.com/blog/bun-v1.3.14">Bun 1.3.14 - Built-in image processing, global install virtual store, HTTP improvements</a> - Speaking of Bun, a Rust port was previously disclosed and framed as an experiment. It turns out Bun may actually <a href="https://x.com/jarredsumner/status/2053808438644445230">migrate from Zig to Rust in the near future</a>.</p></li><li><p>&#128230; <a href="https://github.com/npm/cli/releases/tag/v11.14.0">npm 11.4 - allow-directory, allow-file, allow-remote</a> - New opt-in npm CLI security features, similar to pnpm&#8217;s <code>blockExoticSubdeps</code>.</p></li><li><p>&#128230; <a href="https://github.com/microsoft/playwright/releases/tag/v1.60.0">Playwright 1.60 - Drop API, Aria snapshots, HAR recording</a> - You can now simulate drag-and-drop, and snapshot the accessibility tree.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.1">pnpm 11.1 - Named registries, new useful commands</a></p></li><li><p>&#128230; <a href="https://tailwindcss.com/blog/tailwindcss-v4-3">Tailwind CSS 4.3 - Scrollbars, new colors, and more</a></p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-630/">Astro 6.3 - Experimental advanced routing, first-class Hono support</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wqxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wqxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Wqxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55fa2687-ca83-49d1-abdc-029d5b9bc8c7_600x64.png 1456w" sizes="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_!GNVE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GNVE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GNVE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg" width="1000" height="1850" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1850,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!GNVE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GNVE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6243951-0277-4107-87bd-c0f60b802742_1000x1850.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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 280]]></title><description><![CDATA[TanStack, Remotion, React Router, Remix, Trees, Pracht, shadcn | Expo Go, Ease, Screen Transitions, LegendList, JSI, Gradle, Radon, Baguette, Rozenite, AI | Node.js, Datatype, tsz, Astro]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-280</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-280</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Sat, 09 May 2026 21:21:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5e2ff600-21b9-46da-ae2c-6e2006ab5b0a_3000x1400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <a href="https://x.com/sebastienlorber">Seb</a> and <a href="https://x.com/jaworek3211">Jan</a> here &#128075;!</p><p>It&#8217;s another quiet week in React, but there&#8217;s still plenty of interesting links to check out about the TanStack and powerful new Remotion capabilities.</p><p>React Native had a busier week, with a diverse mix of releases, great articles, and ecosystem updates.</p><p>Let&#8217;s dive in!</p><p>As always, thanks for supporting us on your favorite platform:</p><ul><li><p>&#129419; <a href="https://slo.im/last/b">Bluesky</a></p></li><li><p>&#10006;&#65039; <a href="https://slo.im/last/x">X / Twitter</a></p></li><li><p>&#128084; <a href="https://slo.im/last/l">LinkedIn</a></p></li><li><p>&#128125; <a href="https://slo.im/last/r">Reddit</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_RLn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_RLn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_RLn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Dominik Dorfmeister&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dominik Dorfmeister" title="Dominik Dorfmeister" srcset="https://substackcdn.com/image/fetch/$s_!_RLn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_RLn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42728c3d-d1c9-4eb3-87c6-b21e5762e274_400x400.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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_!xpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="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_!HOIs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HOIs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HOIs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Still writing tests manually?&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Still writing tests manually?" title="Still writing tests manually?" srcset="https://substackcdn.com/image/fetch/$s_!HOIs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HOIs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0deff0-4f0e-4b35-a0c8-e48f6498d982_1200x628.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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=26q2&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox, Wiz, and LaunchDarkly have found a new testing paradigm - and they can&#8217;t imagine working without it. Built by <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">ex-Palantir engineers</a>, Meticulous autonomously creates a continuously evolving suite of E2E UI tests that delivers <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">near-exhaustive coverage</a> with <em>zero developer effort</em> - impossible to deliver by any other means.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p><strong>No maintenance (seriously)</strong></p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>&#129320;</strong> Curious? <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#9883;&#65039; React</strong></h2><ul><li><p>&#128184; <a href="https://planetscale.com/">Ship faster with PlanetScale - Blazing fast managed Postgres and MySQL, built for applications of any scale</a></p></li><li><p>&#9888;&#65039; <a href="https://socket.dev/blog/tanstack-brandsquat-compromise">Malicious npm Package Brand-Squats TanStack to Exfiltrate Environment Variables</a> - Make sure not to install the <code>tanstack</code> npm package because it&#8217;s not owned by the TanStack organization.</p></li><li><p>&#128220; <a href="https://tanstack.com/blog/who-owns-the-tree">Who Owns the Tree? RSC as a Protocol, Not an Architecture</a> - The traditional RSC architecture &#8211; as found in Next.js &#8211; is server-driven. TanStack Start frames RSC as a protocol, enabling both server-owned and client-owned composition models.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/introducing-tanstack-form/">Introducing TanStack Form</a> - A pragmatic intro to this strongly typed and flexible form library.</p></li><li><p>&#128220; <a href="https://dev.to/lazarv/time-to-yield-20m8">Time to Yield - An SSG benchmark across five React frameworks</a> - The author&#8217;s solution uses generators and yields the static routes to render, making it possible to render the first page sooner.</p></li><li><p>&#128220; <a href="https://kittygiraudel.com/2026/05/02/nextjs-link-as-a-button/">Next.js Link as a Button</a> - Still requires <code>&lt;Link legacyBehavior&gt;</code> for now, but apparently a solution based on Fragment Refs is coming.</p></li><li><p>&#128220; <a href="https://brookslybrand.com/posts/react-miami-2026.html">React Miami 2026</a> - Conf feedback by Brooks Lybrand. Also explains that interest in React features is at an all-time low, and clears up the confusion surrounding React Router and Remix.</p></li><li><p>&#128184; <a href="https://certificates.dev/react?friend=TWIR">React Certification - Ready for a Senior role? Take the assessment: 135 minutes, 40 MCQs, and 2 Coding challenges. Get Senior Certified!</a></p></li><li><p>&#128230; <a href="https://github.com/remotion-dev/remotion/releases/v4.0.455">Remotion 4.0.455 - New </a><code>&lt;HtmlInCanvas&gt;</code><a href="https://github.com/remotion-dev/remotion/releases/v4.0.455"> component</a> - This component unlocks new impressive capabilities for the React programmatic video framework, letting you interleave regular HTML with fancy canvas-based effects using shaders (<a href="https://github.com/remotion-dev/html-in-canvas">demos</a>).</p></li><li><p>&#128230; <a href="https://remix.run/blog/remix-3-beta-preview">Remix 3 Beta Preview</a> - The new version of Remix is now in beta preview. It&#8217;s not based on React nor React Router, but still relies on JSX. It uses a different component model where you explicitly trigger re-renders, Frames that you can reload, and doesn&#8217;t bundle your app.</p></li><li><p>&#128230; <a href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7150">React Router 7.15 - Stabilizing APIs to prepare for React Router v8, Route matching optimizations</a></p></li><li><p>&#128230; <a href="https://trees.software/">Trees - File tree UI library, performant, flexible, with React or vanilla JS</a></p></li><li><p>&#128230; <a href="https://pracht.resynapse.dev/">Pracht - Preact framework with explicit routing, per-route render modes, cloud adapters</a></p></li><li><p>&#128230; <a href="https://ui.shadcn.com/docs/changelog/2026-05-package-imports-target-aliases">shadcn CLI 4.7 - Package Imports and Target Aliases</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=PX3QlADinIE">Jack Herrington - 5 Ways To SSR/RSC on TanStack Start</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=KpoEflQ3u1A">Josef Bender - This </a><code>&lt;Link preload&gt;</code><a href="https://www.youtube.com/watch?v=KpoEflQ3u1A"> Trick Makes TanStack Start Blazing Fast!</a></p></li><li><p>&#127897;&#65039; <a href="https://podrocket.logrocket.com/nextjs-works-everywhere-now-jimmy-lai-tells-us-how">PodRocket - Next.js works everywhere now, Jimmy Lai tells us how</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://substack.thisweekinreact.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading This Week In React! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WBww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WBww!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WBww!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WBww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Addy Osmani&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Addy Osmani" title="Addy Osmani" srcset="https://substackcdn.com/image/fetch/$s_!WBww!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WBww!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WBww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8443919-a88e-49d7-ba7b-f78f2ea7fedd_400x400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!xpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="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_!D67F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D67F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D67F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D67F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Lingui - Modern, Lightweight i18n for React&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Lingui - Modern, Lightweight i18n for React" title="Lingui - Modern, Lightweight i18n for React" srcset="https://substackcdn.com/image/fetch/$s_!D67F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D67F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D67F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5bfb47c-d167-4c94-ad44-d611c2736874_1200x600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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/8YBpFxk">Lingui - Modern, Lightweight i18n for React</a></strong></p><p>Ship multilingual apps faster with Lingui - a lightweight i18n toolkit for React and React Native, with macros, message extraction, and production-ready localization.</p><p>It fits naturally into modern stacks like React, Vite, TypeScript, TanStack Start, Remix, Astro, and Svelte, so teams can adopt it without changing their workflow. It also keeps messages clear for translators and works well with AI-assisted localization workflows.</p><p>Lingui v6 modernizes the stack with ESM-only distribution, a smaller installation size (62 MB &#8594; 35 MB, dependencies 146 &#8594; 104), stronger TypeScript support, and configurable JSX placeholder names in the <code>&lt;Trans&gt;</code> component.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128241; React-Native</strong></h2><ul><li><p>&#128184; <a href="https://go.posthog.com/twir-may6">PostHog - The 7 best session replay tools for mobile apps</a></p></li><li><p>&#128064; <a href="https://expo.dev/changelog/expo-go-and-app-store-may-2026">Expo Go and the App Store in May 2026</a> - Update on the state of Expo Go support for SDK 55 being blocked by AppStore approval.</p></li><li><p>&#128064; <a href="https://expo.dev/changelog/gradle-cache">Gradle cache for Android builds</a> - EAS builds now support Gradle caching with ~50% reduction in build times.</p></li><li><p>&#128220; <a href="https://expo.dev/blog/the-real-cost-of-react-native-animations-benchmarking-every-approach">The real cost of React Native animations: benchmarking every approach</a> - A look into how popular animation solutions run under the hood, how they perform on real devices, and why they differ in per-frame cost.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/react-native-production-lessons-from-react-universe-meetup-x-zalando">React Native production lessons from React Universe Meetup x Zalando</a> - Four practical patterns from Zalando: measuring brownfield migrations with Meaningful Render, stabilizing video feeds, using RN to bridge web API gaps, and handling on-device LLM hardware variance.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/make-jsi-run-faster-2">Making JSI Faster with more Efficient Data Structures</a> - Use proper tools for a given task as wrong data representation can make your code 30x slower. The article features concrete benchmarks across array shapes and string construction.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/how-react-native-ease-runs-animations-with-no-javascript-loop/">How react-native-ease runs animations with no JavaScript loop</a> - Analysis how the library takes a different approach than most RN animation libraries to avoid being tied to the JS thread.</p></li><li><p>&#128220; <a href="https://reactnavigation.org/blog/2026/04/27/building-custom-screen-transitions/">Building custom transitions with react-native-screen-transitions</a> - How to make custom screen transitions to make your app experience stand out.</p></li><li><p>&#128220; <a href="https://blog.manikagnish.com/extending-expo-ui-with-swiftui-building-a-native-swipeactions-modifier">Extending Expo UI with SwiftUI: Building a Native swipeActions Modifier</a> - Walkthrough of building a local Expo module to add SwiftUI&#8217;s swipeActions modifier to @expo/ui.</p></li><li><p>&#128220; <a href="https://www.peterp.me/articles/legend-list-engine-simulator/">What&#8217;s actually happening inside Legend List</a> - Explains what formula does Legend List use to display items optimally and what role optimisation props play in it.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/expo-to-meta-quest-ai-powered-vr-development/">Expo to Meta Quest - AI-powered VR development</a> - A migration skill that, combined with Meta&#8217;s Horizon Debug Bridge MCP, enables an agentic dev loop for VR. Covers Expo workflow setup, resizable VR windows, and performance optimization.</p></li><li><p>&#128230; <a href="https://github.com/software-mansion/radon-ide/releases/tag/v1.17.0">Radon IDE 1.17 - Native View Hierarchy Inspector on iOS, Android Network Inspector now captures native traffic, RN 0.85 support, and clipboard sync between computer and device</a></p></li><li><p>&#128230; <a href="https://github.com/tddworks/baguette">Baguette - Headless iOS Simulator manager/farm + host-side input injection for iOS 26 &#8212; taps, swipes, multi-finger gestures, and 60 fps streaming</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/rozenite/releases/tag/v1.8.0">Rozenite 1.8 - Nitro traffic support in the network activity plugin, SQLite agent tools, and a Rozenite for Agents SDK</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-cdp">Agent CDP - CLI for Chrome DevTools Protocol, debug targets, console, traces, heap snapshots, profiling for Chrome, Node.js, and React Native</a> - Part of the agent-tools family from Callstack.</p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.14.0">Agent Device 0.14 - Android snapshot helper, skillgym tests, and replaces bulky skills with versioned CLI help</a></p></li><li><p>&#128230; <a href="https://github.com/infinitered/reactotron/releases/tag/reactotron-core-server%403.3.0">Reactotron 3.3 - Adds an MCP server for Claude Code integration</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion/react-native-enriched/releases/tag/v0.7.0">RN Enriched 0.7 - EnrichedText component for HTML rendering and experimental web support</a> - Now a complete rich-text solution where inputs and display text use the same format.</p></li><li><p>&#128230; <a href="https://github.com/jingjing2222/react-native-nitro-geolocation">Nitro Geolocation - Nitro-powered geolocation with a compat API for </a><code>@react-native-community/geolocation</code> - Includes a Rozenite DevTools plugin for mocking locations and an Agent Skills migration playbook.</p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=1o0pEjYGUWM">Beto - How React Native Builds Actually Work (APK, AAB, IPA, APP)</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=IzrhMN94gEE">notJust.dev - Let&#8217;s build a Podcast app for Fire TV using Vega OS &amp; React Native</a></p></li><li><p>&#127897;&#65039; <a href="https://creators.spotify.com/pod/profile/dan-neciu/episodes/React-Native-at-Scale-with-Kadi-Kraman--Software-Developer-at-Expo--Mobile-Development--EAS--OTA-Updates-e3iqbdu">React Native at Scale with Kadi Kraman | Expo, Mobile Development, EAS, OTA Updates</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>&#128256; Other</strong></h2><ul><li><p>&#128220; <a href="https://piccalil.li/blog/the-end-of-responsive-images/">The end of responsive images</a> - You don&#8217;t need to define explicit breakpoints anymore. With <code>&lt;img loading=&#8221;lazy&#8221; sizes=&#8221;auto&#8221;&gt;</code>, all modern browsers will figure out the appropriate image size based on <code>srcset</code>.</p></li><li><p>&#128220; <a href="https://ishadeed.com/article/range-syntax/">Media Queries Range Syntax</a> - CSS range queries such as <code>@media (300px &lt;= width &lt;= 500px)</code> are widely supported by all browsers.</p></li><li><p>&#128220; <a href="https://adventures.nodeland.dev/archive/why-trusted-publishing-can-t-save-us/">Why &#8220;Trusted Publishing&#8221; Can&#8217;t Save Us from Social Engineering</a> - npm Trusted Publishing and provenance features do not protect against attackers publishing on behalf of a compromised maintainer.</p></li><li><p>&#128220; <a href="https://dev.to/aralroca/the-on2-bug-that-looked-like-clean-code-3556">The O(n^2) Bug That Looked Like Clean Code</a> - Highlights several JS patterns that seem fine at first glance but lead to quadratic complexity.</p></li><li><p>&#128230; <a href="https://nodejs.org/en/blog/release/v26.0.0">Node.js 26.0</a> - This major release unlocks exciting new APIs such as <code>Temporal</code> and <code>Map.getOrInsert()</code>. It also upgrades the HTTP client. Let&#8217;s take the opportunity to remind that <a href="https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule">the Node.js release schedule is evolving</a> and dropping the even/odd distinction after this release: v27 will become LTS.</p></li><li><p>&#128230; <a href="https://franktisellano.github.io/datatype/">Datatype - Variable font that turns text into charts</a> - A really cool idea, relying on font ligatures!. This might be an efficient way to show little inline charts in grid/list views.</p></li><li><p>&#128230; <a href="https://tsz.dev/">tsz - TypeScript compiler in Rust</a> - WIP but nearly complete, faster than tsgo, drop-in replacement.</p></li><li><p>&#128230; <a href="https://astro.build/blog/astro-620/">Astro 6.2 - SVG optimizer, experimental Logger and </a><code>getFontFileURL()</code><a href="https://astro.build/blog/astro-620/"> APIs</a> - Also a sneak peek of Astro v7 now in alpha, including Vite 8 and stable Rust compiler.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xpGL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xpGL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!xpGL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff653df31-47f7-49ec-a60d-6d5fd32ed1a3_600x64.png 1456w" sizes="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_!3cEX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3cEX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3cEX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg" width="1000" height="1470" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1470,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!3cEX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3cEX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0facf4dc-e5c6-4bf1-b3cd-2e854796340b_1000x1470.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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_!QfOs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QfOs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QfOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg" width="1000" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;alt&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="alt" title="alt" srcset="https://substackcdn.com/image/fetch/$s_!QfOs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QfOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4add51-3208-4876-8b98-5ef18f531619_1000x754.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div 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 279]]></title><description><![CDATA[Compiler, TSRX, StyleX, XState, Hook Form, TanStack, shadcn, Chakra, Inertia, Mantine | SPM, SimCam, Enriched Markdown, Agent Device, Navigation SDK, JSI, Paste Input, Crypto, MLX, Jail Monkey | pnpm,]]></description><link>https://substack.thisweekinreact.com/p/this-week-in-react-279</link><guid isPermaLink="false">https://substack.thisweekinreact.com/p/this-week-in-react-279</guid><dc:creator><![CDATA[Sébastien Lorber]]></dc:creator><pubDate>Sat, 02 May 2026 22:19:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ce655e6c-1b49-4243-ae36-72afc01ee091_3000x1400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone, <strong>Konrad and Kacper from <a href="https://swmansion.com/?utm_source=thisweekinreact">Software Mansion</a></strong> here! &#128075;</p><p>A quiet week &#8212; no big headlines &#8212; but still a couple of solid articles and releases in the React ecosystem.</p><p>On the React side, the WIP React Compiler in Rust is being tested at Meta. We also have a 18-month retrospective on the React Compiler, a deep dive into how React streams UI, and a step-by-step guide for migrating from Radix UI to Base UI. There&#8217;s also a fresh batch of releases, including React Hook Form, Chakra UI, Mantine 9.1, and TanStack Query.</p><p>On the React Native front, an RFC has landed proposing Swift Package Manager support to replace CocoaPods, and React Navigation v8 will gain a <code>retain</code> API to keep screens mounted after going back. Don&#8217;t miss the blog on making pure JSI code faster.</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_!Hco5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hco5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Hco5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Hco5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Hco5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hco5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6673155e-00d1-4499-8c76-1cbd0f650be7_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_!Hco5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Hco5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Hco5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Hco5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6673155e-00d1-4499-8c76-1cbd0f650be7_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_!Krmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35712f28-4b25-4082-a9e3-5680e959a179_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_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_!Cqep!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cqep!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cqep!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cqep!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cqep!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cqep!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg" width="1200" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b52f77ef-56db-4ec2-9577-e528e13366ef_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_!Cqep!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cqep!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cqep!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_1200x628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cqep!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52f77ef-56db-4ec2-9577-e528e13366ef_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=26q2&amp;utm_content=1st">Still writing tests manually?</a></strong></p><p>Notion, Dropbox, Wiz, and LaunchDarkly have found a new testing paradigm - and they can&#8217;t imagine working without it. Built by <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">ex-Palantir engineers</a>, Meticulous autonomously creates a continuously evolving suite of E2E UI tests that delivers <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">near-exhaustive coverage</a> with <em>zero developer effort</em> - impossible to deliver by any other means.</p><p>It works like magic in the background:</p><ul><li><p>Near-exhaustive coverage on every test run</p></li><li><p>No test creation</p></li><li><p><strong>No maintenance (seriously)</strong></p></li><li><p>Zero flakes (built on a deterministic browser)</p></li></ul><p><strong>&#129320;</strong> Curious? <a href="https://www.meticulous.ai/?utm_source=thisweekinreact&amp;utm_medium=newsletter&amp;utm_campaign=26q1&amp;utm_content=1st">Book in a time to learn more</a></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Krmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35712f28-4b25-4082-a9e3-5680e959a179_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_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://crowdin.info/V49bfMh">Crowdin - AI localization platform that automates your React app translations from code to deployment.</a></p></li><li><p>&#128064; <a href="https://github.com/facebook/react/pull/36173#issuecomment-4328422631">WIP port of React Compiler to Rust</a> - Confirmed being internally tested at Meta.</p></li><li><p>&#128220; <a href="https://saschb2b.com/blog/react-compiler-year-in-review">The React Compiler at Eighteen Months: The Arc, the Debates, and What&#8217;s Next</a> - An overview of what happened since React Compiler was announced and predictions for the future.</p></li><li><p>&#128220; <a href="https://inside-react.vercel.app/blog/how-react-streams-ui-out-of-order">How React streams UI out of order and still manages to keep order</a> - Deep dive into Suspense boundaries and DOM staging.</p></li><li><p>&#128220; <a href="https://certificates.dev/blog/accessibility-in-react-common-mistakes-and-how-to-fix-them">Accessibility in React: Common Mistakes and How to Fix Them</a> - HTML elements, document structure, interactive elements labeling, connecting errors to labels, focus management, dynamic updates, ARIA.</p></li><li><p>&#128220; <a href="https://shadcnstudio.com/blog/migrate-from-radix-ui-to-base-ui">Migrating from Radix UI to Base UI: Step-by-Step Guide</a> - Covers the main API differences: <code>asChild</code> becomes a <code>render</code> prop, <code>data-[state=*]</code> attributes are replaced by ARIA attributes, and component-specific changes like Select now take an <code>items</code> array.</p></li><li><p>&#128220; <a href="https://hackmd.io/@0u1u3zEAQAO0iYWVAStEvw/Hk2Jiv8T-l">Why TSRX isn&#8217;t just your Favorite Templating Language</a> - TSRX is an alternative to JSX. The article states that TSRX&#8217;s mechanics (static analyzability, stateful templates, hooks in conditionals) matter more than syntax.</p></li><li><p>&#128184; <a href="https://go.posthog.com/twir-apr29">Product for Engineers - The golden rules of agent-first product engineering</a></p></li><li><p>&#128230; <a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.74.0">React Hook Form 7.74 - </a><code>setValues</code><a href="https://github.com/react-hook-form/react-hook-form/releases/tag/v7.74.0"> update multiple fields at once</a></p></li><li><p>&#128230; <a href="https://github.com/ReactTooltip/react-tooltip/releases/tag/v6.0.0">React Tooltip 6.0 - </a><code>portalRoot</code><a href="https://github.com/ReactTooltip/react-tooltip/releases/tag/v6.0.0"> and </a><code>autoClose</code><a href="https://github.com/ReactTooltip/react-tooltip/releases/tag/v6.0.0"> props, React 19 support, removed HTML string API</a></p></li><li><p>&#128230; <a href="https://github.com/shadcn-ui/ui/releases/tag/shadcn%404.5.0">shadcn CLI 4.5 - Add --pointer option to cli</a> - Re-enables <code>cursor: pointer</code> on buttons.</p></li><li><p>&#128230; <a href="https://github.com/statelyai/xstate/releases/tag/xstate%405.31.0">XState 5.31 - Add </a><code>mapState(snapshot, mapper)</code><a href="https://github.com/statelyai/xstate/releases/tag/xstate%405.31.0"> and </a><code>maxIterations</code><a href="https://github.com/statelyai/xstate/releases/tag/xstate%405.31.0"> option</a></p></li><li><p>&#128230; <a href="https://stylexjs.com/blog/v0.18">StyleX 0.18 - New </a><code>sx={}</code><a href="https://stylexjs.com/blog/v0.18"> JSX prop, </a><code>stylex.env</code><a href="https://stylexjs.com/blog/v0.18"> compile-time constants, </a><code>create-stylex-app</code><a href="https://stylexjs.com/blog/v0.18"> CLI, DevTools extension, Bun support</a></p></li><li><p>&#128230; <a href="https://github.com/chakra-ui/chakra-ui/releases/tag/%40chakra-ui%2Freact%403.35.0">Chakra UI 3.35 - new release for: react, charts, cli, panda-presets and codemod packages</a> - This release adds a Splitter component, React 19 support, and new CLI commands for docs/props.</p></li><li><p>&#128230; <a href="https://github.com/honojs/middleware/tree/main/packages/inertia">@hono/inertia - Inertia.js on Hono, render React from your routes</a> - Skips the REST endpoints, client side router and the data fetching layer entirely with this new end-to-end type safe middleware.</p></li><li><p>&#128230; <a href="https://github.com/mantinedev/mantine/releases/tag/9.1.0">Mantine 9.1 - Added/modified: deduplicateInlineStyles, use-mask, MaskInput, Treemap, TimePicker, Heatmap, MonthPicker, YearPicker, use-roving-index, Tree, Slider, WeekView</a></p></li><li><p>&#128230; <a href="https://github.com/TanStack/query/releases/tag/release-2026-04-23-1319">TanStack Query 5.100 - Added retryOnMount callback; internal Svelte test cleanup</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=MjNHmFGqNWw">Josef Bender - Avoid These 3 Mistakes in TanStack Start</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=t9xB8xvySyo">Jack Herrington - Partial Page Caching Using React Server Components</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_!m07y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m07y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!m07y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!m07y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!m07y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m07y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg" width="400" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ff9f6fb-aa48-463a-a771-1e8185928055_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_!m07y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!m07y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!m07y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_400x400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!m07y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ff9f6fb-aa48-463a-a771-1e8185928055_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_!Krmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35712f28-4b25-4082-a9e3-5680e959a179_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_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_!Pp0m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pp0m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Pp0m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Pp0m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Pp0m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pp0m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg" width="1200" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/456c6b69-f746-4c53-9355-e3bf55c1fbd3_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_!Pp0m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Pp0m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Pp0m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_1200x567.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Pp0m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456c6b69-f746-4c53-9355-e3bf55c1fbd3_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=ThisWeekInReact22Apr26">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=ThisWeekInReact22Apr26">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=ThisWeekInReact22Apr26">&#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_!Krmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35712f28-4b25-4082-a9e3-5680e959a179_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_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://maestro.dev/?utm_source=this-week-in-react#maestro-studio">Maestro Studio - A desktop app for automated React Native UI testing. Build tests by clicking directly on your app&#8217;s UI. Free.</a></p></li><li><p>&#128172; <a href="https://github.com/react-native-community/discussions-and-proposals/pull/994">RFC: Swift Package Manager support in React Native</a> - Plan to replace CocoaPods with SPM on iOS, as CocoaPods has been in maintenance mode for a while.</p></li><li><p>&#128064; <a href="https://github.com/react-navigation/react-navigation/pull/13076">React Navigation PR - Add support for retaining screens in stack</a> - A new <code>navigation.retain(true)</code> API will keep a screen mounted after going back, similar to React&#8217;s <code>&lt;Activity&gt;</code>. JS stack only for now, but Native Stack support will come with RNScreens 5.</p></li><li><p>&#128227; <a href="https://developer.apple.com/news/upcoming-requirements/?id=02032026a">Starting on April 28, 2026 apps uploaded to App Store Connect must be built with Xcode 26</a></p></li><li><p>&#128220; <a href="https://blog.margelo.com/make-jsi-run-faster">How to Make Pure JSI Code Faster in React Native</a> - <code>HostFunction</code> is about 5x faster than <code>HostObject</code>, prefer stack buffers when size is known, avoid unnecessary temporary allocations, reduce JS &#8596; C++ crossings.</p></li><li><p>&#128220; <a href="https://blog.margelo.com/react-native-qr-barcode-scanner-visioncamera-v5">QR and Barcode Scanning in React Native with VisionCamera V5</a> - Overview of VisionCamera APIs for QR scanning with ranging purposes &amp; levels of complexity.</p></li><li><p>&#128220; <a href="https://swmansion.com/blog/integrating-deferred-deep-linking-in-react-native-apps-1/">Integrating Deferred Deep Linking in React Native Apps</a> - React Native Detour SDK walkthrough with Expo Router.</p></li><li><p>&#128220; <a href="https://www.callstack.com/blog/when-to-use-apple-foundation-models-on-mobile">When to Use Apple Foundation Models on Mobile</a> - Hybrid approach where local models handle latency-sensitive tasks and cloud models handle complex reasoning. Use local first and escalate to cloud when needed.</p></li><li><p>&#128230; <a href="https://simcam.swmansion.com/">SimCam - Camera Testing for the iOS Simulator</a></p></li><li><p>&#128230; <a href="https://github.com/margelo/react-native-quick-crypto/releases/tag/v1.1.0">Quick Crypto 1.1 - simdutf for faster string encoding/decoding, Buffer semantics now match Node.js semantics, OpenSSL-Universal CocoaPods dep</a></p></li><li><p>&#128230; <a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/releases/tag/v0.5.0">Enriched Markdown 0.5 - Support macOS, web, </a><code>EnrichedMarkdownTextInput</code><a href="https://github.com/software-mansion-labs/react-native-enriched-markdown/releases/tag/v0.5.0">, spoiler elements, auto-link detection, VoiceOver/TalkBack improvements</a></p></li><li><p>&#128230; <a href="https://github.com/callstackincubator/agent-device/releases/tag/v0.13.0">Agent Device 0.13 - React DevTools passthrough, parametrise .ad replay scripts</a></p></li><li><p>&#128230; <a href="https://github.com/joshuayoes/ios-simulator-mcp/releases/tag/1.6.0">iOS Simulator MCP 1.6 - Added </a><code>ui_find_element</code><a href="https://github.com/joshuayoes/ios-simulator-mcp/releases/tag/1.6.0"> tool, </a><code>launch_app</code><a href="https://github.com/joshuayoes/ios-simulator-mcp/releases/tag/1.6.0"> env variable and </a><code>record_video</code><a href="https://github.com/joshuayoes/ios-simulator-mcp/releases/tag/1.6.0"> UDID support</a></p></li><li><p>&#128230; <a href="https://github.com/googlemaps/react-native-navigation-sdk/releases/tag/v0.15.0">Google Maps RN Navigation SDK 0.15 - Breaking changes to continueToNextDestination and mapStyle; various iOS/Android crash fixes</a></p></li><li><p>&#128230; <a href="https://github.com/corasan/react-native-nitro-mlx/releases/tag/v0.5.0">Nitro MLX 0.5 - Expo 55 support, added Embeddings module, ChatSession API, and streaming downloads</a></p></li><li><p>&#128230; <a href="https://github.com/arunabhverma/expo-paste-input/releases/tag/v0.2.0">Expo Paste Input 0.2 - Animated GIF stickers, preserve animation instead of converting to static images</a></p></li><li><p>&#128230; <a href="https://github.com/GantMan/jail-monkey/releases/tag/v3.0.0">Jail Monkey 3.0 - New Architecture support, added iOS/Android mock location detection</a> - Detect jailbroken/rooted device, mocked locations, and on Android apps running from external storage.</p></li><li><p>&#129302; <a href="https://github.com/software-mansion-labs/skills/tree/main/skills/react-native-best-practices/references/jsi">Software Mansion React Native JSI Skills</a></p></li><li><p>&#127909; <a href="https://www.youtube.com/watch?v=kN8fuEPf20A">Beto - React Native UI Testing Without the Pain</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Krmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35712f28-4b25-4082-a9e3-5680e959a179_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_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/nodejs/node/pull/62526">Node.js PR - Release v26.0</a> - The release slipped from yesterday to next week. It upgrades the <code>fetch()</code> client and unlocks new exciting APIs such as <code>Temporal</code> and <code>Map.getOrInsert()</code>.</p></li><li><p>&#128220; <a href="https://www.joshwcomeau.com/animation/scroll-driven-animations/">Scroll-Driven Animations</a> - Another great interactive article from Josh Comeau, explaining how you can now map a CSS keyframe to a scroll distance instead of a duration.</p></li><li><p>&#128220; <a href="https://nik.digital/posts/compositing-blending">Compositing &amp; Blending</a> - How the browser decides the final color of every pixel when stacking multiple elements and how it is applied in the real world.</p></li><li><p>&#128220; <a href="https://frontendmasters.com/blog/the-web-is-fun-again-first-experiments-with-html-in-canvas/">The Web Is Fun Again: First Experiments with HTML in Canvas</a> - Showcases a new API, with its limitations and interesting ways to use it.</p></li><li><p>&#128220; <a href="https://web.dev/blog/web-platform-04-2026?hl=en">New to the web platform in April</a> - <code>contrast-color()</code>, animation-range, and <code>Math.sumPrecise</code> became Baseline Newly Available, while Firefox and Chrome added various new APIs.</p></li><li><p>&#128230; <a href="https://pnpm.io/blog/releases/11.0">pnpm 11.0 - SQLite-backed store, supply-chain protection on by default, native publishing, ESM-only</a></p></li><li><p>&#128230; <a href="https://aube.en.dev/">Aube - Drop-in Node.js package manager that reads existing lockfiles</a> - Claims to be 9.2x faster than pnpm and 2.7x faster than Bun.</p></li><li><p>&#128230; <a href="https://deno.com/blog/fresh-2.3">Fresh 2.3 - Preact framework - Zero JS by default, View Transitions, and Temporal support</a></p></li><li><p>&#127897;&#65039; <a href="https://syntax.fm/show/999/writing-maintainable-css">Syntax.fm 999 - Writing Maintainable CSS</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Krmv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png" width="600" height="64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35712f28-4b25-4082-a9e3-5680e959a179_600x64.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:64,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Krmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 424w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 848w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_600x64.png 1272w, https://substackcdn.com/image/fetch/$s_!Krmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35712f28-4b25-4082-a9e3-5680e959a179_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_!AFGJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AFGJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AFGJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AFGJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AFGJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AFGJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg" width="1200" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&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_!AFGJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AFGJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AFGJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AFGJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86acb839-fea2-49aa-8eab-bff9bbf5e2f9_1200x970.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 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></channel></rss>