<!DOCTYPE html>
<html>
<head>
<title>Bytes: Next.js but make it Angular</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> Everything our components know about us, fulfilling the TanStack prophecies, and the least bad outcome for AI.</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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/kkhmh2un6n3pe5tl/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDM4" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620874">#438</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/lock-shock-barrel.jpg" alt="Lock, Shock and Barrel from Nightmare before Christmas looking shocked" 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;">Angular devs seeing modern file-based routing for the first time<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Next.js but make it Angular</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">AnalogJS launched <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/58hvh8ugkgzw00s6/aHR0cHM6Ly9kZXYudG8vYW5hbG9nanMvYW5ub3VuY2luZy1hbmFsb2dqcy0yMC0zNDhk" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620875">v2.0</a> of its fullstack Angular meta-framework on Monday, and I ate 47 fun-sized bags of Nerds Clusters that we had left over from Halloween – so it was a productive day for both of us.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">This release didn’t come with a <em>ton</em> of huge new features, but it does lay some important groundwork with stuff like new content resources, bundle size optimizations, and much better support for various Vite ecosystem tools.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But this major version bump got us thinking about a bigger question: <em>Why do we need Analog at all?</em></p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Unlike React and Vue, Angular already comes with its own built-in approach to SSR, routing, and other metaframework-y features. Shouldn’t this mean we don’t need a <em>Next.js for Angular</em> in the first place?</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Not exactly. Because it turns out there’s still a big difference between features that Angular technically supports, and features that developers actually enjoy using in 2025.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s why Analog stepped in to provide a more modern approach to building full-stack apps, which even the crustiest Angular developer should appreciate:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">File-based routing</strong> – Replaces those giant <code style="font-size: 14px;">app-routing.module.ts</code> files with an intuitive folder-based system that supports layouts, group routes, dynamic routes, static routes, and pathless routes in a way that feels Next-y.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Vite ecosystem</strong> – Angular already uses Vite and esbuild under the hood, but Analog gives you full access to Vite’s plugin system, faster reloads, native ESM, and built-in testing with Vitest.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Modern rendering</strong> – Unifies SSR, SSG, and islands-style hydration into one cohesive setup with a lot less boilerplate.</p>
</li>
</ul>
<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> As Angular keeps modernizing, there’s a chance Analog becomes less necessary over time – but for now, there’s still more than enough Angular clunkiness to keep Analog busy for a while.</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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/25h2h9u343exg0t3/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDM4" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1802620876"><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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/qvh8h8udod03v0tl/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0Mzg=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1802620877"><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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/g3hnhwum6mk2nzfr/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9TWFraW5nJTIwdGhlJTIwY2FzZSUyMGZvciUyMHdoeSUyMHlvdSUyMHNob3VsZCUyMHRyeSUyMHVzaW5nJTIwQW5hbG9nLmpzJTIwMi4wJnVybD1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDM4" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1802620878"><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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/9qhzhdudzdl8xgs9/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBTWFraW5nJTIwdGhlJTIwY2FzZSUyMGZvciUyMHdoeSUyMHlvdSUyMHNob3VsZCUyMHRyeSUyMHVzaW5nJTIwQW5hbG9nLmpzJTIwMi4wJTBBaHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQzOCZzdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0Y=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1802620879"><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/auth0-logo.png" alt="Auth0 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/mike-dying.jpg" alt="Mike from Breaking Bad sitting in a field looking unwell" 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 your app's AI agent exposes user creds for the third time this week<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/3ohphdu343n8r7br/aHR0cHM6Ly9hdXRoMC5jb20vZmVhdHVyZXMvdG9rZW4tdmF1bHQ_dXRtX2NhbXBhaWduPWFtZXJfbmFtZXJfdXNhX2FsbF9jaWFtX2Rldl9kZ19wbGdfYXV0aDBfbmF0aXZlX2J5dGVzX25ld3NsZXR0ZXJfYXVkX2J5dGVzTmV3c2xldHRlcl9EZWMyMDI1X3V0bTImdXRtX2lkPWFOS0taMDAwMDAwMDUwNjRBQSZ1dG1fbWVkaXVtPWNwYyZ1dG1fc291cmNlPWJ5dGVz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620880">Securely connect AI agents to apps and APIs with Auth0 for AI Agents</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">One of the biggest problems facing the AI ecosystem today is security.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s why Auth0 for AI Agents created a complete auth solution that lets you build trustworthy, secure agents with just a few lines of code.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Its <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/3ohphdu343n8r7br/aHR0cHM6Ly9hdXRoMC5jb20vZmVhdHVyZXMvdG9rZW4tdmF1bHQ_dXRtX2NhbXBhaWduPWFtZXJfbmFtZXJfdXNhX2FsbF9jaWFtX2Rldl9kZ19wbGdfYXV0aDBfbmF0aXZlX2J5dGVzX25ld3NsZXR0ZXJfYXVkX2J5dGVzTmV3c2xldHRlcl9EZWMyMDI1X3V0bTImdXRtX2lkPWFOS0taMDAwMDAwMDUwNjRBQSZ1dG1fbWVkaXVtPWNwYyZ1dG1fc291cmNlPWJ5dGVz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620880">Token Vault</a> feature makes it easy to build agents that can call external APIs on behalf of users, without exposing user credentials or juggling refresh tokens.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Instead, it automatically handles authorization requests and securely stores those tokens for you, so your users only need to approve access once. It’s perfect for building secure AI agents that can do things like build a Spotify playlist or create a pull request in GitHub.</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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/3ohphdu343n8r7br/aHR0cHM6Ly9hdXRoMC5jb20vZmVhdHVyZXMvdG9rZW4tdmF1bHQ_dXRtX2NhbXBhaWduPWFtZXJfbmFtZXJfdXNhX2FsbF9jaWFtX2Rldl9kZ19wbGdfYXV0aDBfbmF0aXZlX2J5dGVzX25ld3NsZXR0ZXJfYXVkX2J5dGVzTmV3c2xldHRlcl9EZWMyMDI1X3V0bTImdXRtX2lkPWFOS0taMDAwMDAwMDUwNjRBQSZ1dG1fbWVkaXVtPWNwYyZ1dG1fc291cmNlPWJ5dGVz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620880">Try it out for free today</a> – and start building AI agents you can actually trust.</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/spot-the-bug.png" alt="Spot the Bug logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Spot the Bug</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px">
<h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/48hvh7um6mn396ax/aHR0cHM6Ly9ibG9nLnNlbnRyeS5pby9haS1jb2RlLXJldmlldy0zMGstYnVncy1saWdodGVyLTUwLWZhc3Rlci8_dXRtX2NhbXBhaWduPWFpY29kZXJldmlldy1meTI2cTQtYWljb2RlcmV2aWV3bGF1bmNoJnV0bV9jb250ZW50PW5ld3NsZXR0ZXItMzBrLWJsb2ctbGVhcm5tb3JlJnV0bV9tZWRpdW09cGFpZC1jb21tdW5pdHkmdXRtX3NvdXJjZT1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620882">Sentry</a>
</h4>
<p style="font-family: Outfit, sans-serif; font-size: 16px; line-height: 1.5; margin-top: 5px; padding-left: 24px; padding-right: 24px;"><em>They wrote about how their new <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/48hvh7um6mn396ax/aHR0cHM6Ly9ibG9nLnNlbnRyeS5pby9haS1jb2RlLXJldmlldy0zMGstYnVncy1saWdodGVyLTUwLWZhc3Rlci8_dXRtX2NhbXBhaWduPWFpY29kZXJldmlldy1meTI2cTQtYWljb2RlcmV2aWV3bGF1bmNoJnV0bV9jb250ZW50PW5ld3NsZXR0ZXItMzBrLWJsb2ctbGVhcm5tb3JlJnV0bV9tZWRpdW09cGFpZC1jb21tdW5pdHkmdXRtX3NvdXJjZT1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620882">AI Code Review tool</a> has already caught more than 30,000 bugs, and how they’ve improved its latency by 50% since launch.</em></p>
</div>
</div>
<pre class="language-js" style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; overflow: auto; padding: 24px;"><code class="language-js" style="font-size: 14px;"><span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> <span class="token function-variable function" style="color: #9d7dce; font-size: 14px;">fetchPokemon</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">async</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">id</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> response <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">fetch</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token template-string" style="font-size: 14px;"><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span><span class="token string" style="color: #f99157; font-size: 14px;">https://pokeapi.co/api/v2/pokemon/</span><span class="token interpolation" style="color: #12b5e5; font-size: 14px;"><span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">${</span>id<span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">}</span></span><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span></span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 14px;">!</span>response<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>ok<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">throw</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token template-string" style="font-size: 14px;"><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span><span class="token string" style="color: #f99157; font-size: 14px;">Network response was not ok: </span><span class="token interpolation" style="color: #12b5e5; font-size: 14px;"><span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">${</span>response<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>statusText<span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">}</span></span><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span></span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> data <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> response<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">json</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> data<span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> <span class="token function-variable function" style="color: #9d7dce; font-size: 14px;">getStarterPokemon</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> ids <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token number" style="color: #fcba28; font-size: 14px;">1</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">2</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">3</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">]</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> pokemon <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">]</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
ids<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">forEach</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">async</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">id</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> result <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">fetchPokemon</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>id<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
pokemon<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">push</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>result<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> pokemon
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">getStarterPokemon</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
</code></pre>
<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;">AI has led to <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/wnh2h6uqxq3d4gc7/aHR0cHM6Ly9naXRodWIuYmxvZy9uZXdzLWluc2lnaHRzL29jdG92ZXJzZS9vY3RvdmVyc2UtYS1uZXctZGV2ZWxvcGVyLWpvaW5zLWdpdGh1Yi1ldmVyeS1zZWNvbmQtYXMtYWktbGVhZHMtdHlwZXNjcmlwdC10by0xLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620883">TypeScript becoming the most used language on GitHub</a>. Of all the things AI could lead to, this one is by far one of the least bad.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/8ghqh3uoqox83zck/aHR0cHM6Ly93d3cuY29kZXJhYmJpdC5haS8_ZHViX2lkPVdyMElISkVIaVFHOGJUUTMmdXRtX2NhbXBhaWduPWNsaSZ1dG1fc291cmNlPW5ld3NsZXR0ZXI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620886">CodeRabbit can cut your code review time in half</a>, while catching more bugs than the most annoying senior engineer on your team. It’s the #1 most installed AI app on GitHub for a reason. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/m2h7h6u3m37x9pbm/aHR0cHM6Ly9zdmVsdGVwbG90LmRldi8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620889">SveltePlot (alpha)</a> is a Svelte-native visualization framework that combines the concepts behind <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/e0hph0u7q72ze8t8/aHR0cHM6Ly9vYnNlcnZhYmxlaHEuY29tL3Bsb3Qv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620891">Observable Plot</a> with Svelte’s reactivity.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Adam Argyle wrote this <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/z2hgh7uepe8z7ztp/aHR0cHM6Ly9uZXJkeS5kZXYvY29tcG9uZW50cy1jYW4ta25vdw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620894">list of everything that components know about us</a>, and I for one was surprised how easily it could tell I was an INFJ.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Ryan Skinner shared how <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/x0hph3ue9elmd8s5/aHR0cHM6Ly9yeWFuc2tpbm5lci5jb20vcG9zdHMvdGhlLXJhcmktc3NyLWJyZWFrdGhyb3VnaC0xMngtZmFzdGVyLTEweC1oaWdoZXItdGhyb3VnaHB1dC10aGFuLW5leHRqcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620896">Rari v0.3.0</a> has way faster component rendering than Next.js while maintaining the same DX.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/25h2h9u343ex00u3/aHR0cHM6Ly9hcmt0eXBlLmlvL2RvY3MvYmxvZy9hcmtyZWdleA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620900">ArkRegex</a> is a type-safe, drop-in wrapper of new RegExp(). It offers type-level feedback with no plugins or build steps required.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/n2hohquv6vk45va6/aHR0cHM6Ly9jYXJib25xYS5jb20vP3V0bV9jYW1wYWlnbj1jb29sX2JpdHMmdXRtX2NvbnRlbnQ9bm92NSZ1dG1fbWVkaXVtPWVtYWlsJnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620905">CarbonQA</a> provides high-quality QA services for dev teams, so you’ll never have to waste time testing your own app again. Their US-based testers work in your tools, talk with your team on Slack, and let your devs spend their time building real features. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">TanStack Start + shadcn/ui is now just <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/wnh2h6uqxq3dvgi7/aHR0cHM6Ly94LmNvbS9zaGFkY24vc3RhdHVzLzE5ODUyMzc3NTA0ODkxODI2NTUvcGhvdG8vMQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620907">one command</a>, as the prophecy foretold.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">The DevTools team released <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/8ghqh3uoqox8pzck/aHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9ibG9nL25ldy1pbi1kZXZ0b29scy0xNDI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620910">Chrome 142</a>, rolling out AI code suggestions, enhancements for the DevTools MCP server and the ability to debug full performance traces with Gemini.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/vqh3hmuoeod630sg/aHR0cHM6Ly93d3cuZGF0YWRvZ2hxLmNvbS9lYm9vay9lbnRlcnByaXNlLWRldmVsb3Blci1lbmFibGVtZW50Lz91dG1fY2FtcGFpZ249ZGctY29yZXBsYXRmb3JtLXd3LWRldmVsb3Blci1lbmFibGVtZW50LWJ5dGVzJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzZGV2" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620911">9 Developer Enablement Practices to Achieve DevOps at Enterprise Scale</a> is a free ebook that shares actionable strategies for scaling DevOps teams without sacrificing quality. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Ahmad Alfy wrote about how <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/m2h7h6u3m37x0pcm/aHR0cHM6Ly9hbGZ5LmJsb2cvMjAyNS8xMC8zMS95b3VyLXVybC1pcy15b3VyLXN0YXRlLmh0bWw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620913">your URL is your state</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/e0hph0u7q72zw8u8/aHR0cHM6Ly90dXJib3JlcG8uY29tL2Jsb2cvdHVyYm8tMi02" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620915">Turborepo 2.6</a> comes with vertical microfrontends and stable support for Bun package manager. “Vertical microfrontend” sounds like the name of a Tech-Deck trick I used to win gold in my middle school’s table top X Games. I still wear that medal everywhere I go.</p>
</li>
</ol>
<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/spot-the-bug.png" alt="Spot the Bug logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Spot the Bug: Solution</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px"><h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://click.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/48hvh7um6mn396ax/aHR0cHM6Ly9ibG9nLnNlbnRyeS5pby9haS1jb2RlLXJldmlldy0zMGstYnVncy1saWdodGVyLTUwLWZhc3Rlci8_dXRtX2NhbXBhaWduPWFpY29kZXJldmlldy1meTI2cTQtYWljb2RlcmV2aWV3bGF1bmNoJnV0bV9jb250ZW50PW5ld3NsZXR0ZXItMzBrLWJsb2ctbGVhcm5tb3JlJnV0bV9tZWRpdW09cGFpZC1jb21tdW5pdHkmdXRtX3NvdXJjZT1ieXRlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1802620882">Sentry</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><code style="font-size: 14px;">await</code>-ing inside of a <code style="font-size: 14px;">forEach</code> will only end in pain. There are a few different ways to fix this, but here’s one using a <code style="font-size: 14px;">for of</code> loop.</p>
<pre class="language-js" style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; overflow: auto; padding: 24px;"><code class="language-js" style="font-size: 14px;"><span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> <span class="token function-variable function" style="color: #9d7dce; font-size: 14px;">fetchPokemon</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">async</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">id</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> response <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">fetch</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token template-string" style="font-size: 14px;"><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span><span class="token string" style="color: #f99157; font-size: 14px;">https://pokeapi.co/api/v2/pokemon/</span><span class="token interpolation" style="color: #12b5e5; font-size: 14px;"><span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">${</span>id<span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">}</span></span><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span></span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 14px;">!</span>response<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>ok<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">throw</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Error</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token template-string" style="font-size: 14px;"><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span><span class="token string" style="color: #f99157; font-size: 14px;">Network response was not ok: </span><span class="token interpolation" style="color: #12b5e5; font-size: 14px;"><span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">${</span>response<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>statusText<span class="token interpolation-punctuation punctuation" style="color: #231F20; font-size: 14px;">}</span></span><span class="token template-punctuation string" style="color: #f99157; font-size: 14px;">`</span></span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> data <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> response<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">json</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> data<span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> <span class="token function-variable function" style="color: #9d7dce; font-size: 14px;">getStarterPokemon</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">async</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> ids <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token number" style="color: #fcba28; font-size: 14px;">1</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">2</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">3</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">]</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> pokemon <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">]</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">for</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> id <span class="token keyword" style="color: #f38ba3; font-size: 14px;">of</span> ids<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> result <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">fetchPokemon</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>id<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
pokemon<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">push</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>result<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">return</span> pokemon
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">getStarterPokemon</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span>
</code></pre>
<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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/owhkhwuwgw7el0bv/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1802620917">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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/p8hehqu4g4le5vbq/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1802620919">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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/6qhehoulnld4dkto/aHR0cHM6Ly91aS5kZXY=" url-id="1802620921">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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl/7qh7h2u9w9mem8fz/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1802620923">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.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl">Unsubscribe</a></span>
<!-- -->
<img src="https://open.kit-mail6.com/0vu0e0g2zzb9h9zo73dblhvz8o855fnhnvdl" alt="">
</body>
</html>