

TypeScript.fm - The Friendly Show for TypeScript Developers
Kamran Ayub and Erik Onarheim
The two TypeScript Fools, Kamran Ayub and Erik Onarheim, get together weekly to bring you news, community highlights, and deep dives into the TypeScript ecosystem. Stay up-to-date on what's happening and learn new things to make you a better TypeScript developer along the way!
Episodes
Mentioned books

Oct 21, 2025 • 58min
You Don't Need These 15 npm Packages (Axe 'em), Remix Remixed (Again), and TypeScript in Space (Not Really) | News | Ep 40
News of the week of October 13, 2025: Node 25 brings V8 perf update, Remix reinvents itself once again, TypeScript in your DB, and why Map upsertions will be celebrated by TS devs. From the community: 15 npm packages you no longer need, Deno's side projects, Snoop L. O. Double G., and how to write architecture assertions. Chapters(00:00) - Welcome to the Show
(04:50) - News: Happy National AWS Outage Day!
(06:00) - News: Remix Has Remixed Itself Once Again Into V3
(08:59) - News: TypeScript in Space! ... TimeDB
(12:06) - News: Node 25 Brings New V8 Updates and Network Permissions
(14:30) - News: Lit HTML Joins Open JS Foundation
(16:05) - News: Announcing Vite+ Blog Post
(20:44) - News: ECMAScript Upsert Proposal and ESBuild Can Now Import Raw Bytes
(22:57) - Community Highlight: 15 Recent Node Features That Replace npm Packages
(31:07) - Community Highlight: Deno's Other Open Source Projects
(33:29) - Library Watch: SnoopLogg for CLI Logging Across Runtimes
(34:41) - Library Watch: ArchUnitTS, an Architecture Testing Library
(37:40) - Community Highlight: oxfmt is 2-3X Faster Than Biome and 45X Faster Than Prettier
(38:46) - Discussion: Got the Nx Blues? Try Moonrepo
(40:48) - Community Highlight: Enforcing Strict Object Properties in TypeScript
(42:18) - Community Highlight: Watch Web Dev Simplified Struggle Through Type Challenges
(43:10) - Community Highlight: TypeScript's Coding Guidelines Are Not For Us
(44:37) - Cool Watches: Rolldown Internals and Beyond Signals
(45:21) - Cool Tip: Don't Forget About AbortController
(46:01) - Cool Tool: SpriteFusion Tile Map Editor
(46:47) - Cool Product: Stylish Solar Shingles
(49:15) - The Minnesota Long Goodbye
NewsHappy National AWS Outage Day!Remix: Remix Jam 2025 (4 hours) announced V3, built on Preact (3min and 20min summaries, plus reddit discussion)SpacetimeDB 1.6 adds beta support for TS modulesNode 25 is out (bsky summary by Rafael)Lit joins Open JS FoundationVoidZero: New blog post with details around Vite+ECMAScript News: Map Upsert proposal heralded by TS devs (h/t Rob Palmer) ECMAScript News: Import bytes lands in ESBuild (+ Deno, Bun, and webpack) (h/t Rob Palmer)From the CommunityNodeSource: 15 Recent Node.js Features that Replace Popular npm PackagesDeno: Deno's Other Open Source ProjectsLibrary Watch: SnoopLogg v6.0.4, a CLI logging libraryLibrary Watch: LukasNiessen/ArchUnitTS, an architecture testing libraryEvan You: oxfmt is 2-3X faster than Biome and 45X faster than PrettierReddit: What Happened to Nx? and an alternative hidden gem, MoonrepoTypedRocks: This New TypeScript Utility Type Prevents Hard-To-Find Bugs!WebDevSimplified: Will I Survive These Advanced TypeScript Challenges?Cool StuffCool Watch: Alexander Lichter on Rolldown: How Vite bundles at the speed of RustCool Watch: Beyond Signals by Ryan Carniato (Solid.js creator)Cool Tip: Stefan reminds us that AbortController is a thingCool Product: SunStyle solar shingles actually look niceSponsored by Excalibur.jsExcalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.MusicSeahorse Dreams by Kubbi (Spotify)

