<!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/squirt-gun-baptism.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/convex-logo.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/backboard-shattered.jpeg">
<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: The Atoning for Sins of React</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> Flue 2.0 drops the harness, what I learned from Heidi Klum, and some old-fashioned security-incident-driven marketing.</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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/x0hph3ue598xkdt5hl/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNTA4" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541628">#508</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/squirt-gun-baptism.jpg" alt="A priest spraying baptismal water with a squirt gun" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 17px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">Watching Octane compile React's sins away<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">The Atoning for Sins of React</h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Becoming an adult is realizing that buying the things you were denied as a child is a part of your healing journey. At least that’s what I told myself before I put $623 of Star Wars cards in my cart on eBay. This might explain why Dominic Gannaway is building <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/6qhehoulmnv0xdiohk/aHR0cHM6Ly9vY3RhbmVqcy5kZXYv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541629"><code style="font-size: 15px;">Octane.js</code></a> with the unlimited tokens he has from working at OpenAI—to heal the last 10 years of using React.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">If you aren’t familiar with Dominic’s work, in addition to being on the React and Svelte core teams, he is the creator of Inferno, Ripple, and most recently TSRX. All of these projects in one way or another look to fix both the performance and ergonomics of using React. If there is anyone who can fix the sins of React, it’s probably Dominic and his solution: combining the runtime with a compiler.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Here’s what Octane does:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Compiles away the virtual DOM:</strong> Instead of using a virtual DOM, Octane compiles components ahead of time into template clones and direct DOM writes, removing the runtime overhead of building and diffing element trees on every update.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Eliminates the rules of hooks:</strong> In Octane, you can remove the dependency array from <code style="font-size: 15px;">useEffect</code>, <code style="font-size: 15px;">useMemo</code>, and <code style="font-size: 15px;">useCallback</code> and conditionally render hooks like this:</p>
</li>
</ul>
<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;">import</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span> useState<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> useEffect <span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">from</span> <span class="token string" style="color: #f99157; font-size: 15px;">'octane'</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">export</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">Counter</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">props</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> <span class="token punctuation" style="color: #231F20; font-size: 15px;">[</span>count<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> setCount<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 function" style="color: #9d7dce; font-size: 15px;">useState</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token number" style="color: #fcba28; font-size: 15px;">0</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 comment" style="color: rgb(167, 167, 167); font-size: 15px;">// A hook behind a condition is fine — slots are</span>
<span class="token comment" style="color: rgb(167, 167, 167); font-size: 15px;">// assigned by call site, not call order.</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 15px;">!</span>props<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span>paused<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;">useEffect</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>
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;">'count is now'</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> count<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 comment" style="color: rgb(167, 167, 167); font-size: 15px;">// the compiler infers [count]</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token operator" style="color: #12b5e5; font-size: 15px;"><</span>button onClick<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 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 function" style="color: #9d7dce; font-size: 15px;">setCount</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>count <span class="token operator" style="color: #12b5e5; font-size: 15px;">+</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1</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 string" style="color: #f99157; font-size: 15px;">'Count: '</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">+</span> count<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 operator" style="color: #12b5e5; font-size: 15px;">/</span>button<span class="token operator" style="color: #12b5e5; font-size: 15px;">></span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
</code></pre>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Improves async:</strong> Octane’s compiler memoizes promises so you can pass them to <code style="font-size: 15px;">use()</code> during render without creating infinite loops. It also eliminates waterfalls by parallelizing independent <code style="font-size: 15px;">use()</code> reads. It also allows descendants to prefetch while the parent is rendering.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">React compatibility:</strong> You might be left wondering if Octane is a drop-in replacement for React, and the answer is … not quite. You can render Octane components as islands inside of an existing React app, but mostly, it is designed as a replacement for React that provides bindings for many popular libraries. There’s no support for React Server Components right now, so Next.js users are out of luck.</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> It’s debatable how much rendering performance matters in today’s day and age, but Octane might finally be the project that atones for the sins of React and brings Dominic the peace he’s been searching for.</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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/kkhmh2unk6g4z9flh7/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTA4" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1874541630"><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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/58hvh8ugrkpl35u6h4/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY1MDg=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1874541631"><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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/25h2h9u3k4rnl2c3h4/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9T2N0YW5lJTIwbWlnaHQlMjBmaW5hbGx5JTIwYXRvbmUlMjBmb3IlMjB0aGUlMjBzaW5zJTIwb2YlMjBSZWFjdC4mdXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY1MDg=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1874541632"><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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/qvh8h8ud9ogqedalhk/bWFpbHRvOj9zdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0YmYm9keT1UaG91Z2h0JTIweW91JTI3ZCUyMGxvdmUlMjB0aGlzJTIwd2VlayUyN3MlMjBCeXRlcyUwQS0tLSUwQU9jdGFuZSUyMG1pZ2h0JTIwZmluYWxseSUyMGF0b25lJTIwZm9yJTIwdGhlJTIwc2lucyUyMG9mJTIwUmVhY3QuJTBBaHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjUwOA==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1874541633"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/em-share-icon.png"></a>
</td></tr></tbody></table>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="150" src="https://bytes.dev/images/content/convex-logo.png" alt="Convex logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;"><span>Our Friends <br class="mobile-break">(With Benefits)</span></h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/backboard-shattered.jpeg" alt="A basketball player beneath a shattered backboard" 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 your agent decides to play with Postgres<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/g3hnhwum467xg6brh9/aHR0cHM6Ly9jb252ZXgubGluay9zZVZpbFlW" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541634">The backend platform your agents can’t break</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Letting an agent touch your database is a scary proposition. When Sol and Fable were benchmarked on Postgres, 9 out of 10 apps tested had corrupted data writes because of concurrency issues.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Thankfully, Convex is <em>correct by default</em>. Every mutation is a serializable transaction, with built-in retries, so the first tool your agent reaches for “just works.”</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But writing data is only half of the equation. Screens need to display these updates, which is why <em>every query on Convex is a live subscription</em> that clients can use to update the UI.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The result? Less code, fewer tokens, fewer mistakes.</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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/g3hnhwum467xg6brh9/aHR0cHM6Ly9jb252ZXgubGluay9zZVZpbFlW" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541634">Try Convex today</a>.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/cool-bits.png" alt="Cool Bits logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Cool Bits</h2>
</div>
<ol>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Sarah Drasner <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/9qhzhdudozkn49h9h3/aHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvdXNlLXdlYm1jcC10b29s" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541635">created a React hook</a> built on the WebMCP spec to help agents use your app more efficiently.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Thinking Machines <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/3ohphdu3e46vxvhrhn/aHR0cHM6Ly90aGlua2luZ21hY2hpbmVzLmFpL25ld3MvaW5rbGluZy1zbWFsbC8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541636">released a smaller version of its model Inkling</a> that “achieves comparable performance at a quarter of the size.” Where have I heard that line before?</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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/n2hohquvz6we22s6hg/aHR0cHM6Ly9zZXJwYXBpLmNvbS8_dXRtX3NvdXJjZT1ieXRlc2Rldg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541637">SerpApi lets you scrape 100+ search engines with a single API</a>. One simple GET request gets you real-time results from Google Search, Maps, AI Overviews and more – all as structured JSON. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">OpenAI <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/48hvh7um46zkwvfxh7/aHR0cHM6Ly9vcGVuYWkuY29tL2luZGV4L2FkdmFuY2luZy10aGUtcHJpY2UtcGVyZm9ybWFuY2UtZnJvbnRpZXItd2l0aC1ncHQtNS02Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541638">cut Luna’s price by 80% and Terra’s by 20%</a> and made Sol a lot faster.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">After OpenAI’s <del>marketing initiative</del> confession that a rogue AI agent hacked Hugging Face, Anthropic ALSO found that <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/wnh2h6uqex98m7i7hx/aHR0cHM6Ly93d3cuYW50aHJvcGljLmNvbS9uZXdzL2ludmVzdGlnYXRpbmctaW5jaWRlbnRzLWN5YmVyc2VjdXJpdHktZXZhbHM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541639">Claude has been escaping its sandbox</a>. Oops <span role="img" aria-label="winking face">😉</span>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Tanner has been lighting tokens on fire to bring you <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/reh8h9umgw9nkzc2h6/aHR0cHM6Ly90YW5zdGFjay5jb20vY2hhcnRzL2xhdGVzdA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541640"><code style="font-size: 15px;">@tanstack/charts</code></a>, an SVG-based charting library that is strongly typed and framework-agnostic.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Rami Maalouf wrote a great post about <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/08hwhgu23g0qn5ilh5/aHR0cHM6Ly90cnkuZXhwby5kZXYvbW9iaWxlLWFpLWRldg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541641">the only three AI tools you need to build mobile apps</a>: skills, MCP, and a plan. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">James Baduor wrote <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/8ghqh3uomqekw6fkh9/aHR0cHM6Ly93d3cuamFtZXNiYWR1b3IuY29tL2xlYXJuaW5ncy9Zb3VyLVRhc3RlLUlzLUFoZWFkLW9mLVlvdXItSGFuZHM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541642">an article on taste</a> that teaches an important lesson I learned watching Project Runway: if you don’t know when to stop, “one day you’re in—the next you’re out.”</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Devon Govett and the React Aria team just released <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/vqh3hmuoze28mztghl/aHR0cHM6Ly9yZWFjdC1hcmlhLmFkb2JlLmNvbS9yZWxlYXNlcy92MS0yMC0w" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541643">version 1.20.0</a>, featuring a new <code style="font-size: 15px;">PreviewTrigger</code>, which is a spicier tooltip, <code style="font-size: 15px;">TokenField</code> for rendering <code style="font-size: 15px;">@mentions</code>, and a better API for <code style="font-size: 15px;">useKeyboard</code>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Fred K. Schott just announced <a href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/l2heh6ul865wqxb6h0/aHR0cHM6Ly9mbHVlZnJhbWV3b3JrLmNvbS9ibG9nL2ZsdWUtMi8_dHc=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1874541644">version 2.0 of Flue</a>, <del>the agent harness framework</del> the open agent framework.</p>
</li>
</ol>
<div style="text-align:center;padding-bottom:80px;padding-top:80px">
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; padding: 24px;"><div style="margin-top:-40px">
<img src="https://bytes.dev/images/bytes-icon.png" alt="Bytes" width="55px" style="max-width: 100%; width: 55px;"><h5 style="font-size:18px;font-weight:400;margin-bottom:24px">Want us to say nice things <br> about your company?</h5>
<div style="margin-bottom:16px"><a style="background-color: #FCBA28; border: 1px solid #231F20; border-radius: 100px; color: #231F20; font-size: 14px; font-weight: 600; padding: 8px 14px; text-decoration: none;" href="https://c5e21242.click.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/m2h7h6u3dmkw2lhmhq/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1874541645">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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/dphehmuel8zrdxtmh4/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1874541646">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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/e0hph0u78q95mxs8h2/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1874541647">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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5/7qh7h2u9rwv3qvfzh6/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1874541648">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/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.convertkit-mail.com/k0ue5en966i6h5x4v66ulho892qp6c8hnlr5" alt="">
</body>
</html>