<!DOCTYPE html>
<html>
<head>
<style>html,body,table { line-height:1.5; } body { margin:0;padding:0; } h1,h2,h3,h4,h5,h6 { font-weight:bold;font-style:normal;font-size:1em;margin:0; } h2 { margin:1em 0; } h3 { margin:1em 0; } h5 { font-style:italic; } h6 { font-weight:normal;font-style:italic; } p,ol,ul,figure,blockquote,.spaced-block { margin:1em 0; } img { border:0;height:auto;line-height:100%;outline:none;-webkit-text-decoration:none;text-decoration:none; } body,table,td,a { -webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; } table,td { border-collapse:separate;mso-table-lspace:0pt;mso-table-rspace:0pt; } table td { vertical-align:top; } img { -ms-interpolation-mode:bicubic;max-width:100%; } * { -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale; } hr { margin:36px 0;border:0;height:1px;background:#eee; } ul,ol { margin-left:1em;padding:0;list-style-position:outside; } ol ol,ul ul,ol ul,ul ol { padding:0 0 0 1em; } li { padding:0 0 0 1em;margin:0 0 0 1em; } .email-button { border:0 none; } .built-with { width:100%;max-width:640px;margin-left:auto;margin-right:auto; } </style>
<style>.ck-link { text-decoration: underline; }</style>
<style>.ck-link { text-decoration: underline; }</style>
<style>@media only screen and (max-width:600px) { .email-container { padding:0 !important; } }
@media only screen { .email * { word-break: break-word; } }
@media screen and (max-width: 384px) { .mail-message-content { width: 414px !important; } }
@media only screen { .email * { word-break: break-word; } }
@media screen and (max-width: 384px) { .mail-message-content { width: 414px !important; } }
@media only screen and (max-width:600px) { .ck-padding-left-none { padding-left:0px !important; } .ck-padding-right-none { padding-right:0px !important; } .ck-padding-left-mobile-friendly { padding-left:18px !important; } .ck-padding-right-mobile-friendly { padding-right:18px !important; } }
@media only screen and (max-width:600px) { .ck-layout-block.ck-layout-stack td { display:block !important;width:100% !important;padding:0 !important; } .ck-column.ck-column-stack { margin-bottom:32px !important; } .ck-padding-3-top-mobile-friendly { padding-top:12px !important; } .ck-padding-3-right-mobile-friendly { padding-right:12px !important; } .ck-padding-3-bottom-mobile-friendly { padding-bottom:12px !important; } .ck-padding-3-left-mobile-friendly { padding-left:12px !important; } }
@media only screen and (max-width:600px) { .ck-mobile-font-size { font-size:50px !important; } }
@media only screen and (max-width:600px) { .ck-mobile-font-size { font-size:50px !important; } }
@media only screen and (max-width:600px) { .ck-mobile-font-size { font-size:50px !important; } }
@media only screen and (max-width:600px) { .ck-layout-block.ck-layout-stack td { display:block !important;width:100% !important;padding:0 !important; } .ck-column.ck-column-stack { margin-bottom:32px !important; } .ck-padding-3-top-mobile-friendly { padding-top:12px !important; } .ck-padding-3-right-mobile-friendly { padding-right:12px !important; } .ck-padding-3-bottom-mobile-friendly { padding-bottom:12px !important; } .ck-padding-3-left-mobile-friendly { padding-left:12px !important; } }
@media only screen and (max-width:600px) { .ck-mobile-font-size { font-size:50px !important; } }</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div style="background-color:#ffffff"><table role="presentation" cellpadding="0" cellspacing="0" class="email" style="background:#ffffff !important;width:100%" bgcolor="#ffffff"><tbody><tr>
<td><div class="email-container normal" style="padding-top:0;padding-left:0;padding-bottom:30px;padding-right:0;margin:0 auto;max-width:100%">
<!--[if mso]><style>.button-table { padding: 12px 0 }</style><![endif]--><table cellpadding="0" cellspacing="0" bgcolor="#ffffff" style="width:100%;margin:0 auto;background-color:#ffffff"><tbody><tr><td>
<div class="ck-section" style="margin:0px auto 40px auto"><center>
<table cellpadding="0" cellspacing="0" style="width:100%;margin:0 auto;max-width:640px"><tbody><tr>
<td contenteditable="false"></td>
<td width="640" style="border-radius:0px;box-sizing:border-box;mso-padding-alt:36px 36px 0px 36px" bgcolor="transparent"><div class="ck-inner-section ck-padding-left-mobile-friendly ck-padding-right-mobile-friendly" style="padding:36px 36px 0px 36px"><div style="margin-left:auto;margin-right:auto;max-width:640px"><table class="ck-layout-block" width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="transparent" style="padding:8px 32px 8px 32px;margin:8px 0px 0px 0px;border-left:solid 8px #FFE030;border-radius:0px;overflow:hidden"><tbody><tr><td as="td" class="ck-column ck-column-1" width="100%" style="background-size:cover;background-position:center;border-radius:0px;box-sizing:border-box;vertical-align:top"><div style="padding:0px 0px 0px 0px">
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#12363f;font-weight:500;line-height:1.5;margin-top:0;margin-bottom:0" class="">notJust.dev Newsletter π</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#4e585a;font-weight:400;line-height:1.5;margin-top:8px;margin-bottom:8px" class="">Stay up-to-date with the latest technologies and become a better developer</p>
</div></td></tr></tbody></table></div></div></td>
<td contenteditable="false"></td>
</tr></tbody></table>
<div><!--[if mso]><br /><br /><![endif]--></div>
</center></div>
<div class="ck-section" style="margin:0px auto 0px auto"><center><table cellpadding="0" cellspacing="0" style="width:100%;margin:0 auto;max-width:640px"><tbody><tr>
<td contenteditable="false"></td>
<td width="640" style="background-color:#ffffff;border-radius:0px;box-sizing:border-box;mso-padding-alt:18px 36px 18px 36px" bgcolor="#ffffff"><div class="ck-inner-section ck-padding-left-mobile-friendly ck-padding-right-mobile-friendly" style="padding:18px 36px 18px 36px"><div style="margin-left:auto;margin-right:auto;max-width:640px">
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Hey notJust Developers,</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Expo SDK 54 is here and it brings lots of amazing updates:</p>
<ul class="unordered_list" style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5;text-align:left">
<li class="list_item"><span>β<a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/qvh8h8ud825rv4hg/aHR0cHM6Ly9yZWFjdG5hdGl2ZS5kZXYvYmxvZy8yMDI1LzA4LzEyL3JlYWN0LW5hdGl2ZS0wLjgx" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231946">React Native 0.81</a> & <a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/g3hnhwumeo53nna3/UmVhY3QlMjAxOS4xLjA=" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231947">React 19.1</a>β</span></li>
<li class="list_item"><span>iOS 26 Liquid Glass support</span></li>
<li class="list_item"><span>Android 16 compatibility</span></li>
<li class="list_item"><span>Reanimated 4 support</span></li>
<li class="list_item"><span>Precompiled React Native builds that cut iOS build times by up to 10x and so much more.</span></li>
</ul>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">This is also the final release supporting the Legacy Architecture, so if you haven't migrated to the New Architecture yet, now's the time to start planning.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">I want to share with you the things that I am most excited about.</p>
<h3 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#11363F;font-weight:400;line-height:1.5" class="">
<strong>Let's meet in </strong><a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/9qhzhdudg3mpx3iz/aHR0cHM6Ly90aS50by9SVUMvcmVhY3QtdW5pdmVyc2UtY29uZi0yMDI1L2Rpc2NvdW50L05KRDIw" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231948"><strong>React Universe</strong></a><strong> π</strong>
</h3>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:800px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/dHhrYYVftZfLNAa9TZ2gzu/email" width="800" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:800px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Missed other conferences? No worries - <a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/9qhzhdudg3mpx3iz/aHR0cHM6Ly90aS50by9SVUMvcmVhY3QtdW5pdmVyc2UtY29uZi0yMDI1L2Rpc2NvdW50L05KRDIw" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231948"><strong>React Universe Conf</strong></a> is happening September 2β4, 2025, in WrocΕaw, Poland. It brings together developers and thought leaders to explore the latest trends, share cutting-edge insights, and push the boundaries of what's possible with React and React Native.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Use promo code <a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/9qhzhdudg3mpx3iz/aHR0cHM6Ly90aS50by9SVUMvcmVhY3QtdW5pdmVyc2UtY29uZi0yMDI1L2Rpc2NvdW50L05KRDIw" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231948"><strong>NJD20</strong></a> for <strong>20% off</strong> your ticket, and be part of something unforgettable.</p>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">Precompiled React Native for iOS</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Starting with <a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/qvh8h8ud825rv4hg/aHR0cHM6Ly9yZWFjdG5hdGl2ZS5kZXYvYmxvZy8yMDI1LzA4LzEyL3JlYWN0LW5hdGl2ZS0wLjgx" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231946"><strong>React Native 0.81</strong></a> and<strong> </strong><a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/n2hohquvn5p3goa0/aHR0cHM6Ly9leHBvLmRldi9jaGFuZ2Vsb2cvc2RrLTU0LWJldGE=" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231950"><strong>Expo SDK 54</strong></a>, React Native on iOS and its dependencies will be shipped precompiled alongside the source. That means our build times are reduced significantly - up to 10x faster.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">This will have a huge impact on smaller projects where React Native compilation was taking most of the time. In larger projects, the improvement will be less dramatic because other libraries and dependencies still need to be compiled at build time.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">But honestly, long build times are one of the most painful problems of native development, so any reduction makes me happy.</p>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">β¨ iOS 26 and Liquid Glass Support</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">SDK 54 introduces full support for iOS 26's new Liquid Glass design language, giving your apps that premium, native feel that users expect.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">You can now create Liquid Glass app icons using the new <a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/48hvh7um0qer90iq/aHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ljb24tY29tcG9zZXIv" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231951"><strong>Icon Composer</strong></a><strong> </strong>app (macOS only) and set them in <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>app.json</code></span></span> as the <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>"ios": { "icon": "./assets/app.icon" }</code></span></span><span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"> </span>.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">The real magic happens with <a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/wnh2h6uqrvpw4wfl/aHR0cHM6Ly9kb2NzLmV4cG8uZGV2L3ZlcnNpb25zL2xhdGVzdC9zZGsvdWk=" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231952"><strong>Expo UI</strong></a>, which is now in beta. You can use Liquid Glass modifiers and buttons to build some truly stunning UI.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:800px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/7Vp8qTZf3bWtiqjWJedC5P/email" width="800" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:800px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">With Native tabs (also in beta), we can even use Liquid Glass for our bottom tabs.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:477px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/v4n1Vi6E4u4p1Xy5fya5QR/email" width="477" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:477px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">To test the new Liquid Glass features, you'll need to build your app using Xcode 26 Beta and run it on iOS 26. If you're building on EAS, you can opt in to use Xcode 26 by setting the <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>image</code></span></span> to <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>macos-sequoia-15.5-xcode-26.0</code></span></span>.</p>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">Android 16 (API 36)</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">React Native for Android now targets Android 16 / API 36, which brings some important changes:</p>
<ul class="unordered_list" style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5;text-align:left">
<li class="list_item"><span>Edge-to-edge will be enabled in all Android apps, and cannot be disabled.</span></li>
<li class="list_item"><span><span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>SafeAreaView</code></span></span> from <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>react-native</code></span></span> is now deprecated in favor of <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>react-native-safe-area-context</code></span></span>. If you haven't migrated yet, now's the time.</span></li>
<li class="list_item"><span>Predictive back gesture is enabled, showing a preview of the screen you'll navigate to when you swipe back.</span></li>
</ul>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:362px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/dny7KPwnv2szEp1A5LhZGr/email" width="362" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:362px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">Link Previews</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">One of my favourite new features in SDK 54 is Link previews (aka peek and pop) for Expo Router.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">This brings that smooth iOS experience where you can long press a link and see a preview of the page before actually navigating there.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:800px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/hfNj18jEZWPuQL37tQWFMy/email" width="800" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:800px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Best part? It takes just 4 lines of code to implement:</p>
<div><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; color: rgb(51, 51, 51); background: rgb(248, 248, 248);"><span class="xml"><span class="hljs-tag" style="color: navy; font-weight: 400;"><<span class="hljs-name" style="color: navy; font-weight: 400;">Link</span> <span class="hljs-attr" style="color: teal;">href</span>=<span class="hljs-string" style="color: rgb(221, 17, 68);">"/about"</span>></span>
<span class="hljs-tag" style="color: navy; font-weight: 400;"><<span class="hljs-name" style="color: navy; font-weight: 400;">Link.Trigger</span>></span>About<span class="hljs-tag" style="color: navy; font-weight: 400;"></<span class="hljs-name" style="color: navy; font-weight: 400;">Link.Trigger</span>></span>
<span class="hljs-tag" style="color: navy; font-weight: 400;"><<span class="hljs-name" style="color: navy; font-weight: 400;">Link.Preview</span> /></span>
<span class="hljs-tag" style="color: navy; font-weight: 400;"></<span class="hljs-name" style="color: navy; font-weight: 400;">Link</span>></span>;
</span></pre></div>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">You can even add context menus next to the preview using <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>Link.Menu</code></span></span> and <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>Link.MenuAction</code></span></span>. Pretty exciting stuff.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:497px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/77Ls3voNZA6BARnUd6Xxcc/email" width="497" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:497px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">Expo updates</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Expo Updates, the client-side library that handles Over-the-air (OTA) updates, got some really useful new features that make it much more customizable.</p>
<h3 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#11363F;font-weight:400;line-height:1.5" class=""><strong>Runtime Header Overrides</strong></h3>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">You can now override update request headers at runtime to dynamically point the updates at different channels. This is perfect for implementing different update channels for employees vs end-users:</p>
<div><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; color: rgb(51, 51, 51); background: rgb(248, 248, 248);"><span class="hljs-comment" style="color: rgb(153, 153, 136); font-style: italic;">// Switch channels dynamically</span>
Updates.setUpdateRequestHeadersOverride({
<span class="hljs-string" style="color: rgb(221, 17, 68);">"expo-channel-name"</span>: isEmployee ? <span class="hljs-string" style="color: rgb(221, 17, 68);">"staging"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">"production"</span>,
});
</pre></div>
<h3 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#11363F;font-weight:400;line-height:1.5" class=""><strong>Custom Reload Screens</strong></h3>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class=""><span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>Updates.reloadAsync()</code></span></span> now accepts<span style="color:#f20000"> </span><span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>reloadScreenOptions</code></span></span> to customize the UI shown while your app reloads. No more jarring blank screens:</p>
<div><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; color: rgb(51, 51, 51); background: rgb(248, 248, 248);"><span class="hljs-selector-tag" style="color: rgb(51, 51, 51); font-weight: 700;">Updates</span><span class="hljs-selector-class">.reloadAsync</span>({
<span class="hljs-attribute" style="color: navy; font-weight: 400;">reloadScreenOptions</span>: {
backgroundColor: <span class="hljs-string" style="color: rgb(221, 17, 68);">"#fa0000"</span>,
image: <span class="hljs-built_in" style="color: rgb(0, 134, 179);">require</span>(<span class="hljs-string" style="color: rgb(221, 17, 68);">"./assets/images/reload.jpg"</span>),
imageResizeMode: <span class="hljs-string" style="color: rgb(221, 17, 68);">"cover"</span>,
imageFullScreen: true,
fade: true,
},
});
</pre></div>
<h3 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#11363F;font-weight:400;line-height:1.5" class=""><strong>Download Progress Tracking</strong></h3>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">The <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>useUpdates()</code></span></span> hook now includes a <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>downloadProgress</code></span></span><span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"> </span>property to track asset download progress during updates. Perfect for showing progress bars to users.</p>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">React Compiler</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">React Compiler is now enabled by default in new Expo projects. This means automatic memoization of your React components without writing <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>useMemo</code></span></span> and <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>useCallback</code></span></span> everywhere.</p>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">When you run <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>npx expo start</code></span></span>, you'll see "Experimental React Compiler is enabled" in your logs. You can also see which components are being optimized by pressing <span style="padding-top:0.1em;padding-bottom:0.1em;background-color:#efefef;border-radius:3px"><span style="color:#f20000"><code>J</code></span></span> in Expo CLI and checking the components panel.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:12px;margin-bottom:12px;margin-left:0;margin-right:0;max-width:536px;width:100%"><div style="display:block"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/6MkZZhKTav4d8cjeQvuioD/email" width="536" height="auto" style="display:block;border-radius:4px 4px 4px 4px;width:536px;height:auto;object-fit:contain"></div>
<figcaption style="text-align:center;display:none">β</figcaption></figure></td></tr></tbody></table>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">The Meta team is actively supporting React Compiler, so it's ready for production use in most apps.</p>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class=""><strong>Other Notable Updates</strong></h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Here are some other exciting things coming to Expo SDK 54:</p>
<ul class="unordered_list" style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5;text-align:left">
<li class="list_item"><span><strong>React Native Reanimated 4</strong> support that brings CSS Animations & Transitions</span></li>
<li class="list_item"><span><strong>Better debugging</strong> with import stack traces and owner stacks enabled by default</span></li>
<li class="list_item"><span><strong>expo-app-integrity</strong> - New security package for app verification (DeviceCheck on iOS, Play Integrity on Android)</span></li>
<li class="list_item"><span><strong>expo/blob</strong> - New package for binary data handling (W3C compliant)</span></li>
<li class="list_item"><span><strong>Improved autolinking</strong> that better handles transitive dependencies</span></li>
</ul>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">Remember, this is the last SDK to support the Legacy Architecture, so start planning your migration to the New Architecture if you haven't already!</p>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">π In case you missed it</h1>
<table class="ck-layout-block ck-layout-stack" width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="transparent" style="padding:0px 0px 0px 0px;margin:24px 0px 24px 0px;border-radius:0px;overflow:hidden"><tbody><tr>
<td as="td" class="ck-column ck-column-stack ck-column-1" width="50%" style="background-color:#FFFFFF;background-size:cover;background-position:center;border:solid 1px #EDF2F4;border-radius:4px 4px 4px 4px;box-sizing:border-box;vertical-align:top">
<img alt="" src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/83H6zpEyrNvzD9iamnk1RB" height="auto" width="100%" style="display:block;max-width:100%;display:block;border-radius:4px 4px 0px 0px"><div style="padding:18px 18px 18px 18px">
<h1 style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#2C2C2C;font-weight:500;line-height:1.5;margin-top:0;margin-bottom:0" class="">Build a Full Stack mobile app in just 8 Hours</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#4D4D4D;font-weight:400;line-height:1.5;margin-top:8px;margin-bottom:8px" class="">You'll learn practical skills needed to build powerful and scalable mobile apps using a tech stack trusted by top mobile developers. By the end of this tutorial, you'll have built a Reddit Clone with a beautiful Frontend and powerful Backend. </p>
<!--[if !mso]>--><table width="100%"><tbody><tr><td align="center"><a class="email-button" href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/reh8h9umqvr07mt6/aHR0cHM6Ly95b3V0dS5iZS9sOW92NDh2ME0yTT9zaT1vRjBlb3BOVVN1ZE55UTI4" target="_blank" rel="noopener noreferrer" style="background-color:#FFE030;color:#000000;border-radius:0px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;border-color:#ffe02f;background-color:#ffe02f;box-sizing:border-box;border-style:solid;color:#000000;display:block;width:100%;text-align:center;text-decoration:none;padding:12px 20px;margin-top:8px;margin-bottom:8px;font-size:16px;border-radius:4px 4px 4px 4px" url-id="1777231953"><strong>Watch now</strong></a></td></tr></tbody></table>
<!--<![endif]--><!--[if mso]><table class="button-table" width="100%" border="0" cellSpacing="0" cellPadding="0" style="margin-top:8px;margin-bottom:8px"><tr><td align="center"><table border="0" cellSpacing="0" cellPadding="0" width="100%"><tr><td align="center" bgcolor="#ffe02f" style="background-color:#ffe02f;overflow:hidden;padding:12px 20px"><a class="email-button" href="https://youtu.be/l9ov48v0M2M?si=oF0eopNUSudNyQ28" target="_blank" rel="noopener noreferrer" style="background-color:inherit;display:inline-block;text-decoration:none;border-style:solid;margin:0;color:#000000;font-size:16px" data-ck-element="button"><strong>Watch now</strong></a></td></tr></table></td></tr></table><![endif]-->
</div>
</td>
<td style="padding-left:20px"></td>
<td as="td" class="ck-column ck-column-2" width="50%" style="background-color:#FFFFFF;background-size:cover;background-position:center;border:solid 1px #EDF2F4;border-radius:4px 4px 4px 4px;box-sizing:border-box;vertical-align:top">
<img alt="" src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/fghD2TFPx7bAA41hBHJidw" height="auto" width="100%" style="display:block;max-width:100%;display:block;border-radius:4px 4px 0px 0px"><div style="padding:18px 18px 18px 18px">
<h1 style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#2C2C2C;font-weight:500;line-height:1.5;margin-top:0;margin-bottom:0" class="">Tools I use to build mobile apps FAST with React Native</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#4D4D4D;font-weight:400;line-height:1.5;margin-top:8px;margin-bottom:8px" class="">Iβll walk you through my complete tech stack for building modern, production-ready mobile apps - fast. From the frameworks and libraries I use daily, to the AI tools and IDEs that supercharge my workflow, youβll get an inside look at how I ship scalable apps.</p>
<!--[if !mso]>--><table width="100%"><tbody><tr><td align="center"><a class="email-button" href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/08hwhgu2mw5dxgip/aHR0cHM6Ly93d3cueW91dHViZS5jb20vbGl2ZS9IU1JZSHdMNnJQcz9zaT1ocnVlTjc5akNYcHQyMDlC" target="_blank" rel="noopener noreferrer" style="background-color:#FFE030;color:#000000;border-radius:0px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;border-color:#2C2C2C;background-color:#2C2C2C;box-sizing:border-box;border-style:solid;color:#ffe02f;display:block;width:100%;text-align:center;text-decoration:none;padding:12px 20px;margin-top:8px;margin-bottom:8px;font-size:16px;border-radius:4px 4px 4px 4px" url-id="1777231954"><strong>Watch now</strong></a></td></tr></tbody></table>
<!--<![endif]--><!--[if mso]><table class="button-table" width="100%" border="0" cellSpacing="0" cellPadding="0" style="margin-top:8px;margin-bottom:8px"><tr><td align="center"><table border="0" cellSpacing="0" cellPadding="0" width="100%"><tr><td align="center" bgcolor="#2C2C2C" style="background-color:#2C2C2C;overflow:hidden;padding:12px 20px"><a class="email-button" href="https://www.youtube.com/live/HSRYHwL6rPs?si=hrueN79jCXpt209B" target="_blank" rel="noopener noreferrer" style="background-color:inherit;display:inline-block;text-decoration:none;border-style:solid;margin:0;color:#ffe02f;font-size:16px" data-ck-element="button"><strong>Watch now</strong></a></td></tr></table></td></tr></table><![endif]-->
</div>
</td>
</tr></tbody></table>
<h1 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:36px;color:#11363F;font-weight:700;line-height:1.5" class="">Did you learn something new today?</h1>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5" class="">If you found this email valuable, forward it to one friend or coworker who can also benefit from it. That would be much appreciated π</p>
<table class="ck-layout-block ck-layout-stack" width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="transparent" style="padding:0px 0px 0px 0px;margin:24px 0px 24px 0px;border-radius:0px;overflow:hidden"><tbody><tr>
<td as="td" class="ck-column ck-column-stack ck-column-1" width="18%" style="background-size:cover;background-position:center;border-radius:0px;box-sizing:border-box;vertical-align:middle"><div style="padding:0px 0px 0px 0px"><table width="100%" border="0" cellspacing="0" cellpadding="0" style="text-align:center;table-layout:fixed;float:none" class="email-image"><tbody><tr><td align="center"><figure style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;max-width:100%;width:100%"><a style="display:block" href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/8ghqh3uogpvl39cl/aHR0cHM6Ly90d2l0dGVyLmNvbS9WYWRpbU5vdEp1c3REZXY=" target="_blank" rel="noopener noreferrer" class="kit-image-link" url-id="1777231955"><img src="https://embed.filekitcdn.com/e/7abUAt5sKJurpJ82fB3cx1/6TPznX7NMnRhnj4YssQ2tw" alt="avatar" width="100%" height="auto" style="display:block;border-radius:50px 50px 50px 50px;width:100%;height:auto;object-fit:contain"></a></figure></td></tr></tbody></table></div></td>
<td style="padding-left:10px"></td>
<td as="td" class="ck-column ck-column-2" width="82%" style="background-size:cover;background-position:center;border-radius:0px;box-sizing:border-box;vertical-align:middle"><div style="padding:0px 0px 0px 0px">
<h3 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:28px;color:#12363F;font-weight:700;line-height:1.5;margin-top:0;margin-bottom:0" class="">Vadim Savin</h3>
<p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#4d4d4d;font-weight:400;line-height:1.5;margin-top:8px;margin-bottom:8px" class="">Helping you become a better developer together with the <strong>notJust.dev</strong> team</p>
</div></td>
</tr></tbody></table>
<div>
<table cellpadding="0" cellspacing="0" style="width:100%;margin:0 auto"><tbody><tr><td><table class="ck-layout-block" width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#f9f9f9" style="background-color:#f9f9f9;padding:18px 18px 18px 18px;margin:24px 0px 24px 0px;border-radius:6px 6px 6px 6px;overflow:hidden"><tbody><tr><td as="td" class="ck-column ck-column-1" width="100%" style="background-size:cover;background-position:center;border-radius:0px;box-sizing:border-box;vertical-align:top"><div style="padding:18px 18px 18px 18px">
<h3 style="font-family:Roboto, -apple-system, BlinkMacSystemFont, sans-serif;font-size:20px;color:#353535;font-weight:700;line-height:1.5;margin-top:0;margin-bottom:0" class="">Whenever youβre ready, there are 2 ways I can help you:</h3>
<ol class="unordered_list" style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#353535;font-weight:400;line-height:1.5;text-align:left;margin-top:24px;margin-bottom:24px">
<li class="list_item"><span>β<a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/vqh3hmuon37p48hw/aHR0cHM6Ly9iaXQubHkvM01GdWRTWA==" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231956"><strong>React Native Mastery</strong></a> β The Ultimate React Native & Expo Course. Build 7 real-world projects and finally master mobile development with React Native. Available NOW!</span></li>
<li class="list_item"><span>β<a href="https://click.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93/l2heh6ulov934qag/aHR0cHM6Ly93d3cubm90anVzdC5kZXYvcGFydG5lcnNoaXBz" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#3EA37F" url-id="1777231957"><strong>Join us as a Sponsor</strong></a><strong> </strong>-<strong> </strong>Showcase your product to mobile developers and turn them into skilled, loyal users through engaging hands-on tutorials.<br>Because the best marketing happens through <strong>education!</strong></span></li>
</ol>
</div></td></tr></tbody></table></td></tr></tbody></table>β</div>
</div></div></td>
<td contenteditable="false"></td>
</tr></tbody></table></center></div>
<div class="ck-section" style="margin:30px auto 0px auto"><center><table cellpadding="0" cellspacing="0" style="width:100%;margin:0 auto;max-width:640px"><tbody><tr>
<td contenteditable="false"></td>
<td width="640" style="background-color:#ffffff;border-radius:0px;box-sizing:border-box;mso-padding-alt:36px 36px 36px 36px" bgcolor="#ffffff"><div class="ck-inner-section ck-padding-left-mobile-friendly ck-padding-right-mobile-friendly" style="padding:36px 36px 36px 36px"><div style="margin-left:auto;margin-right:auto;max-width:640px"><p style="font-family:-apple-system, BlinkMacSystemFont, sans-serif;font-size:18px;color:#656565;font-weight:400;line-height:1.5;text-align:left" class="">113 Cherry St 98104-2205, Seattle, WA 98104-2205<br>β<a href="https://unsubscribe.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#656565">Unsubscribe</a> Β· <a href="https://preferences.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93" target="_blank" class="ck-link" rel="noopener noreferrer" style="color:#656565">Preferences</a>β</p></div></div></td>
<td contenteditable="false"></td>
</tr></tbody></table></center></div>
</td></tr></tbody></table>
</div></td>
<td></td>
</tr></tbody></table></div>
<!-- -->
<img src="https://open.convertkit-mail2.com/n4ugqg64k3tvhx33q27c6h62wewggilh7dl93" alt="" style="display:block">
</body>
</html>