Oct 14, 2025 • 48min
ReactConf 2025 Highlights, Bun 1.3's Security Scanner API, and Malware-as-a-Service | News | Ep 39
News of the week of October 6, 2025: Highlights from ReactConf 2025, Bun 1.3's (delicious) security lede got buried, and how to buy lifetime access to someone's webcam for $500. From the community: CSS is cool again, Immer.js perf improvements, and why typed linting is blocked by ESLint core.Chapters(00:00) - Welcome to the Show
(05:52) - News: ReactConf 2025 Highlights
(15:53) - News: Bun 1.3 Highlights
(20:59) - News: VS 2026 Now Includes TypeScript 7 Native Preview
(21:33) - News: TC39 Async Context
(22:51) - News: TC39 Module Declarations
(24:40) - News: TC39 Defer Import Evaluation Moves to Stage 3
(25:11) - News: Vite+ Announcement
(27:43) - PSA: StealIt Malware Uses Node SEAs to Bypass Scanners
(30:26) - Community Highlight: Dr. Axel's Schools Us in CSS
(32:07) - Community Highlight: Why Typed Linting is Blocked by ESLint Core
(32:30) - Community Highlight: Immer.js Perf Improvements Landing Soon
(33:25) - Community Highlight: Unofficial 1Password TS Library
(35:02) - Community Highlight: Joke of the Week
(35:21) - Cool Link: Kagi, the Premium Search Engine
(39:19) - Cool Videos: Mojo, Simulating Smoke, and How UTF-8 Works
(40:54) - Cool Link: Twoslash Provides Rich Type Metadata for Docs
(41:51) - The Minnesota Long Goodbye
NewsReactConf: React 19.2 droppedReactConf: React Compiler 1.0 dropped (reminded Erik of this old ditty)ReactConf: React FoundationBun 1.3 VS 2026 has TS 7 previewTC39: Module Declarations TC39: Defer Import Eval advances to stage 3 Vite+ unifies enterprise JS toolingPSA: Stealit Malware Abuses Node.js Single Executable Feature via Game and VPN InstallersFrom the CommunityDr. Axel: CSS: Learn the essentials quicklyJosh Goldberg: Why typed linting optimization blocked by ESLint core Library Watch: Immer.js perf improvements on the horizonBlog Post: Stopping Bad Actors: Inside 1Password’s Security Model Cool StuffCool Product: Kagi Search, the premium search engine you pay forCool Video: GPU Programming and Language Design with Chris Lattner Cool Video: Coding Adventure: Simulating SmokeCool Video: UTF-8, Explained SimplyCool Library: Twoslash, generate TS metadata for interactive docs snippetsCool Read: Chris Coyier’s CSS starterCool Read: Innovate, Leverage, Commoditize (ILC model) strategic gameplaySponsored by Excalibur.jsExcalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.MusicSeahorse Dreams by Kubbi (Spotify)

Oct 9, 2025 • 48min
Deno Might be npm's Saving Throw, Temporal Dead Zones, and SSR Under .NET?! | News | Ep 38
Dive into the intriguing world of Deno as a potential solution to npm's security challenges. Discover how a new approach with 1Password can help protect local development secrets. Kamran shares his exciting journey of getting React Server-Side Rendering to work with .NET, while discussions on the practical implications of TypeScript's quirks and supply chain security keep things engaging. Plus, learn about recent advancements in tools like TSGO and Astro, making waves in the development community.

7 snips
Sep 30, 2025 • 59min
New ECMAScript Proposals, Cap'n Web, and TS on DOS/PlayStation | News | Ep 37
Discover the latest updates in TypeScript with the introduction of a new default safety feature in version 6.0. Explore exciting ECMAScript proposals, including one for non-extensible private fields and the performance-enhancing Array.prototype.pushAll. Learn about Cap'n Web, Cloudflare's innovative RPC system, and the intriguing idea of running TypeScript on MS-DOS. Additionally, check out discussions on using JavaScript on PlayStation and the community's thoughts on effect-ts, weighing its complexities against benefits.

