TypeScript gets lean

Issue #416.August 15, 2025.2 Minute read.
Bytes

Today’s issue: Doing free work for legacy media, OpenAI research interview questions, and Paulo Coelho’s favorite infrastructure library.

Welcome to #416.


Eyeballs logo

The Main Thing

Kim Jong Un showing the iCarly crew something on the computer

Look at these new tooltips. Immaculate.

TypeScript gets lean

And thankfully, it didn’t require injecting any of that off-brand Wegovy my brother-in-law has been importing from his “doctor” in China.

All it took was a new 5.9 release that comes with a few slick improvements that should make your projects noticeably lighter and smarter.

Let’s take a closer look at four of the biggest upgrades:

1. A cleaner tsc --init – Running tsc --init no longer floods your tsconfig.json with 200 lines of commented-out settings that you’ll immediately delete. The new default is leaner and more opinionated out of the box, with sensible stuff like moduleDetection: "force" and target: "esnext".

2. Import now, execute later – The new import defer syntax lets you import a module upfront, but doesn’t run it until you actually touch one of its exports. Great for conditionally loading modules with expensive or platform-specific init only when needed.

3. Friendlier editor + DOM tooltips – VS Code hover pop-ups can now be expanded inline with +/- buttons to peek deeper into your types. Many DOM APIs now also show short, MDN-sourced summaries right in the tooltip, so you can get a quick explanation without leaving your editor.

4. Under-the-hood perf gains – TypeScript now caches more intermediate type work (a big win for Zod/tRPC-heavy codebases), and it trims file existence checks for another small speed boost.

Bottom Line: I’m still getting cold sweats and night terrors from that one bootleg Wegovy shot I took, so it’s nice to see TypeScript slimming down without needing to resort to off-brand pharmaceuticals.


QA Wolf logo

Our Friends
(With Benefits)

Tyler the Creator crying

When your iPhone simulator betrays you... again

Inside look: How QA Wolf built an iPhone army for iOS testing

Most iOS simulators are hot garbage frustratingly error-prone.

That’s why QA Wolf built a real iPhone device farm – and on August 28th, they’re hosting a free workshop to show you exactly how they did it.

You’ll learn:

  • Why simulators fail at e2e mobile testing – and why third-party device clouds slow you down

  • What it took to adapt their automated testing solution to get 80% test coverage for iOS apps

  • How they built for speed by running parallelized tests on physical iPhones

Register here – to get a behind-the-scenes look at how they get full iOS test coverage with no emulator guesswork and no flake retries.


Spot the Bug logo

Spot the Bug

Sponsored by Augment Code

Their article on Why the future of software engineering is beyond the IDE shares how AI agents are changing not just how we code, but where we code.

class Singleton {
  constructor() {
    if (this.instance) {
      return this.instance;
    }
    this.value = Math.random();
    this.instance = this;
    return this;
  }

  getValue() {
    return this.value;
  }
}

Cool Bits logo

Cool Bits

  1. Ahmad Shadeed (🐐) is back with another interactive article where he rebuilds the Time.com Hero section in better CSS. Hopefully they pay his invoice in the mail.

  2. Warp Codes is like a model buffet: GPT-5, Opus 4.1, Gemini 2.5 and more, all under one subscription, with new models available the moment they drop. Most generous limits around, and if you somehow hit them, you just pay as you go. No rate-limit lockouts. Get 20% off Warp Pro with code BYTES-PRO. [sponsored]

  3. Sam Goodwin created Alchemy – an embeddable Infrastructure-as-Code library that’s implemented in pure, ESM-native TypeScript code. I guess that means TypeScript is the lead and Cloudflare is the gold in this analogy?

  4. Conrad Irwin wrote about why LLMs can’t really build software, even though they can write code. So they really are just like most of us after all.

  5. The Codecov (Sentry) team wrote this guide on Testing Milestones – which comes with a checklist for every stage of the process, so you’ll always know what to do next when building out test coverage for your codebase. [sponsored]

  6. React Native 0.81 comes with Android 16 support, faster iOS builds, and a bunch of stability improvements.

  7. Shajid Hasan wrote about Svelte, Markdown, and the magic of Web Components. Hey did you know that YouTube actually uses Web Components? Have any WC truthers ever mentioned that before?

  8. Alem Tuzlak made this video about his work building the new TanStack devtools.

  9. @convex-dev/agent is a component for building agentic AI applications on Convex with persistent chat history. [sponsored]

  10. Bas van Opheusden wrote about the AI research interview process at OpenAI, which is a helpful first step to getting a 9-figure offer at Meta.

  11. Cloudflare created Learn MCP, a free course that shows you how to build an MCP server with Cloudflare Workers.

  12. Una Kravets wrote about 5 useful CSS functions using the new @function rule. My wife also has “5 function rules” for me to follow, but they mainly involve me making eye contact with people at birthday parties and not repeatedly asking the host if they’re gonna have Bagel Bites later.


Spot the Bug logo

Spot the Bug: Solution

Sponsored by Augment Code

this.instance is an instance property instead of a static property, causing it to be undefined every time a new instance is created, failing to enforce the singleton pattern.

To fix this, we should use a static property instead:

class Singleton {
  constructor() {
    if (Singleton.instance) {
      return Singleton.instance;
    }
    this.value = Math.random();
    Singleton.instance = this;
    return this;
  }

  getValue() {
    return this.value;
  }
}