#725 — February 28, 2025
✏️ Whenever we include more than a few links about TypeScript, we get complaints from people who don’t like it. We get that, we love you folks, and we’re aware. TypeScript isn’t our main focus but we do cover it, including critical pieces. That in mind, prepare yourself for our top feature… but the rest of the issue is mostly JavaScript, promise! 😅
__
Peter Cooper, your editor
JavaScript Weekly
Developer Implements ‘Doom’ in TypeScript’s Type System — A curious quirk of TypeScript’s type system is that it is Turing-complete which has led some developers to implement apps entirely in the type system. One such developer has spent eighteen months producing 177 terabytes of types to get 1993’s Doom running with them. Ridiculous and amazing in equal measure, he ▶️ explains the project in this widely lauded 7-minute video. 👏
Sarah Gooding (Socket)
Functional JavaScript First Steps, v2 — A friendly, practical introduction to functional programming fundamentals in JavaScript. Learn the power of the pure function while exploring functional programming paradigms.
Frontend Masters sponsor
Bun v1.2.3 and v1.2.4 Released — The rapid pace of progress on the JavaScriptCore-based runtime is only increasing. v1.2.3 pushes frontend dev server features (run bun ./index.html and all the bundling is done for you). bun init can now be used to create a new React project. Meanwhile, Bun 1.2.4 builds macOS apps 60% faster and macOS executables can now be code signed.
Jarred Sumner et al.
What is TypeScript? An Overview for JavaScript Programmers — You may have noticed esteemed JavaScript developer and author Dr. Axel has been on a TypeScript odyssey recently. Here he does a good job at boiling down the what (rather than the ‘why’) of TypeScript. A handy primer on what’s going on, even if you don’t plan to use it, since you’ll end up interacting with it somewhere..
Dr. Axel Rauschmayer
IN BRIEF:
⭐ The Chromium team is progressing with shipping the Observable API. This is a big deal, especially for libraries like RxJS.
📊 BenchJS is an online JavaScript benchmarking sandbox worth playing with.
A look behind the scenes at recent progress on the records & tuples proposal for JavaScript (currently stage 2 at TC39). You can play with the feature here.
Windows 95 in Electron is, unsurprisingly, Windows 95 running in an Electron app! v4.0 adds Office 95 and IE 5.5 for some (limited) browsing of the Web.
📊 The results of the State of React Native 2024 survey are out.
RELEASES:
Next.js 15.2 – Now with a redesigned debugging experience and experimental support for React’s new View Transitions API and using the Node.js runtime in middleware.
Astro 5.4 – Now with remote image optimization and experimental responsive image support in Markdown.
ESLint v9.21.0 – Now with a –ext CLI option to lint files with a particular extension.
Ember.js 6.2, Angular 19.2, Node.js v23.9 (Current)
📒 Articles & Tutorials
React Libraries for 2025 — Each year, prolific React blogger Robin updates his post covering his opinionated list of essential React ecosystem libraries. He covers a lot of angles from project creation and package management through to state management, animation, form creation, auth, and i18n.
Robin Wieruch
Turbocharging V8 with Mutable Heap Numbers — The V8 team uses the JetStream2 benchmark suite to investigate performance issues and has implemented a new optimization yielding not just a 2.5x improvement in the async-fs benchmark but in other areas too.
Victor Gomes (V8)
Wish Your AI Co-Pilot Actually Knew Your Codebase? — Try the most context-aware Developer AI. Augment deeply understands your codebase, documentation, and dependencies.
Augment Code sponsor
Subverting Control with Weak References — A weak reference differs from a normal reference in that it doesn’t prevent a referenced object from being garbage collected. Most modern JS runtimes support them and James shows how they can be useful.
James Long
⭐ How JIT (Just In Time) Compilation Makes JavaScript Faster Royal Bhati
📄 Using AI in the Browser for Typo Rewriting – A poke around one of Chrome’s newest AI features. Raymond Camden
📄 A Mere Mortal’s Introduction to JIT Vulnerabilities in JS Engines Josiah Pierce
📄 How to Do Visual Regression Testing in Vue with Vitest Alexander Opalic
📄 Why We Ditched Next.js and Never Looked Back Stewart and Snelling
📄 Micro Frontends with Angular and Native Federation Manfred Steyer (Angular Blog)
🛠 Code & Tools
Svelvet 11: Build Node-Based UIs with Svelte — A mature Svelte component library for creating interactive node-based UIs and diagrams. v11 adds the ability to toggle between ‘snap grid’ and freeform modes for manipulating elements. (There’s a live demo at the bottom of the homepage.)
Open Source Labs
React Native 0.78 Released — A big release for React Native as it ships React 19 support (which requires some tweaks when upgrading) and some more minor tweaks.
Novak, Cucci, Gupta and Cipolleschi (Meta)
🔒 Protect Against Bots, Fraud, and Abuse in Real Time — WorkOS Radar protects your app with advanced device fingerprinting — stop fake signups, free tier abuse, bot attacks and brute force attempts today.
WorkOS sponsor
Random: Seedable Random Number Generator — You’ve got Math.random but this library takes things a few steps further with easy ways to create random values of various types and using different distributions (e.g. normal distribution, Bernoulli, Poisson, Pareto and Weibull).
Travis Fischer
QuickJS Sandbox 2.0: Execute JS/TS in a QuickJS Powered Sandbox — QuickJS is a small, embeddable JavaScript engine built by Fabrice Bellard and this extends it to make it easy to run code in an isolated sandboxed environment, along with some basic Node module support and a virtual file system. GitHub repo.
Sebastian Wessel
PrimeVue 4.3 – A UI component suite for Vue, now with a new ‘theme designer’ tool including a Figma-to-code feature.
🗓️ React Big Calendar 1.18 – Google Calendar/Outlook-like calendar component. Now with React 19 support.
InversifyJS 7.0 – Inversion of control container for JavaScript. There’s a v6-to-v7 upgrade guide.
React Markdown 10.0 – Component to render markdown. (Demo.)
fast-png 6.3 – Pure JavaScript PNG image decoder and encoder.
Mercurius 16.1 – Implement GraphQL servers on top of Fastify.
Varlet 3.9 – Material Design-inspired component library for Vue 3.
file-type 20.4 – Detect the file type of a file, stream, or data.
FxTS 1.5 – Functional library for TS/JS devs.
📰 Classifieds
🎹 STRICH: Add blazing fast and reliable 1D/2D Barcode Scanning to your web apps. Free demo app and 30-day trial available.
Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by 1000s of orgs, including Dropbox, Lattice, Bilt Rewards and many more.
📣 Creators of the State of JS, Vue.js, Vite, Pino & Fastify — have you seen the new JSNation speakers? Get 10% off with code JSWEEKLY.
Bit – A build system framework for development of composable software. Natively to Harmony, and support Node.js, React apps (with Vite), NextJS, Angular, Vue and more.
📢 Elsewhere
A quick roundup of some of other interesting updates or useful resources in the broader developer landscape:
Remember Ajax? The popular term bringing together several technologies involving asychronous JavaScript making dynamic updates by calling the server was coined in this article 20 years ago this month.
🤖 Is it viable to have LLMs write alt-text for your images? Dries Buytaert put a few models through their paces.
GitHub is getting involved with the AI developer agent game and shows off a preview of its new Copilot ‘agent mode’.
🌊 A detailed look at the techniques behind high-performance, real-time fluid simulations with WebGPU.
Electronic Arts certainly doesn’t make a habit of open sourcing old games, but it’s just done that for 1996’s Command and Conquer: Red Alert, one of the pioneering games in the real time strategy genre.