Sep 23, 2025 • 52min
Let the Spicy Takes Flow: Shai-Hulud Hits npm, Motion's TS Exodus | News | Ep 36
News of the week of September 15, 2025: Shai-Hulud worm hits npm supply chain, WebAssembly 3 spec is ratified, and Elixir fans finally get their time in the spotlight. From the community: SquiggleConf was awesome, type branding and tuples, local-first app dev, and why @ts-ignore is almost always the worst option.Chapters(00:00) - Welcome to the Show
(04:36) - News: Shai-Hulud Worm Attacks Over 500 npm Packages
(12:31) - News: WebAssembly 3 Spec is Done
(14:05) - News: Ash Framework Announces AshTypeScript
(15:08) - News: ts-to-zod Now Supports Zod 4
(15:36) - News: Typebox 1.0 Release
(17:26) - Community Highlight: SquiggleConf 2025 Happened!
(20:51) - Community Highlight: Type Branding in TypeScript by AzraelSec
(21:35) - Community Highlight: TypeScript Tuple Length Hacks
(22:24) - Community Highlight: TypeScript Developer Roadmap
(23:15) - Community Highlight: GitHub Actions Can Now Run Pure TypeScript
(23:59) - Community Highlight: Why @ts-ignore is Almost Always the Worst Option
(24:55) - Community Highlight: Using Node's Test Runner with TS and React
(26:05) - Library Watch: Combinatorial CLI Options Parsing
(27:53) - Library Watch: Valibot Helper Utilities
(29:03) - Tool Watch: Local-first Development with FullStacked
(31:15) - Tool Watch: Retro 3D Engine with TS Scripting API
(32:09) - Discuss: Moving Off of TypeScript by Motion
(41:34) - Funny Read: Is Your Son a Computer Hacker?
(43:03) - Cool Library: Render a DOM Element as an Image
(45:04) - Cool Tool: Pages CMS Runs on Top of Your Git Repo
(47:08) - The Minnesota Long Goodbye
NewsSocket.dev covers Shai-Hulud: Updated and Ongoing Supply Chain Attack Targets CrowdStrike npm Packages Popular Tinycolor npm Package Compromised in Supply Chain Attack What the npm package attacks mean for us developersWasm 3.0 spec completedAnnouncing AshTypeScript, part of the Ash Framework (Phoenix/Elixir)ts-to-zod now supports Zod 4.0Typebox 1.0 releaseFrom the CommunitySquiggleConf Happened! Check out the streams (separate videos to come)Day 1: https://www.youtube.com/live/C_ePbVZqXrw?si=MpRiE8n4xLNpfbV0Day 2: https://www.youtube.com/live/vSXLDvvIpYE?si=cWKQTjZCx91HWJN9Federico (AzraelSec): Type Branding in Typescript Renato: TypeScript Tuple Length Evan Hahn: @ts-ignore is almost always the worst optionRoadmap.sh: Everything You Need to Learn to be a TS DevGitHub Actions can now run pure TS on Node 22/24 runners without a build step (h/t Brian Muenzenmeyer)Mathew Brown: Using Node's Test Runner with Typescript & React Library Watch: Combinatorial CLI opt parsingLibrary Watch: Introducing: @traversable/valibot (h/t Andrew Jarret)Tool watch: FullStacked, a local-first app development environmentTool watch: Roguestrad, a Retro 3D Game engine forked from DOOM-3-BFG with TypeScript scripting supportCool StuffFunny Read: Is your son a computer hacker?Cool Lib: dom-to-image-more – render DOM elements as imagesCool Tool: Pages CMS - Hassle-free CMS for static sites powered by Git Sponsored by Excalibur.jsExcalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.MusicSeahorse Dreams by Kubbi (Spotify)

