The Hono takeover

Issue #323.September 16, 2024.2 Minute read.
Bytes

Today’s issue: JavaScript promise rings, the hall monitor of the web, and jamming out to Hoobastank with my best friend (who happens to be an LLM).

Welcome to #323.


Eyeballs logo

The Main Thing

Weird Al performing in a Spongebob t-shirt and a tutu

Me pitching my team on migrating to Hono so I can get 23 upvotes on HN

The Hono takeover

Something’s going on with Hono.

Their npm downloads are up 11x in the last year, they just hosted their first in-person conference, and their online approval rating feels like a perfect 10/10 – according to our proprietary JavaScript Vibes Benchmark™️.

So why are we seeing so much love for a simple server framework?

Initially, the Hono love started for four key reasons:

  1. It can run on any JavaScript runtime, because it’s built on Web Standards.

  2. It’s really fast, thanks to its use of RegExpRouter – which it calls “the fastest router in the JavaScript world.”

  3. It comes with first-class TypeScript support and a batteries-included approach to middleware and helpers.

  4. It’s not Express.js.

But Hono didn’t stop there. The project’s early success helped it attract more developers to the Hono Hive, which allowed it to expand its vision beyond the server and start moving to the client.

Their last few releases, including last week’s v4.6 release, have introduced some powerful full-stack features – and suddenly, Hono is starting to look like it could be the next mainstream web framework. Here are some highlights:

  • Client components with JSX and React-flavored hooks, plus an SSG helper and a Vite plugin for instantly generating static pages.

  • A new RPC feature that allows the server and client to share specifications using TypeScript types and a regular REST API. Some type nerds are already using it to replace tRPC.

  • The HonoX meta-framework is still in alpha, but it provides file-based routing, fast SSR, islands hydration, and middleware – which should make Hono a more viable option for large applications.

Bottom Line: All Hono has to do is continue growing 11x a year for like 2 more years and it’ll officially be more popular than React. It’s just simple math.

        

QA Wolf logo

Our Friends
(With Benefits)

Tommy Pickles from Rugrats looking confused and upset

When you have manually test all the new features you just built

Ditch manual testing forever with QA Wolf

QA Wolf can get you 80% automated end-to-end test coverage in weeks, not years — so your team would never have to waste time on manual testing again.

How it works:

  • They automate hundreds of tests for you in Playwright to test every single user flow, API, and third-party integration in your app.

  • They provide all the infra to run 100% of your test suite in parallel, so your team can test and deploy continuously.

  • They sort all the real bugs from the flakes with human-verified bug reports – so you never waste time on flaky tests.

Want proof? Watch this case study on how AutoTrader saved $620k/yr trading in manual testing for automation.

Schedule a demo to learn more.


Spot the Bug logo

Spot the Bug

Spot the Bug – Presented by StackBlitz

ViteConf is October 3rd and this year, StackBlitz is offering a series of workshops to ViteConf attendees. Join us for deep dives into the future of AI, Documentation, Design Systems, and more!

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Spot the bug</title>
    <meta name="description" content="Gotta spot the bug" />
    <meta charset="ISO-8859-1" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body>
    <img
      src="https://bytes.dev/images/bytes-banner-rounded.png"
      width="300"
      height="150"
    />
    <p>
      Bottom Line: With a release like this, the Astro hype train rocket
      probably won't be slowing down anytime soon. So we have to cherish moments
      like this while we have them, because your kids always grow up way too
      fast 🥹.
    </p>
  </body>
</html>

Cool Bits logo

Cool Bits

  1. Alex Harri wrote an article about How the web’s clipboard stores data of different types. This deep knowledge of the clipboard will give you everything you need to declare yourself the hall monitor of the web.

  2. TkDodo wrote about How Infinite Queries work in React Query – and in that moment, I swear he was infinite 🔮💫.

  3. Fingerprint provides account takeover detection + prevention that’s powered by device intelligence, so you can build a secure and frictionless login experience that protects user data and get the insights you need to prevent ATO attacks for good. [sponsored]

  4. TypeScript 5.6 just dropped with new syntactic nullish/truthy checks, iterator helper methods, and lots of other stuff you may or may not notice.

  5. Alex Pate wrote about Cleaner JavaScript promises with safe-await. No word yet on if he’ll be collaborating with the Jonas Brothers to start selling JavaScript promise rings, but I’ve got my fingers crossed.

  6. Colby Fayock created this deep dive on Setting up MDX in a Next.js App Router application.

  7. Uğur Erdem Seyfi wrote about Understanding Concurrency, Parallelism and JS. But how is it possible to understand multiple things at one time?

  8. CarbonQA provides high-quality QA services that scale. Their US-based testers work directly with your tools and will break your app repeatedly by doing all the manual testing you hate doing yourself. [sponsored]

  9. Ahmad Shadeed wrote about CSS display contents.

  10. OpenAI wrote an interesting article about Learning to Reason with LLMs. But if I had known that ChatGPT could teach me how to play Hoobastank songs, I would’ve started using it a long time ago.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by StackBlitz

Specifying a charset of <meta charset="ISO-8859-1" /> will cause special characters and emojis to not render properly.

In order to properly render emojis, the document needs to use Unicode Transformation Format (UTF), UTF-8 being the most commonly used encoding for web development. Most browsers default the encoding to UTF-8 (or try and detect it automatically), but for older rendering engines (cough email) you will need to explicitly set your charset, or like us, you could be spending hours trying to figure out why your emojis won’t render 😭.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Spot the bug</title>
    <meta name="description" content="Gotta spot the bug" />
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body>
    <img
      src="https://bytes.dev/images/bytes-banner-rounded.png"
      width="300"
      height="150"
    />
    <p>
      Bottom Line: With a release like this, the Astro hype train rocket
      probably won't be slowing down anytime soon. So we have to cherish moments
      like this while we have them, because your kids always grow up way too
      fast 🥹.
    </p>
  </body>
</html>