#686 — May 2, 2024
JavaScript Weekly
React 19 Now in Beta — While designed to get library developers prepared for the eventual React 19 release, this is nonetheless a huge step, with full support for Custom Elements (Custom Element support has long been a thorn in React’s side), all the latest React Server Components goodies, Actions, use, and more besides.
The React Team
💡 If you want to upgrade ASAP, there’s a thorough upgrade guide available, but consider upgrading via React 18.3 first.
▶ Let Me Be: “const … Is Stupid and You’re Using It Wrong” — An entertaining 12-minute talk on misunderstandings around the use of const vs let. This was bound to provoke some strong reactions (see the Twitter thread) but let him make his point!
Ryan Florence
Start Coding for Free! Build Real-Time Chat Messaging in Days — Looking to quickly integrate your desired combination of low-level API access and pre-built Stream libraries and components? Find out how to get started with Stream today.
Stream sponsor
Announcing TypeScript 5.5 Beta — It’s not even the final release (expect that in a month or two) but 5.5 has many people excited as it has many major enhancements, including inferred type predicates, the ability to import types in JSDoc via comments, regex syntax checking, isolated declarations, and more. If you want more practical examples, Matt Pocock 🐦 wrote a good Twitter thread.
Microsoft
IN BRIEF:
The New Stack has a feature on Ryan Dahl and his opinions on packaging, JSR, and even TypeScript.
MoonBit is a WebAssembly driven cloud platform and it now has a JavaScript backend too that claims to be very fast.
If you noticed the JSDelivr CDN went down earlier, here’s why.
Zachary Lee has a quick guide to React 19 Beta taking more of a code-led approach than the release notes.
RELEASES:
⭐️ Svelte 5 Release Candidate – “no anticipated breaking changes between now and the stable release.” In a quick talk, ▶️ Rich Harris explains what’s new.
React 18.3 – The beta of 19 may be more exciting, but 18.3 will help your app’s transition by not breaking anything that works on 18.2 while providing more deprecation warnings.
Bun 1.1.6 – Now supports UDP sockets, Array#sort gets a lot faster, and 1.1.5 introduced cross-compilation for standalone executables.
Astro 4.7 – There’s also a roundup of what’s new with the project overall.
Node.js 22.1 (Current) and Deno 1.43
📒 Articles & Tutorials
‘I Reviewed 1,000s of Opinions on HTMX’ — htmx is an increasingly popular way to use modern, dynamic browser features through creative use of HTML attributes, rather than hand writing JS for everything. Dylan looks at the pros and cons through the lens of community sentiment.
Dylan Huang
Maybe MOAR Is Not the Answer 🫠 — Turns out a relentless push for MOAR features and developers was wrong. Leaders could do with some reflection on less.
Test Double sponsor
Native Support for CJS/ESM Interoperability Begins in Node 22 — An overview of a new era for Node developers when working with both CommonJS and ECMAScript modules.
Zachary Lee
Finally Understanding How Array.sort(comparator) Works — “After 13 years of JavaScript, I finally have a way to remember how the comparator function in Array.sort() works..”
James Kerr
Detecting JavaScript Support in CSS — A way to provide alternative CSS rules depending on whether or not JavaScript is available in the user’s browser.
Ryan Mulligan
Build Advanced Interactive Experiences with the StackBlitz SDK — Join our live stream on programmatically embedding interactive dev environments on your site.
StackBlitz sponsor
📄 Digging Tunnels out of a JS Sandbox – “.. the journey of unearthing a few different vulnerabilities in Deno.” Secfault Security
📄 How to Build Well-Documented and Authenticated APIs with Node and Fastify Julían Duque (Heroku)
📄 Using Vite to Rebuild Local Dependencies in an NPM Workspace Prosopo
📄 What is Vite (and Why is it So Popular)? – Eric Simons
📄 Cheat Sheet for Moving from jQuery to Vanilla JavaScript Tobias Ahlin
📄 When to Use Bun Instead of Node.js Antonello Zanini
🛠 Code & Tools
extension.js: Zero-Config, Cross Browser Extension Dev Starter — The goal is to make it as simple as a npx extension create my-extension to get started with building your own browser extensions. GitHub repo.
Cezar Augusto
Layer Cake: A Graphics Framework for Svelte — This library gives you a baseline for creating responsive web graphics via common elements (e.g. a coordinate system and scales). See numerous example components here.
Layer Cake
Happy World Password Day! Curious About How We Got Here? — Learn about the history of passwords in this timeline that spans millenniums, and find out why passwords are history.
FusionAuth sponsor
Tagify 4.26: An Elegant Input Component for Tags — The polished demos show a lot of effort has been put in here. GitHub repo.
Yair Even-Or
Journey.js: No-Dependency Library to Create Interactive Guided Tours — The live examples are basic, but the focus on accessibility and built-in support for 51 languages are pluses.
William Troup
📺 YouTube.js: Unofficial YouTube API Client Library — ‘InnerTube’ is an API used by YouTube’s clients, and you can use it too, although they might not like it. It runs on Node.js, Deno, and modern browsers.
LuanRT
😀 Emoji Mart 5.6 – Emoji selection component for the Web (above).
✍️ Atrament 4.2 – Elegant drawing and handwriting on Canvas.
📄 React-PDF 8.0 – React component to display PDFs. Now supports React 19.
TanStack Virtual 3.5 – Headless UI for virtualizing scrollable elements.
TestCafe 3.6 – Automated end-to-end web testing framework.
Preact 10.21 – The 3KB React compatible alternative.
jQuery UI 1.13.3 – Yes!
🎁 And one for fun..
Virtual x86: x86 Virtualization with JS and WASM — Run Linux, numerous older versions of Windows, BSD, MS-DOS, and other systems right in the browser (and quickly, too). Not a new project, but I’m always impressed how it’s constantly getting updates. GitHub repo.
Fabian Hemmer
The BASIC programming language has just turned 60 years old, so why not fire up the MS-DOS image (above) and have some fun in QBasic? 😉