<!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/harvey-arm.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/qa-wolf-logo.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/girlrotting.jpg">
<link rel="preload" as="image" href="https://bytes.dev/images/content/spot-the-bug.png">
<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: Smoking that Rspack</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> Evan You’s Eagle Scout project, async’s broken promises, and an AI agent destroying all of a company’s production data (again).</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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/9qhzhdudrzoq86f9/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDgx" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910290">#481</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/harvey-arm.jpg" alt="Steve Harvey looking at a guy touching his arm" 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;">Me noticing webpack@4 in my lockfile<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Smoking that Rspack</h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/3ohphdu3g4eo8rhr/aHR0cHM6Ly9yc3BhY2sucnMvYmxvZy9hbm5vdW5jaW5nLTItMA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910291">Rspack 2.0</a> shipped last week with a bold new vision to become more than “just a faster webpack.”</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And that’s an interesting shift for a project whose sole branding for the past two years has been: “we are a faster webpack.”</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But it makes sense. Rspack’s initial pitch was that its Rust-based build tool would provide a 10x faster version of webpack that was still compatible with the webpack API and ecosystem. And since launching v1.0 in Aug 2024, they’ve implemented all of webpack’s core capabilities and plugin APIs, added modern features like incremental builds and persistent cache, and seen their npm downloads grow from 100k to 5 million per week.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">So Rspack 2.0 is about finding new mountains to climb beyond webpack-land, by introducing defaults, API design, and build outputs that are “better aligned with modern JavaScript development” and come with first-class support for agents.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Here’s what that looks like in this release:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">More perf upgrades.</strong> Builds are ~10% faster than v1.7 and ~2x faster than 1.0. With persistent cache enabled, the SWC minimizer now caches hits for another ~50% speedup, and memory usage drops by 20%. And <code style="font-size: 15px;">@rspack/dev-server</code> went from 192 npm dependencies to 1.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Grown-up ESM support.</strong> Rspack’s core packages are now pure ESM. You also get proper <code style="font-size: 15px;">import.meta</code> handling, <code style="font-size: 15px;">import defer</code> support, and a new <code style="font-size: 15px;">modern-module</code> output type for library builds that produces output downstream tools can actually tree shake.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Smarter tree shaking.</strong> CommonJS destructuring, inline dynamic <code style="font-size: 15px;">import()</code> access, and Module Federation shared dependencies are all properly analyzed and pruned now. There’s also experimental support for the <code style="font-size: 15px;">#__NO_SIDE_EFFECTS__</code> compiler annotation, so you can mark functions as side-effect-free and let the bundler clean up after you.</p>
</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> Rspack has spent the last two years earning webpack developers’ trust by not breaking anything. Now it’s using that credibility to add new features and expand beyond the webpack ecosystem into a more general JS toolchain with packages like Rslib, Rsbuild and Rsdoctor.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And since the world cares less about webpack than ever, that’s probably a smart move.</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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/n2hohquv06z845s6/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDgx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1850910292"><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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/48hvh7um86453ntx/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0ODE=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1850910293"><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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/wnh2h6uq6xe5dob7/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9QnJlYWtpbmclMjBkb3duJTIwdGhlJTIwZnV0dXJlJTIwb2YlMjBSc3BhY2slMjBpbiUyMGElMjB3b3JsZCUyMHRoYXQlMjBjYXJlcyUyMGxlc3MlMjBhbmQlMjBsZXNzJTIwYWJvdXQlMjB3ZWJwYWNrJnVybD1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDgx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1850910294"><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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/reh8h9umzwg2pqs2/bWFpbHRvOj9zdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0YmYm9keT1UaG91Z2h0JTIweW91JTI3ZCUyMGxvdmUlMjB0aGlzJTIwd2VlayUyN3MlMjBCeXRlcyUwQS0tLSUwQUJyZWFraW5nJTIwZG93biUyMHRoZSUyMGZ1dHVyZSUyMG9mJTIwUnNwYWNrJTIwaW4lMjBhJTIwd29ybGQlMjB0aGF0JTIwY2FyZXMlMjBsZXNzJTIwYW5kJTIwbGVzcyUyMGFib3V0JTIwd2VicGFjayUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0ODE=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1850910295"><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/qa-wolf-logo.png" alt="QA Wolf 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/girlrotting.jpg" alt="Martin Scorsese lying on a bed" 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;">When it takes longer to test the code than to write the code<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/8ghqh3uonqm08ohk/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9zZWUtaXQtaW4tYWN0aW9uLWFpLXBvd2VyZWQtcWEtZm9yLWRhaWx5LXJlbGVhc2VzL3JlZ2lzdHJhdGlvbj91dG1fc291cmNlPWJ5dGVzJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX0RlbWluYXJfMjAyNjA0MjctTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV90ZXJtPWhlYWRsaW5lLUhvd1RvU2V0VXBBSVBvd2VyZWRRQUZvckRhaWx5UmVsZWFzZXNGcmVlV2ViaW5hciZ1dG1fY29udGVudD1EZW1pbmFyX1JTVlBIZXJlU29Zb3VyVGVhbUNhblNoaXBDbGVhbmVyQ29kZUZhc3Rlcl9Ob25lX0hlYWRsaW5lJTNBSG93VG9TZXRVcEFJUG93ZXJlZFFBRm9yRGFpbHlSZWxlYXNlc0ZyZWVXZWJpbmFyX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI2MDQyN192MV8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910297">How to set up AI-powered QA for daily releases - free webinar</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Your engineers are writing code and opening PRs faster than ever, but none of it matters if your QA is still the bottleneck.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Join QA Wolf co-founder & CEO Jon Perl for a <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/vqh3hmuorezx6eug/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9zZWUtaXQtaW4tYWN0aW9uLWFpLXBvd2VyZWQtcWEtZm9yLWRhaWx5LXJlbGVhc2VzL3JlZ2lzdHJhdGlvbj91dG1fc291cmNlPWJ5dGVzJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX0RlbWluYXJfMjAyNjA0MjctTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV90ZXJtPWJvZHktTGl2ZVdlYmluYXImdXRtX2NvbnRlbnQ9RGVtaW5hcl9SU1ZQSGVyZVNvWW91clRlYW1DYW5TaGlwQ2xlYW5lckNvZGVGYXN0ZXJfTm9uZV9IZWFkbGluZSUzQUhvd1RvU2V0VXBBSVBvd2VyZWRRQUZvckRhaWx5UmVsZWFzZXNGcmVlV2ViaW5hcl9fX19OZXdzbGV0dGVyLVByaW1hcnlQbGFjZW1lbnRfMjAyNjA0MjdfdjFf" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910298">live webinar</a> to see how QA Wolf’s AI-powered testing platform equips teams for an AI-native SDLC.</p>
<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;">You’ll see how QA Wolf:</strong></p>
<ul>
<li>Autonomously maps your app’s workflows (on web and mobile)</li>
<li>Generates deterministic, code-based tests</li>
<li>Runs your full test suite in parallel in minutes</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/l2heh6ul7680prb6/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9zZWUtaXQtaW4tYWN0aW9uLWFpLXBvd2VyZWQtcWEtZm9yLWRhaWx5LXJlbGVhc2VzL3JlZ2lzdHJhdGlvbj91dG1fc291cmNlPWJ5dGVzJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX0RlbWluYXJfMjAyNjA0MjctTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV90ZXJtPWN0YS1SU1ZQSGVyZSZ1dG1fY29udGVudD1EZW1pbmFyX1JTVlBIZXJlU29Zb3VyVGVhbUNhblNoaXBDbGVhbmVyQ29kZUZhc3Rlcl9Ob25lX0hlYWRsaW5lJTNBSG93VG9TZXRVcEFJUG93ZXJlZFFBRm9yRGFpbHlSZWxlYXNlc0ZyZWVXZWJpbmFyX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI2MDQyN192MV8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910299">RSVP here</a> - so your team can ship cleaner code, faster.</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: 20px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/m2h7h6u3zmdgxwhm/aHR0cHM6Ly9mYW5kZi5jby80Y3NOT0Mz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910300">Depot</a>
</h4>
<p style="font-family: Outfit, sans-serif; font-size: 18px; line-height: 1.5; margin-top: 5px; padding-left: 24px; padding-right: 24px;"><em>One of their engineers wrote about <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/m2h7h6u3zmdgxwhm/aHR0cHM6Ly9mYW5kZi5jby80Y3NOT0Mz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910300">The end of push-wait-guess CI</a> and how Depot lets you run workflows against local uncommitted changes, inspect status and logs, and SSH directly into the runner.</em></p>
</div>
</div>
<pre class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; overflow: auto; padding: 24px; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><code class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> petName <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token string" style="color: #f99157; font-size: 15px;">'Leo'</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> placeholder <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token string" style="color: #f99157; font-size: 15px;">'{NAME}'</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> reminderTemplate <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token string" style="color: #f99157; font-size: 15px;">'{NAME} is due for another visit. Please call us so we can set up a new appointment. We look forward to seeing you and {NAME} soon.'</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> reminder <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> reminderTemplate<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">replace</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>placeholder<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> petName<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</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: 19px; line-height: 1.5;">Deno just launched <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/dphehmuen8l4xdhm/aHR0cHM6Ly9kZW5vLmNvbS9ibG9nL2ZyZXNoLTIuMw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910301">Fresh 2.3</a> with View Transitions and zero JavaScript by default (but for real this time).</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Mat Marquis has been waiting 14 years to write this article about <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/e0hph0u7oq8pz6a8/aHR0cHM6Ly9waWNjYWxpbC5saS9ibG9nL3RoZS1lbmQtb2YtcmVzcG9uc2l2ZS1pbWFnZXMv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910302">the end of responsive images</a>. I’ve been waiting 14 years to go back to the dentist, so I get it.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">He helped React take over the web… and he just joined Expo. Check out this blog post from Seth Webster about <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/7qh7h2u95wrkelfz/aHR0cHM6Ly90cnkuZXhwby5kZXYvc2V0aA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910303">what he thinks Expo will become</a>. [sponsored]</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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/owhkhwuwdg2kedsv/aHR0cHM6Ly9hbmltYXRhLmRlc2lnbi8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910304">Animata</a> is a collection of 158+ animated React components you can copy into any project.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">The VoidZero team wrote about <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/z2hgh7uexpq4zvtp/aHR0cHM6Ly92b2lkemVyby5kZXYvcG9zdHMvb3hjLWFuZ3VsYXItY29tcGlsZXI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910305">how they made the Angular compiler 20x faster using AI</a>. And apparently the whole thing was part of Evan You’s Eagle Scout project.</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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/p8hehqu4ogn3ewhq/aHR0cHM6Ly9zbGFjay5jb20vZmVhdHVyZXMvc2xhY2tib3QvZGVtby1zbGFja2JvdA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910306">Slackbot demo</a> - Meet the AI agent built right into Slack. Ask questions, automate tasks, and get answers grounded in your team’s actual context. No extra tools, no tab switching, no setup required. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Arkar Min Aung wrote a surprisingly interesting and interactive article about <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/x0hph3ue095rm5s5/aHR0cHM6Ly9hcmthdW5nLmdpdGh1Yi5pby9pbnRlcmFjdGl2ZS10dXJib3F1YW50Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910307">compressing AI vectors to 2–4 bits per number without losing accuracy</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Josh Segall wrote a good breakdown of <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/6qhehoulenmk49bo/aHR0cHM6Ly9jYXVzYWxpdHkuYmxvZy9lc3NheXMvd2hhdC1hc3luYy1wcm9taXNlZC8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910308">what async promised vs what it delivered</a>. But maybe the real async was the friends we made along the way.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Build dynamic forms that work your way. With SurveyJS, you get a <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/e0hph0u7oq8pzdc8/aHR0cHM6Ly9zdXJ2ZXlqcy5pby8_dXRtX3NvdXJjZT1ieXRlcyZ1dG1fbWVkaXVtPWVtYWls" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910309">fully customizable JavaScript form builder</a> that integrates seamlessly with any backend—no vendor lock-in or usage limits. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">The Chrome team released <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/7qh7h2u95wrkeeuz/aHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kb2NzL2FpL3Byb21wdC1hcGk=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910310">The Prompt API</a>, which lets you send natural language requests to Gemini Nano in the browser. Another daily reminder that I should’ve bought more Google stock.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">muffin wrote about <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/owhkhwuwdg2keztv/aHR0cHM6Ly9tdWZmaW4uaW5rL2Jsb2cvc2NyYXRjaC1zdmctc2FuaXRpemF0aW9uLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910311">the woes of sanitizing SVGs</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Jer Crane wrote a Twitter article about how <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/z2hgh7uexpq4g9ip/aHR0cHM6Ly94LmNvbS9saWZlb2ZfamVyL3N0YXR1cy8yMDQ4MTAzNDcxMDE5NDM0MjQ4" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910312">an AI agent just destroyed our production data</a>. Dario is willing to concede that software engineers will maybe have jobs for another two weeks now.</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: 20px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/m2h7h6u3zmdgxwhm/aHR0cHM6Ly9mYW5kZi5jby80Y3NOT0Mz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1850910300">Depot</a>
</h4></div>
</div>
<pre class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; overflow: auto; padding: 24px; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><code class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> petName <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token string" style="color: #f99157; font-size: 15px;">'Leo'</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> placeholder <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token string" style="color: #f99157; font-size: 15px;">'{NAME}'</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> reminderTemplate <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token string" style="color: #f99157; font-size: 15px;">'{NAME} is due for another visit. Please call us so we can set up a new appointment. We look forward to seeing you and {NAME} soon.'</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> reminder <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> reminderTemplate<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">replaceAll</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>placeholder<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> petName<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</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://c5e21242.click.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/p8hehqu4ogn3v3aq/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1850910313">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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/x0hph3ue095rgpt5/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1850910314">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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/6qhehoulenmkqwso/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1850910315">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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6/58hvh8ug2krvezh6/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1850910317">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/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.convertkit-mail.com/mvu0g06rqqb5hqzxq4pamhrxkqp0qi3hekq6" alt="">
</body>
</html>