Sep 18, 2025 • 1h 10min
ArkType is TypeScript's 1:1 Validator | David Blass | Ep 35B
David Blass (@ssalbdivad.dev) teaches the two fools about ArkType and its 1:1 validator type system. If you, like us, thought ArkType was only about validation, think again! David pulls back the curtain on what makes ArkType unique, how he built a type-level parser to provide helpful error messages, and why ArkType can provide soundness guarantees that go beyond even what vanilla TypeScript can offer. *waves hand* These are the array intersections you're looking for.Chapters(00:00) - Introducing David Blass
(02:39) - ArkType vs. Zod
(04:28) - ArkType's Differences
(06:21) - Defining ArkType Types
(10:33) - Matching TypeScript's Syntax
(14:24) - Detailed Editor-time Errors
(17:14) - Type-level Testing with attest
(18:26) - Runtime Error Checking
(21:05) - Generating JIT-optimized Code
(27:27) - Benchmarking ArkType's Performance
(29:41) - Optimizing the Parser for ArkType Types
(32:13) - Tips for Optimizing TypeScript Types
(38:12) - Type Mapping API
(40:20) - Set-based APIs
(43:15) - Typing Array and Tuple Intersections
(45:57) - ArkType's Internal Type System
(49:01) - Serializing Types to JSON
(50:09) - Porting Enhancements to TypeScript
(51:55) - Compatibility with Standard Schema Spec
(57:15) - Introspecting ArkType Types
(01:00:10) - Use Cases for ArkType
(01:03:34) - What's Next for ArkType?
(01:05:59) - Getting Started with ArkType
(01:07:56) - Where to Follow David
ResourcesArkType.ioArkType DiscordArkType GitHub@ark/attest testing libraryWhere to Follow DavidDavid on BlueSkyArkType on BlueSkySponsored by Excalibur.jsExcalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.MusicSeahorse Dreams by Kubbi (Spotify)

Sep 16, 2025 • 49min
Deno 2.5, Type-safe Configs and Forms, and Underrated TS Features | News | Ep 35
Deno 2.5 has arrived with exciting features like enhanced permission management and better testing APIs. The hosts discuss underrated TypeScript functionalities and showcase tools for type-safe configurations, secrets, and forms. They also weigh the pros and cons of using Bun in production. Light-hearted banter about parenting and personal anecdotes about camping and retro gaming add charm to the conversation. Plus, don't miss their excitement over the release of 'Assassin's Creed Mirage' and insights on npm security challenges!

Sep 11, 2025 • 50min
Fresh 2.0 Beta, TS Nostalgia, and Spear Phishing the Supply Chain | News | Ep 34
This week, Deno Fresh 2.0 enters beta, enhancing TypeScript development with Vite support. A significant spear-phishing attack on npm maintainers raises alarm about security in the software world. The community reflects on a decade of TypeScript, highlighting past innovations and the rise of type-safe state machines. Exciting performance improvements in Immer.js and intriguing new tools, like Wi-Fi sharing utilities, are showcased. Also, a legal discussion around AI piracy and authors' rights takes center stage, reminding us of the importance of ethics in tech.

