<!DOCTYPE html>
<html>
<head>
<title>Bytes: Storybook 9 thinks it can change me</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<link href="https://fonts.googleapis.com/css2?family=Fira+Mono&family=Outfit:wght@400;500;700;900&family=Paytone+One" rel="stylesheet">
<style>@media (prefers-color-scheme: dark) {
.email-wrapper {
color: #F9F4DA !important;
background-color: #0F0D0E !important;
}
hr {
border-color: #262422 !important;
}
mark {
background-color: #231F20 !important;
color: #F9F4DA !important;
}
pre {
background-color: #231F20 !important;
border: 1px solid #231F20 !important;
color: #F9F4DA !important;
}
.bg-alt {
background-color: #231F20 !important;
}
.unsubscribe-link {
color: #504C48 !important;
}
.token.punctuation {
color: #f9f4da !important;
}
}
@media screen and (min-width: 600px) {
.mobile-break {
display: none;
}
}</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<table class="email-wrapper" border="0" cellspacing="0" width="100%" style="background-color: #FFF; border-collapse: collapse; color: #231F20; font-family: Outfit, sans-serif; font-size: 16px; width: 100%;"><tbody><tr>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
<td width="600px" style="border-collapse: collapse !important; width: 600px; word-break: normal;"><div style="max-width:600px;padding-top:80px">
<div style="text-align:center"><img width="600" style="max-width: 100%; padding-bottom: 40px;" src="https://bytes.dev/images/bytes-banner-rounded.png" alt="Bytes"></div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Today’s issue:</strong> The React Router Super PAC, JavaScript’s quiet heroes, and the only way to unfreeze React Native’s legacy architecture.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Welcome to <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/wnh2h6uqvvv8v3c7/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvMzk4" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166693">#398</a>.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="80" src="https://bytes.dev/images/content/eyes.png" alt="Eyeballs logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">The Main Thing</h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/knife-laughing.jpg" alt="Old lady from Golden Girls laughing while holding a knife" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">When my manager promises me that I'll learn to love writing unit tests<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Storybook 9 thinks it can change me</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">95% of my career success can be attributed to two things: 1) prescription-strength Monster Energy, and 2) my refusal to write tests under any circumstance.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But the Storybook team is trying to make me question my entire identity with this week’s <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/reh8h9umvvvnv5s2/aHR0cHM6Ly9zdG9yeWJvb2suanMub3JnL2Jsb2cvc3Rvcnlib29rLTkv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166694">Storybook 9</a> launch. They teamed up with Vitest and Playwright to create a new all-in-one testing tool <em>for components</em> that aims to <del>shame all non-testers into submission</del> combine the speed of unit tests with the in-browser fidelity of E2E tests.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And even I have to admit, it looks pretty smooth:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Interaction tests</strong> simulate user behavior like clicks and keypresses in a real browser (via Playwright) to verify that all of your functionality works</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Accessibility tests</strong> can be run across all your stories simultaneously, using <code style="font-size: 14px;">axe-core</code> to catch and fix WCAG violations much faster and earlier than usual</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Visual tests</strong> check for appearance bugs in all your components</p>
</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Storybook 9 now lets you run all of these tests directly in your app with a single click and gives you coverage reports to show you what was actually tested. It’s also 48% smaller than v8 and comes with some fresh framework upgrades for Svelte 5, React Native, and Next.js (now Vite-powered).</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Bottom Line:</strong> I have to admit, this release <em>might</em> be enticing me to give up some of my prejudices towards testing.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But the only way you’ll get me to give up my black-market stimulants is to pry them from my cold, dead-but-still-twitching fingers.</p>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse; margin-top: 40px; text-align: center;"><tbody><tr><td style="border-collapse: collapse !important; padding-top: 12px; word-break: normal;">
<a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/08hwhgu2wwwqwmil/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGMzk4" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1753166695"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/fb-share-icon.png"></a><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/8ghqh3uopppkplbk/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkYzOTg=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1753166696"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/li-share-icon.png"></a><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/vqh3hmuo33383ohg/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9U3Rvcnlib29rJTIwOSUyMHdhbnRzJTIwdG8lMjBoZWxwJTIweW91JTIwdGVzdCUyMHlvdXIlMjBjb21wb25lbnRzJTIwb25jZSUyMGFuZCUyMGZvciUyMGFsbCZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjM5OA==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1753166697"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/tw-share-icon.png"></a><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/l2heh6ulvvvwv6u6/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBU3Rvcnlib29rJTIwOSUyMHdhbnRzJTIwdG8lMjBoZWxwJTIweW91JTIwdGVzdCUyMHlvdXIlMjBjb21wb25lbnRzJTIwb25jZSUyMGFuZCUyMGZvciUyMGFsbCUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkYzOTgmc3ViamVjdD1Zb3UlMjBsaWtlJTIwY29ybmJyZWFkJTNG" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1753166698"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/em-share-icon.png"></a>
</td></tr></tbody></table>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="150" src="https://bytes.dev/images/content/convex-logo.png" alt="Convex logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;"><span>Our Friends <br class="mobile-break">(With Benefits)</span></h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/fates.jpg" alt="The three fates from Hercules" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">The AI agents deciding my app's fate<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/m2h7h6u3000w0ebm/aHR0cHM6Ly9jaGVmLmNvbnZleC5kZXYvP3JlZj1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166699">Chef is the AI agent for <em>*actual*</em> full-stack apps</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Most AI coding agents struggle to build real-world apps – so how is <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/m2h7h6u3000w0ebm/aHR0cHM6Ly9jaGVmLmNvbnZleC5kZXYvP3JlZj1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166699">Chef</a> by Convex able to build a complex chat app like Slack from a single prompt?</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Reason #1:</strong> Convex has <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/dphehmuewwwrwrfm/aHR0cHM6Ly9zdGFjay5jb252ZXguZGV2L2FpLWdlbnRzLWh1bWFucy1nb29kLWFic3RyYWN0aW9ucy8_cmVmPWJ5dGVz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166700">good abstractions</a>, where everything (frontend and backend) is written in pure TypeScript. This allows Chef to generate high-quality, type-safe code that works in one shot.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Reason #2:</strong> Chef uses <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/e0hph0u7www5wmc8/aHR0cHM6Ly93d3cuY29udmV4LmRldi9jb21wb25lbnRzLz9yZWY9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166701">Convex Components</a>, which provide a drop-in microservice that can be plugged into any app.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">So when you prompt Chef to “build a collaborative text editor,” it leverages the <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/7qh7h2u9ppp3pqiz/aHR0cHM6Ly93d3cuY29udmV4LmRldi9jb21wb25lbnRzL3Byb3NlbWlycm9yLXN5bmMvP3JlZj1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166702">Collaborative Text Editor Convex component</a>, saving thousands of lines of code and preventing lots of potential errors.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/m2h7h6u3000w0ebm/aHR0cHM6Ly9jaGVmLmNvbnZleC5kZXYvP3JlZj1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166699">Use it for free</a> – and start building full-stack apps that actually work.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/cool-bits.png" alt="Cool Bits logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Cool Bits</h2>
</div>
<ol>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Angular just launched a new guide to <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/owhkhwuwlll5l9bv/aHR0cHM6Ly9hbmd1bGFyLmRldi9ndWlkZS9yb3V0aW5n" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166703">Angular Router</a> – the official navigation library for Angular that will probably spin out at some point to start a new VC-backed project called Angmix, then merge all of the Angular Router functionality into Angmix, then sell that project to an ecommerce platform, then put all the Angmix functionality back into Angular Router, then make a completely new project that has nothing to do with Angular and call it… Angmix.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/z2hgh7uerrr0rxap/aHR0cHM6Ly9zb2NrZXQuZGV2L2Jsb2cvdGMzOS1hZHZhbmNlcy05LXByb3Bvc2Fscw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166704">TC39 advanced nine JavaScript proposals</a> last week in preparation for Hot Spec Summer<span role="img" aria-label="trade mark">™️</span>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/p8hehqu4555850sq/aHR0cHM6Ly9zZW1ncmVwLmRldi9sb2dpbj91dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166705">Semgrep provides an AI AppSec Engineer</a> that combines static analysis and LLMs to eliminate all false positives – so that security teams and developers only ever deal with real security issues. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">The React Native team has officially <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/x0hph3uedddxdvh5/aHR0cHM6Ly9naXRodWIuY29tL3JlYWN0d2cvcmVhY3QtbmF0aXZlLW5ldy1hcmNoaXRlY3R1cmUvZGlzY3Vzc2lvbnMvMjkw" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166706">frozen the legacy architecture</a>. And the only thing that can unfreeze it is true love’s first kiss.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/e0hph0u7www5wrf8/aHR0cHM6Ly94LmNvbS9hc3Ryb2RvdGJ1aWxkL3N0YXR1cy8xOTMwNjM5NDUyNDkxMTQ1NDU3" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166708">Astro 5.9</a> comes with experimental content security policy support, the ability to render Markdown in content loaders, and more.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/7qh7h2u9ppp3pxhz/aHR0cHM6Ly9yZW1peC5ydW4vYmxvZy9yci1nb3Zlcm5hbmNl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166709">React Router just moved to an open governance model</a>, and if you’ve got strong opinions about nested routes, you should consider joining my Super PAC to make sure your voice gets heard.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/z2hgh7uerrr0rgcp/aHR0cHM6Ly9jb25maWdjYXQuY29tLz91dG1fY2FtcGFpZ249Ynl0ZXNfMjAyNTA2JnV0bV9tZWRpdW09c3BvbnNvciZ1dG1fc291cmNlPWJ5dGVzX25ld3NsZXR0ZXI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166711">ConfigCat</a> is a feature flag service (with a cute cat logo) that helps teams toggle features without redeploying, do gradual rollouts, target specific users, and A/B test new ideas without changing code. It comes with unlimited seats, awesome support, a reasonable price tag, and a <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/p8hehqu45558lktq/aHR0cHM6Ly9jb25maWdjYXQuY29tL3ByaWNpbmcvP3V0bV9jYW1wYWlnbj1ieXRlc18yMDI1MDYmdXRtX21lZGl1bT1zcG9uc29yJnV0bV9zb3VyY2U9Ynl0ZXNfbmV3c2xldHRlcg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166712">Forever Free plan</a>. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Dan Abramov’s comeback tour continues with another blog post on <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/x0hph3uedddxlra5/aHR0cHM6Ly9vdmVycmVhY3RlZC5pby9ob3ctaW1wb3J0cy13b3JrLWluLXJzYy8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166713">how imports work in RSC</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Alex MacArthur wrote about how <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/6qhehoul6660d5bo/aHR0cHM6Ly9tYWNhcnRodXIubWUvcG9zdHMvY3VycmVudC1zY3JpcHQv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166714"><code style="font-size: 14px;">document.currentScript</code> is more useful than I thought</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Tanner Linsley wrote an article called <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/kkhmh2un22243esl/aHR0cHM6Ly90YW5zdGFjay5jb20vYmxvZy9zZWFyY2gtcGFyYW1zLWFyZS1zdGF0ZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1753166715">Search params are state – treat them that way</a>, which is an addendum to another important life lesson: <em>Newsletter writers are society’s quiet heroes – treat them that way.</em></p>
</li>
</ol>
<div style="text-align:center;padding-bottom:80px;padding-top:80px">
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; padding: 24px;"><div style="margin-top:-40px">
<img src="https://bytes.dev/images/bytes-icon.png" alt="Bytes" width="55px" style="max-width: 100%; width: 55px;"><h5 style="font-size:18px;font-weight:400;margin-bottom:24px">Want us to say nice things <br> about your company?</h5>
<div style="margin-bottom:16px"><a style="background-color: #FCBA28; border: 1px solid #231F20; border-radius: 100px; color: #231F20; font-size: 14px; font-weight: 600; padding: 8px 14px; text-decoration: none;" href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/58hvh8ugooolzoc6/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1753166716">Sponsor Bytes</a></div>
<div style="margin-bottom:20px"><a style="color: #FCBA28; font-size: 14px; font-weight: 600; text-decoration: underline;" href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/25h2h9u3000neeb3/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1753166717">or share it</a></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Built with ❤️ by<!-- --> <a style="color: #ed203d; font-weight: 600; text-decoration: underline;" href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/qvh8h8ud222q06ul/aHR0cHM6Ly91aS5kZXY=" url-id="1753166718">ui.dev</a></p>
</div></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; opacity: 0.5; padding-left: 24px; padding-right: 24px;">50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101</p>
<div style="font-family:Papyrus, cursive"><a class="unsubscribe-link" href="https://click.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho/g3hnhwumoooxketr/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1753166719">Unsubscribe from Bytes</a></div>
</div>
</div></td>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
</tr></tbody></table>
<span style="display: none"><a href="https://unsubscribe.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho">Unsubscribe</a></span>
<!-- -->
<img src="https://open.convertkit-mail4.com/o8uqeqor33bqh670w04agiq2mvrrrho" alt="">
</body>
</html>