<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="image" href="https://bytes.dev/images/bytes-banner-rounded.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/eyes.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/succession-headphones.jpg">
<link rel="preload" as="image" href="https://bytes.dev/images/fb-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/li-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/tw-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/em-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/apify-logo.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/christmas-tree-fire.jpg">
<link rel="preload" as="image" href="https://bytes.dev/images/content/cool-bits.png">
<link rel="preload" as="image" href="https://bytes.dev/images/bytes-icon.png">
<title>Bytes: React Router gets another major</title>
<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: 18px; 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: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Today’s issue:</strong> Remembering my SAT prep, some promotion-driven development, and why James Clear might be responsible for the robot uprising.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Welcome to <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/qvh8h8udmwq7zlalhk/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNTAx" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397477">#501</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/succession-headphones.jpg" alt="Kendall Roy from Succession wearing headphones" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 17px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">Using React Router to regulate my emotions<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">React Router gets another major</h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Some people drink, some people smoke, but for me, the vice I can’t seem to quit is writing about React Router. They dropped <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/wnh2h6uq278574h7hx/aHR0cHM6Ly9yZW1peC5ydW4vYmxvZy9yZWFjdC1yb3V0ZXItdjg=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397483">a major release</a> a couple of weeks ago, but I was too busy cosplaying as a soccer fan. However, after what happened yesterday, I need a distraction.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">When you’ve been around for as long as React Router has, the major versions start to get a little bit more boring. This is especially true since the project introduced <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/08hwhgu26eqoekflh5/aHR0cHM6Ly9yZW1peC5ydW4vYmxvZy9mdXR1cmUtZmxhZ3M=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397485">“future flags”</a> back in 2023 that let developers opt into new features incrementally without needing to do large rewrites when bigger changes landed.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That being said, this release <em>does</em> have a number of new features, future flags that are now enabled by default, and a few small breaking changes.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Here are a few of the interesting ones:</p>
<ul>
<li>
<strong style="font-weight: 600;">RSC (unstable):</strong> React Server Components have been in the works for several years now, and they are nearing their final form. You can return React elements from a <code style="font-size: 15px;">loader</code> or <code style="font-size: 15px;">action</code>, export a server component from a route, or use <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/8ghqh3uo6dk0d5hkh9/aHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vaG93LXRvL3JlYWN0LXNlcnZlci1jb21wb25lbnRzI3JzYy1kYXRhLW1vZGU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397486">“RSC Data Mode”</a> to create your own abstraction for how to use it.</li>
<li>
<strong style="font-weight: 600;"><code style="font-size: 15px;">useRouterState</code> (unstable):</strong> This new hook consolidates many of the disparate hooks (<code style="font-size: 15px;">useLocation</code>, <code style="font-size: 15px;">useParams</code>, <code style="font-size: 15px;">useNavigation</code>, etc.) you needed to get data from your route into a single source of truth.</li>
<li>
<strong style="font-weight: 600;">Agent skills:</strong> For new projects, when you use <code style="font-size: 15px;">create-react-router</code>, you’ll get prompted to add an agent skill to the project. If you have an existing RR project, you can teach your cl*nker the way of the router <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/vqh3hmuo908x0nughl/aHR0cHM6Ly9naXRodWIuY29tL3JlbWl4LXJ1bi9yZWFjdC1yb3V0ZXIvdHJlZS9tYWluLy5hZ2VudHMvc2tpbGxzL3JlYWN0LXJvdXRlcg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397487">here</a>.</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Bottom Line:</strong> At this stage in the game, the fact that React Router is still actively maintained is probably more exciting than any of the new features, especially considering that half the Remix team is off on another side quest. And maybe it’s nostalgia or I am just down bad from Team USA’s performance last night, but a lil fix of React Router this morning was kinda nice.</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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/m2h7h6u365wg53hmhq/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTAx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1868397489"><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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/dphehmue96r468cmh4/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY1MDE=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1868397490"><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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/e0hph0u73v5pv4t8h2/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9UmVhY3QlMjBSb3V0ZXIlMjB2OCUyMGFkZHMlMjBSU0MlMjBzdXBwb3J0JTJDJTIwY29uc29saWRhdGVkJTIwcm91dGUlMjBzdGF0ZSUyQyUyMGFuZCUyMGFnZW50JTIwc2tpbGxzLiZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjUwMQ==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1868397491"><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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/7qh7h2u92l3kl3fzh6/bWFpbHRvOj9zdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0YmYm9keT1UaG91Z2h0JTIweW91JTI3ZCUyMGxvdmUlMjB0aGlzJTIwd2VlayUyN3MlMjBCeXRlcyUwQS0tLSUwQVJlYWN0JTIwUm91dGVyJTIwdjglMjBhZGRzJTIwUlNDJTIwc3VwcG9ydCUyQyUyMGNvbnNvbGlkYXRlZCUyMHJvdXRlJTIwc3RhdGUlMkMlMjBhbmQlMjBhZ2VudCUyMHNraWxscy4lMEFodHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTAx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1868397492"><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/apify-logo.png" alt="Apify 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/christmas-tree-fire.jpg" alt="A Christmas tree on fire" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 17px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">Watching your agent burn tokens trying to search the web<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/owhkhwuwm95k9xtvhr/aHR0cHM6Ly9tY3AuYXBpZnkuY29tLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397493">Let your agent search the web without going bankrupt</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">AI agents are smart, but they fail at automating the web at scale. Ask them to fetch live prices and product details for thousands of SKUs on Amazon and watch them burn through millions of tokens. Stop tokenmaxxing on problems that have already been solved, and give your agent access to the largest marketplace of web automation tools at <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/owhkhwuwm95k9xtvhr/aHR0cHM6Ly9tY3AuYXBpZnkuY29tLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397493">mcp.apify.com</a>.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/z2hgh7ue26046nhph0/aHR0cHM6Ly9kb2NzLmFwaWZ5LmNvbS9pbnRlZ3JhdGlvbnMvbWNw" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397494">Apify MCP Server</a> connects Claude, Codex, Cursor, or any other agent to thousands of trusted tools (they call them Actors) for search, full-site crawling, headless browsers, and pulling live data from social, maps, local business, e-commerce, travel & hospitality, and much more.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Looking to get something done on the web? <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/owhkhwuwm95k9xtvhr/aHR0cHM6Ly9tY3AuYXBpZnkuY29tLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397493">There’s an Actor for that</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="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: 19px; line-height: 1.5;">Lilian Weng wrote about <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/p8hehqu4w68366fqh3/aHR0cHM6Ly9saWxpYW53ZW5nLmdpdGh1Yi5pby9wb3N0cy8yMDI2LTA3LTA0LWhhcm5lc3Mv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397495">harness engineering for self-improvement</a>. Basically, you just let your agent read <em>Atomic Habits</em> and hold on for dear life.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/x0hph3uev2xr20i5hl/aHR0cHM6Ly92ZXJjZWwuY29tL2Jsb2cvdmVyY2VsLWFjcXVpcmVzLWJldHRlci1hdXRo" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397496">Better Auth was acquired by Vercel</a>, adding to the list of VC-backed open-source projects that found a “soft landing.”</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Unlayer built <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/6qhehoul8r0krgbohk/aHR0cHM6Ly9naXRodWIuY29tL3VubGF5ZXIvZWxlbWVudHM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397497">a React component library</a> that can render the same component tree to the web, an email, or a PDF. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Geoffrey Litt gave a talk about how <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/kkhmh2un0w4dw0slh7/aHR0cHM6Ly93d3cuZ2VvZmZyZXlsaXR0LmNvbS8yMDI2LzA3LzAyL3VuZGVyc3RhbmRpbmctaXMtdGhlLW5ldy1ib3R0bGVuZWNrLmh0bWw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397498">understanding is the new bottleneck</a> for agentic coding. The strategies he describes seem an awful lot like what I used to score an 1120 on my SAT.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Cameron Brodie wrote about designing <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/58hvh8ugdxlvxrb6h4/aHR0cHM6Ly9ibG9nLmdza2lubmVyLmNvbS9hcmNoaXZlcy8yMDI2LzA2L2Rlc2lnbmluZy1mb3ItZ2VudWktd2hhdC1jaGFuZ2VzLXdoZW4tYWktYnVpbGRzLXRoZS11aS5odG1s" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397499">GenUI, a framework that AI can use to generate UI on demand</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Ryan George whipped up <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/25h2h9u3p9nv9mi3h4/aHR0cHM6Ly93d3cuZW52LnN0eWxlLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397500">a project called <code style="font-size: 15px;">env.style</code></a> to change your project’s favicon color based on what environment it’s in. If you need this, it’s probably time to close a few tabs.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Sentry wrote a post on <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/g3hnhwum89xd92brh9/aHR0cHM6Ly9ibG9nLnNlbnRyeS5pby9uZXh0anMtZXhwb3J0LXRyYWNlcy1vcGVudGVsZW1ldHJ5Lz91dG1fc291cmNlPWJ5dGVzJnV0bV9tZWRpdW09cGFpZC1jb21tdW5pdHkmdXRtX2NhbXBhaWduPW5leHRqcy1meTI3cTItZXZlcmdyZWVuJnV0bV9jb250ZW50PW5ld3NsZXR0ZXItc2Vjb25kYXJ5LXRyYWNlcy1vdGVsLWJsb2ctbGVhcm5tb3Jl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397502">how to export your traces from Next.js to OpenTelemetry</a>. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Google created a <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/3ohphdu35mvog6srhn/aHR0cHM6Ly9vc3YuZGV2Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397504">database for open-source vulnerabilities</a>. I hope whoever created this project impressed the committee and got their promotion. #impact</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">I struggled to read some of the words that Kyle Matthews used in his latest essay about <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/n2hohquv9qe808f6hg/aHR0cHM6Ly9icmljb2xhZ2UuaW8vYXBwcy1hZnRlci1hZ2VudHMv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397505">why we still need apps in the age of agents</a>. Is 1120 not a good SAT score?</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Convex made a <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/48hvh7umdlk58pfxh7/aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_dj1zai1ReGpaamNWMCZ0PTI5NnM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397506">video comparing how Claude Code and Codex performed</a> trying to build a secure full-stack app. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">The WebKit team jumped on the bandwagon and added <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/wnh2h6uq278564a7hx/aHR0cHM6Ly93ZWJraXQub3JnL2Jsb2cvMTgxMzYvaW50cm9kdWNpbmctdGhlLXNhZmFyaS1tY3Atc2VydmVyLWZvci13ZWItZGV2ZWxvcGVycy8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397507">support for WebMCP in Safari</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Steve Krouse wrote about <a href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/reh8h9umldn2zvc2h6/aHR0cHM6Ly9zdGV2ZWtyb3VzZS5jb20vbGVhcm4tdG8tY29kZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1868397508">why you should still learn to code</a> even though AI can do it for you. It’s a similar reason to why I taught all my kids how to draw the Stüssy S.</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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/8ghqh3uo6dk0n5skh9/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1868397510">Sponsor Bytes</a></div>
<div style="margin-bottom:20px"><a style="color: #FCBA28; font-size: 14px; font-weight: 600; text-decoration: underline;" href="https://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/vqh3hmuo908xrnaghl/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1868397511">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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/l2heh6ulm2w073i6h0/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1868397512">Fireship</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://c5e21242.click.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26/m2h7h6u365wgz3smhq/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1868397513">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://c5e21242.unsubscribe.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.convertkit-mail.com/r8u3l3erqqhoh3g44z8i2hd09gwggc7h4n26" alt="">
</body>
</html>