<!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/breakup-guy.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/coderabbit-logo.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/timmy-praying.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: Cursor dumps Solid, birthday ruined</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> The token mafia, the CSS bomb, and why all the cool kids can’t stop “gisting.”</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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/25h2h9u3mr5ro6c3h4/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNTEz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497374">#513</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/breakup-guy.jpg" alt="Closeup of guy crying with broken heart emoji" 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;">You cheated on me? When I specifically asked you not to?<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Cursor dumps Solid, birthday ruined</h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Remember when your ninth-grade girlfriend who went to another school broke up with you on AIM the day before your 15th birthday party?</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s basically what happened to Solid.js last week when they released <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/g3hnhwumq7v7zwurh9/aHR0cHM6Ly93d3cuc29saWRqcy5jb20vYmxvZy9zb2xpZC0yLTAtcmMtdGhlLWJpZy1yZXZlYWw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497376">Solid 2.0 RC</a>, the biggest rework in the framework’s history.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Cursor engineer (and former React Core Team member) Lauren Tan warmly congratulated them on the big launch… then simultaneously confirmed the rumors that Cursor had <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/9qhzhdud5k7k2mh9h3/aHR0cHM6Ly94LmNvbS9wb3RldG8vc3RhdHVzLzIwODkyMjc3MzEzMDU0NjQxNTA=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497377">migrated</a> off Solid and onto React <span role="img" aria-label="broken heart">💔</span>.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">She gave a few nuanced reasons for the breakup like Signals-based perf footguns, but you can probably guess the TLDR: coding agents are better and more predictable at writing React, especially in complex codebases.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s understandable but still a bummer because Solid 2.0 introduces a lot of cool stuff:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Async is now first-class.</strong> Computations can return Promises or async iterators and the reactive graph handles suspending and resuming automatically. You can pass a Promise straight into <code style="font-size: 15px;">createMemo</code> and everything downstream understands.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;"><code style="font-size: 15px;"><Suspense></code> is dead.</strong> Its replacement <code style="font-size: 15px;"><Loading></code> only covers first render, while <code style="font-size: 15px;">isPending()</code> tracks refreshes in the background, so your UI stops getting nuked back to a spinner every time data revalidates.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Mutations have a home.</strong> <code style="font-size: 15px;">action()</code> plus new optimistic primitives like <code style="font-size: 15px;">createOptimisticStore</code> collapse the full optimistic-update dance into one flow, so you don’t need to write it from scratch like a neanderthal.</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> Nobody gets fired for <del>buying IBM</del> <em>making the agents use React.</em> But Solid 2.0 is betting that if it can absorb all the async complexity for you, there will be less for your agents to screw up in the first place.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And maybe that’ll be enough for you to give it a try.</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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/3ohphdu3p6w6d5hrhn/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTEz" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1879497378"><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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/n2hohquv7wdwozc6hg/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY1MTM=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1879497379"><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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/48hvh7umxzoz2xcxh7/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9U29saWQlMjAyLjAlMjBpcyUyMGElMjBiaWclMjBkZWFsJTJDJTIwZXZlbiUyMHRob3VnaCUyMEN1cnNvciUyMGJhaWxlZCZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjUxMw==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1879497380"><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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/wnh2h6uq09z9olu7hx/bWFpbHRvOj9zdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0YmYm9keT1UaG91Z2h0JTIweW91JTI3ZCUyMGxvdmUlMjB0aGlzJTIwd2VlayUyN3MlMjBCeXRlcyUwQS0tLSUwQVNvbGlkJTIwMi4wJTIwaXMlMjBhJTIwYmlnJTIwZGVhbCUyQyUyMGV2ZW4lMjB0aG91Z2glMjBDdXJzb3IlMjBiYWlsZWQlMEFodHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTEz" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1879497381"><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/coderabbit-logo.png" alt="CodeRabbit 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/timmy-praying.jpg" alt="Timmy Turner praying at his 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;">Me right before I merge 3,000 LOC I've barely read<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/08hwhgu2l08078clh5/aHR0cHM6Ly9jb2RlcmFiYml0LmxpbmsvYWQtYnl0ZXMtMDEw" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497383">CodeRabbit saves you from getting pwned now</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">They just launched <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/08hwhgu2l08078clh5/aHR0cHM6Ly9jb2RlcmFiYml0LmxpbmsvYWQtYnl0ZXMtMDEw" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497383">CodeRabbit Security</a> to give you continuous code security that’s powered by actual reasoning instead of brittle regex rules.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Their security agents are able to think like an AI-driven attacker and hunt for real vulnerabilities across your entire codebase. Then they:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Prioritize</strong> real risks based on exploitability and blast radius, instead of spamming you with false positives.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Explain</strong> the problems in plain English.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Secure</strong> your code with drafted fixes ranked by risk, right in the PR. All you have to do is merge.</p>
</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">It runs a security review on every PR before merge, plus scheduled deep scans across your full codebase.</p>
<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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/08hwhgu2l08078clh5/aHR0cHM6Ly9jb2RlcmFiYml0LmxpbmsvYWQtYnl0ZXMtMDEw" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497383">Get 10 free code scans to try it out</a> and see why Jensen Huang said, “We’re using CodeRabbit all over NVIDIA.”</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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/vqh3hmuow252nxughl/aHR0cHM6Ly9haS1kZXZjcmFmdC5jb20vP3V0bV9zb3VyY2U9Ynl0ZXMmdXRtX21lZGl1bT1wYWlkX2FkJnV0bV9jYW1wYWlnbj1haV9kZXZfY3JhZnQ=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497385">Ai Dev Craft Conference</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>Want to become the AI expert on your team? Come to Vegas this October and learn specific tools and workflows from top developers to ship better code faster with AI. <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/vqh3hmuow252nxughl/aHR0cHM6Ly9haS1kZXZjcmFmdC5jb20vP3V0bV9zb3VyY2U9Ynl0ZXMmdXRtX21lZGl1bT1wYWlkX2FkJnV0bV9jYW1wYWlnbj1haV9kZXZfY3JhZnQ=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497385">Register now</a>.</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;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">getNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 15px;">Promise</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">resolve<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> reject</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> randomNumber <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> Math<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">random</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>randomNumber <span class="token operator" style="color: #12b5e5; font-size: 15px;">></span> <span class="token number" style="color: #fcba28; font-size: 15px;">0.5</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">resolve</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>randomNumber<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">else</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">reject</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"Number is too low"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1000</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">async</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">printNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> number <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">getNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"The number is:"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> number<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">printNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><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;">The Lovable team wrote about <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/l2heh6ulx5g5onb6h0/aHR0cHM6Ly9sb3ZhYmxlLmRldi9ibG9nL2hvdy13ZS1taWdyYXRlZC1sb3ZhYmxlLWRldi1hd2F5LWZyb20tbmV4dGpz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497386">how they migrated lovable.dev off Next.js and onto TanStack Start</a>. Because apparently the only thing coding agents like more than purple gradients is stirring up framework drama.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Matt Lenhard wrote about <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/m2h7h6u34krko9hmhq/aHR0cHM6Ly92ZWN0b3JhbC5jb20vYmxvZy93aG8tYXJlLXRoZS10b2tlbi1icm9rZXJz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497387">the token brokers</a> who are making a spread from selling tens of millions of LLM tokens from discounted offers. No, we are definitely not in an AI bubble, why do you ask?</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Only idiots write manual tests – modern engineering teams like Notion, Dropbox and LaunchDarkly use Meticulous to maintain e2e UI tests that <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/dphehmuepz3zqwumh4/aHR0cHM6Ly93d3cubWV0aWN1bG91cy5haS8_dXRtX3NvdXJjZT1ieXRlcyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX2NhbXBhaWduPTI2cTMmdXRtX2NvbnRlbnQ9c2Vjb25kYXJ5" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497388">cover every edge case of your web app</a>. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Tyler Sticka shared a nice little example for using <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/e0hph0u7r9x9k2c8h2/aHR0cHM6Ly90eWxlcnN0aWNrYS5jb20vam91cm5hbC9pbXByb3ZlZC1jc3MtdGV4dC1zdHJva2Uv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497389">the <code style="font-size: 15px;">paint-order</code> property in CSS</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Right on cue, Gareth Heyes wrote about how CSS is <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/7qh7h2u9nvgv04fzh6/aHR0cHM6Ly9wb3J0c3dpZ2dlci5uZXQvcmVzZWFyY2gvY3NzLXRoZS1ib21iLWluc2lkZS15b3VyLWluYm94" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497390">the bomb inside your inbox</a> that’s ripe for exploitation by attackers. That’s why I chose to never get good at CSS. Too risky.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">The Expo team shared <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/owhkhwuwq3z344fvhr/aHR0cHM6Ly90cnkuZXhwby5kZXYvb3RhLWJlc3QtcHJhY3RpY2Vz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497391">5 OTA Update best practices for React Native teams</a> that might just save your a** the next time you ship a bug to prod. It’s how NYC’s transit app was able to go from a major bug report to a deployed fix in under 90 seconds. [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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/z2hgh7uel9g9o3cph0/aHR0cHM6Ly9wbnBtLmlvL2Jsb2cvd2hhdHMtZGlmZmVyZW50LWluLXBucG0tMTI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497392">pnpm 12 RC</a> just came out, and the headline feature is that it’s now written in Rust. Zig team: you have 24 hours to respond.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Dave Rupert created <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/p8hehqu4qkvk94fqh3/aHR0cHM6Ly9kYXZlcnVwZXJ0LmNvbS8yMDI2LzA4L21pY3JvbGlnaHRlci8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497393">MicroLighter</a>, a small client-side syntax highlighter that uses the CSS Custom Highlights API.</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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/6qhehoul9vqvpobohk/aHR0cHM6Ly9uZXdzLmNvbnZleC5kZXYvY29udmV4LXJhaXNlcy01N20v" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497395">Convex just raised a $57m Series B</a> to keep building the best reactive backend platform for you (and your agents). And it’s all 100% organic TypeScript. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Shawn Walton wrote on the Yelp engineering blog about how his team <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/kkhmh2unxg7g84hlh7/aHR0cHM6Ly9lbmdpbmVlcmluZ2Jsb2cueWVscC5jb20vMjAyNi8wOC9taWdyYXRpbmctYS1sYXJnZS1mbG93LW1vbm9yZXBvLXRvLXR5cGVzY3JpcHQuaHRtbA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497396">migrated a large Flow monorepo to TypeScript</a>. I’d rate it a 4.1/5.0 because the service was a little slow, but the breadsticks had great flavor.</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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/58hvh8ug6pep53u6h4/aHR0cHM6Ly9tYWluLnZpdGVzdC5kZXYvZ3VpZGUvbWlncmF0aW9uLmh0bWwjdml0ZXN0LTU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497397">Vitest 5</a> enables <code style="font-size: 15px;">clearMocks</code> by default and adds a few more nice DX touches.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Cody Mazza-Anthony and Paige Vegna wrote on the Shopify blog about <a href="https://c5e21242.click.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/25h2h9u3mr5r76i3h4/aHR0cHM6Ly9zaG9waWZ5LmVuZ2luZWVyaW5nL2dpc3Rpbmc=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497398">Gisting</a>, which thankfully does <em>not</em> refer to a niche fetish among San Francisco polycules - it’s about compressing LLM context into a set of learned tokens to make the model faster and cheaper. Ok so maybe it’s kind of both.</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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/vqh3hmuow252nxughl/aHR0cHM6Ly9haS1kZXZjcmFmdC5jb20vP3V0bV9zb3VyY2U9Ynl0ZXMmdXRtX21lZGl1bT1wYWlkX2FkJnV0bV9jYW1wYWlnbj1haV9kZXZfY3JhZnQ=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1879497385">Ai Dev Craft Conference</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The <code style="font-size: 15px;">printNumber</code> function is not handling the promise rejection. To fix this, you can add a <code style="font-size: 15px;">try/catch</code> block around the <code style="font-size: 15px;">await</code> statement:</p>
<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;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">getNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 15px;">Promise</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">resolve<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> reject</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> randomNumber <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> Math<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">random</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>randomNumber <span class="token operator" style="color: #12b5e5; font-size: 15px;">></span> <span class="token number" style="color: #fcba28; font-size: 15px;">0.5</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">resolve</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>randomNumber<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">else</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">reject</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"Number is too low"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1000</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">async</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">printNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">try</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> number <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">await</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">getNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"The number is:"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> number<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">catch</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"Whoops:"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> error<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">printNumber</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/qvh8h8udkgxg8wtlhk/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1879497399">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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/g3hnhwumq7v7ewarh9/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1879497400">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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/9qhzhdud5k7kgms9h3/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1879497401">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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml/3ohphdu3p6w6q5srhn/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1879497402">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/38u909o4rrakh2kngwlfrh450eg8vt7h4oml">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.convertkit-mail.com/38u909o4rrakh2kngwlfrh450eg8vt7h4oml" alt="">
</body>
</html>