Sep 3, 2025 • 56min
Breaking Changes in TS 6, a Calm Migration to Type Stripping, and Deno's #FreeJavaScript Campaign | News | Ep 33
News of the week of August 25, 2025: the two fools unpack the expected breaking changes to TSConfig in the upcoming 6.0 release, explain Node's latest LTS notable changes, and cover the latest in the JS trademark case from Deno. Plus, a PSA if you use Nx! From the community: making the case to migrate to Node's type stripping, a peek at Vitest 4, Zod's new Codecs feature, refactoring types, Rolldown is the opposite of a letdown, and a bunch of neat libraries/framework releases to watch. Chapters(00:00) - Welcome to the Show
(06:46) - News: TSGo Refactoring and Find Reference Enhancements
(07:54) - News: Expect Some (Good) Breaking Changes in TS 6.0
(12:26) - News: Node.js 22.19.0 LTS Notable Changes
(18:13) - News: RsPack 1.5 Features Type Re-export Analysis
(21:27) - News: Deno's GoFundMe to #FreeJavaScript
(22:38) - PSA: Supply Chain Attack Against Nx Packages
(25:49) - Community Highlight: Attend SquiggleConf 2025
(26:43) - Case Study: How Calm.com Migrated to Node Type Stripping
(30:13) - Community Highlight: Dr. Axel's Corner
(33:01) - Community Highlight: Vitest 4 Sneak Peek
(34:28) - Community Highlight: Zod 4.1 Codecs
(36:39) - Community Highlight: Shout-out to Remco for Fixing JSX Typing Bugs
(37:24) - Community Highlight: TypedRocks Shows You How to Refactor Type Definitions
(38:27) - Community Highlight: Neovim Support for TSGo Spotted in the Wild
(39:09) - Library Watch: csv-utils Helps You Deal with CSV Files
(39:39) - Library Watch: contrastrast Provides WCAG-compliant Color Manipulation
(41:16) - Case Study: Plaid Cut Build Time by 97% with Rolldown
(42:17) - Framework Watch: Runner V4 Released
(43:53) - Framework Watch: Ripple, a TypeScript UI Framework
(45:20) - Community Highlight: Joke of the Week
(45:48) - Secret of the Handbook: declarationMap
(47:17) - Cool Link: MuJS for Embedding Scripting into C/C++
(48:57) - Cool Link: Cory Doctorow is Kickstarting a Book
(50:44) - Cool Watch: Learn Game Dev from a Nintendo Game Designer
(52:29) - The Minnesota Long Goodbye
Personal NewsKamran's new Qwik City Foundations course (requires subscription)Affected by the Verizon outage? Get some monies (or try visiting the Transfer Phone/PIN page in your account)Alternatively, switch to Mint and save some cheddar (that's Kamran's referral link :-)NewsTS 6.0 proposed deprecations and breaking changesNode 22.19.0 LTS notable changes include a new CA certificate API and unflagging WASM modules (see: source-phase imports)Rspack 1.5 release features type re-export analysisDeno's GoFundMe for #FreeJavaScriptPSA: Nx supply chain attack (write-ups from Socket.dev and TheHackerNews)From the CommunitySquiggleConf: September 18-19Calm.com: How we migrated our Rush.js monorepo to Node type strippingDr. AxelJavaScript’s trademark problem Learning web development: Web servers Learning web development: JavaScript exceptionsLearning web development: JSON and processing files in Node.js Learning web development: JavaScript MapsVitest 4 will be faster!Zod creator explains 4.1's new codecs featureUppy issue reveals a bug in JSX typing across ecosystemTypedRocks: Let’s Replace 100+ React Types with 3 Lines Of Code (Same Type Safety!) Possible sighting of neovim TSGo supportLibrary watch: doeixd/csv-utils: Helpful utils for working with csv files or arrays of objectsLibrary watch: ammuench/contrastrast: A library to determine text contrast based on WCAG Standards VoidZero: How PLAID Cut Build Times by 97% Migrating From Rollup To RolldownFramework watch: Runner V4 releasedFramework watch: trueadm/ripple: the elegant UI framework for the webThis week's TS JokeSecret of the HandbookThe declarationMap config option significantly speeds up Project References performance in IDEs. Cool StuffMuJS: Introduction Cory Doctorow’s KickstarterLegendary Nintendo game designer published 200+ videos on gamedev for free.Sponsored by Excalibur.jsExcalibur.js is the friendly TypeScript game engine for making 2D web games. Use your TypeScript or JavaScript skills to make games! Excalibur comes out-of-the-box with everything you need to make web games, like physics, sprites, animations, sound effects, input, and particles. Design your assets with tools like Aseprite and Tiled, then load them natively using first-party plugins.MusicSeahorse Dreams by Kubbi (Spotify)

16 snips
Aug 26, 2025 • 51min
TypeScript Go Nightly Improvements, Rslint Announced, and Big Bun Updates | News | Ep 32
This week, dive into the major updates with TypeScript Go and the introduction of Rslint, a game-changing linter. Discover Bun's impressive speed boosts and memory reductions. Next.js 15.5 rolls out type-safe routing, while Angular goes zoneless! The community showcases an exciting Hangman project in TypeScript, alongside a discussion on safeguarding browser assets. Plus, get tips on efficient testing in CI and deploying code effectively with feature flags and observability. It's a jam-packed session of innovation and insights!


