Node.js v22 Enters Long Term Support (LTS)

On October 29, 2024,* Node.js v22 officially transitioned into *Long Term Support (LTS) with the codename ‘Jod’. For developers and organizations relying on the stability of Node.js for production environments, this transition marks a key milestone for Node.js 22.x, ensuring it will receive critical updates and security support for years to come. Let’s take a closer look at what this means, along with a refresher on the Node.js release lifecycle 🔄.

I believe the transition to LTS makes this release line more stable, especially given the improvements made over 10 releases. This line now offers a wealth of features, providing a mature and reliable option for production use –Rafael Gonzaga, Principal OSS Engineer at NodeSource

Understanding the Node.js Release Lifecycle

The Node.js release lifecycle is designed to provide a balance between innovation and stability, allowing developers to explore new features while maintaining the confidence that production applications will have the longevity of support they need. Here’s a breakdown of each stage:

Current Release: Each new major version of Node.js starts in the “Current” phase, a six-month period in which the community can test new features, APIs, and performance improvements. During this phase, library maintainers and developers are encouraged to adopt new features, providing valuable feedback. The “Current” release is updated frequently, helping the community prepare for the latest advancements in Node.js.
Active LTS: After the Current phase, Node.js releases undergo a divergence based on version number. Odd-numbered releases (e.g., v21) enter unsupported status, while even-numbered releases (e.g., v22) transition to Active LTS status. In this phase, which typically lasts one year, the Node.js version is deemed stable and ready for production use. This period includes patches for bugs, critical fixes, and security updates. It is the most widely used phase for Node.js releases in production environments.
Maintenance LTS: After the Active LTS period concludes, a Node.js release enters the Maintenance LTS phase. This phase, lasting approximately 18 months, focuses on essential bug fixes and security patches. No new features are introduced during this time, which helps to ensure stability for production applications. Maintenance LTS is the final phase before a version reaches the end of its lifecycle.
End of Life (EOL): After Maintenance LTS, a Node.js version reaches End of Life (EOL), meaning it will no longer receive official support or updates from the Node.js project. Users running EOL versions are encouraged to upgrade to supported versions to maintain security and receive the latest patches.

Node.js typically maintains three active release lines simultaneously. This includes one Current version, one Active LTS version, and one Maintenance LTS version. By keeping a mix of releases in each phase, the Node.js team provides a structured progression of stability while supporting a range of user needs across different environments.

Node.js v22.11.0 “Jod” (LTS): What’s New?

Now that we understand the Node.js Life Cycle, let’s see what’s new on the latest LTS. With Node.js v22.11.0, the 22.x release line has officially moved into Active LTS. The release includes an update to metadata, like the process.release object, to reflect this new LTS status. Let’s look at some key highlights of Node.js v22:

1. Built-in WebSocket Client

A significant development in Node.js v22 is the built-in WebSocket client, now enabled by default for browser compatibility. Previously, developers had to rely on third-party libraries for WebSocket functionality, but with Node.js v22, the process is streamlined. Developers can now open bidirectional communication channels between client and server without external dependencies, paving the way for efficient real-time application development.

2. Stable Watch Mode

Previously marked as experimental, the Watch Mode feature is now stable in Node.js v22. Developers can use –watch to monitor files and automatically restart processes on changes, eliminating the need for third-party tools like nodemon. This addition can significantly boost productivity during development by reducing manual restarts.

3. ESM Graphs in require()

Working with ECMAScript Modules (ESM) in Node.js has often required intricate workarounds, especially when integrating with CommonJS modules. Node.js v22 simplifies this by allowing the import of entire ESM graphs using require() through the –experimental-require-module option. This feature provides smoother module interoperability, making it easier to develop modular, maintainable code without complex dependencies.

4. Simplified Script Execution with –run

An experimental –run flag has been added to execute scripts directly from package.json, providing a faster alternative to npm run for frequently used commands. This feature allows quicker access to scripts without the overhead of loading npm, making it particularly useful for routine testing and debugging.

5. V8 Engine Upgraded to Version 12.4

With the V8 engine update to version 12.4, Node.js v22 introduces a range of advanced capabilities:

WebAssembly Garbage Collection improves memory handling for WebAssembly applications.
New JavaScript Functions: Array.fromAsync() for asynchronous array generation, new Set methods, and iterator helpers give developers powerful new tools.
High Watermark Increase: The default high watermark for streams has been raised from 16 KB to 65 KB, boosting performance for memory-intensive applications, though developers working with limited memory can adjust it as needed.

These upgrades further enhance Node.js’s ability to support modern JavaScript applications with robust performance and efficient memory management.

6. Pattern Matching with glob and globSync

In this release, Node.js introduces pattern-matching capabilities to the node:fs module through glob and globSync. These new methods simplify file system operations by allowing developers to search and manipulate files based on specific patterns, streamlining tasks like organizing files or managing directory structures.

7. Optimized AbortSignal Creation

Node.js v22 enhances AbortSignal creation performance, which directly benefits high-level APIs that utilize this class, including fetch and the Node.js test runner. This improvement ensures that applications relying on these APIs can now execute more efficiently, especially in performance-sensitive environments.

Is particularly exciting how Node.js v22 fills some long standing gaps by incorporating features that truly deserve to be part of the core runtime. The inclusion of a built-in WebSocket client and the stabilization of Watch Mode are game-changers. These additions eliminate the need for external libraries and tools that developers have relied on for years to perform essential tasks. The ‘Jod’ release not only streamlines the development process but also enhances performance and security. It’s a significant step forward that reflects the project’s commitment to evolving based on the real needs of its user community –Adrian Estrada, VP of Engineering at NodeSource

Why Move to Node.js 22.x?

As Node.js v22 moves to LTS status, it becomes an attractive option for long-term projects and production environments. The simplified module handling, and built-in tools make it a robust choice for developers looking to build scalable, modern applications. If you’re considering an upgrade, now is an ideal time to explore Node.js v22’s capabilities and prepare for its benefits in a stable, supported environment.

For developers and businesses on older Node.js versions, Node.js v22 now presents a compelling choice. Its Active LTS phase means it’s ready for production, with a guaranteed support timeline, critical security updates, and enhanced functionality. Here’s why it might be worth considering an upgrade:

Extended Support: Node.js v22 will remain in Active LTS until October 2025, providing a full year of active support before it transitions to Maintenance LTS, which will continue until April 2027.
Stability for Production: The LTS phase is carefully managed to minimize risk, with a focus on bug fixes and security patches rather than new features. This makes Node.js v22 a safe and stable choice for production applications.

Node.js v20 is now in maintenance mode, which means, no features will land there anymore (except security releases).

How to Upgrade to Node.js 22.x

For organizations and developers ready to migrate to Node.js v22.x, here are some best practices to keep in mind:

Test Your Application: Before rolling out any major upgrade, thoroughly test your application in a staging environment. Node.js v22.x introduces certain performance optimizations and under-the-hood improvements, so it’s essential to confirm compatibility with your codebase and any dependencies.
Update Dependencies: Make sure all libraries and dependencies are compatible with Node.js v22.x. Check for deprecations or breaking changes, especially if you’re coming from an older LTS version.
a. You can update your dependencies for Linux using NodeSource N|Solid & Node.js Binary Distributions
b. For most developers, especially on Unix-based systems, nvm provides the easiest upgrade path, you can run:

nvm install 22
nvm use 22

c. For MacOS you can instal Node.js via Homebrew:

brew update
brew upgrade node

d. Downloading from the Official Node.js Site: https://nodejs.org/en
Monitor Performance: After upgrading, monitor application performance to ensure that your application continues to function optimally. Node.js v22.x comes with improved diagnostics and performance, but monitoring will help catch any unforeseen issues early. Use N|Solid to get the deepest, most valuable performance and security telemetry in production to help you resolve issues faster. We are working on the “State of Node.js Performance 2024” which will show the performance difference between v20 and v22, keep an eye on the NodeSource blog to not miss it.
Follow Best Practices for Security: Node.js v22’s improves security, but it’s still important to implement additional security measures, such as enforcing HTTPS and using secure coding practices.

The N|Solid Runtime supports the latest LTS version. Download it now for free here.

Final Thoughts

The release of Node.js v22.11.0 as an LTS version represents another significant step in the evolution of the Node.js platform, particularly for developers and organizations seeking stability and security. With Active LTS support extending into late 2025, and a Maintenance phase until April 2027, Node.js v22.x is an excellent choice for those aiming for long-term support in production environments.

The transition of Node.js 22.x into LTS highlights the Node.js project’s ongoing commitment to providing a secure, reliable platform for the global developer community. For those on earlier Node.js versions, now is an ideal time to consider upgrading to Node.js v22.x and benefiting from its extended support period.

Stay tuned for updates on future releases, as Node.js continues to deliver powerful tools and capabilities to meet the needs of an ever-evolving tech landscape. Use N|Solidto monitor Node.js 22.x performance.

Looking for advanced or enterprise support for Node.js? NodeSource is the premier provider, trusted by organizations like Delta, Visa, and Kaiser, to ensure robust support for their Node.js platforms. Partner with us to keep your applications secure, performant, and reliable.

JSConf is back

#​712 — November 7, 2024

Read on the Web

JavaScript Weekly

JavaScript’s ??= Operator: Default Values Made Simple — The ??= nullish coalescing assignment operator snuck into JavaScript a few years ago via ECMAScript 2021 and has been broadly supported almost everywhere for ages. Trevor shows off how it can tighten up your assignments here.

Trevor I. Lasn

💡 He also took a similar look at the pipeline operator |>, but this feature is still only in draft as a proposal.

🇺🇸 JSConf is Back; Here’s the Details — Two months ago, the OpenJS Foundation announced that the popular JSConf brand was joining the foundation and a new North American JSConf event would happen in due course. Now you can mark your calendars for October 14-16, 2025 for an event taking place in the Chesapeake Bay area of Maryland, USA.

OpenJS Foundation

Handsontable: A Powerful Data Grid for Internal Apps — Speed up the development of your React app with a feature-rich data grid – sorting, filtering, multiple cell types, built-in formulas, CRUD operations, and an extensive API. Come visit our booth at React Summit US on Nov 19th to see it in action!

Handsontable sponsor

Announcing Rspack 1.1Rspack is a fast, Rust-powered alternative to Webpack but with the same API. v1.1 boasts being 10% faster than v1.0 and has an improved, though still experimental, incremental build feature. If super fast build times are your bag, this needs to be on your radar.

The Rspack Team

IN BRIEF:

🏆 The OpenJS Foundation has honored six JavaScript developers with awards in categories including Unsung Hero and Pathfinder for Education.

The working group behind the JSR package registry has met to outline plans for an open governance model and a roadmap to enhance JS package management.

⚠️ Phylum takes a look at yet another (ongoing) typosquatting campaign to try and trick JavaScript developers into installing malicious packages.

There’s fewer than two weeks left to take the State of React 2024 survey.

Storybook offers a sneak peek at their Storybook Test tool for fast UI testing.

RELEASES:

VitePress 1.5 – Evan You’s Vite and Vue-powered static site generator.

create-vue 3.12 – The recommended way to start a Vite-powered Vue project. Now with an experimental Oxlint integration.

ESLint v9.14.0 – Now supporting import attributes and regexp modifiers.

Mermaid 11.4 – The popular diagram / charting tool adds Kanban diagrams.

React Navigation 7, Electron 33.1, TinyMCE 7.5.0, Bun v1.1.34

📒 Articles & Tutorials

Wasmer Adds Node.js and Bun SupportWasmer is a Rust-powered WebAssembly runtime and Wasmer 5.0 adds V8 and JavaScriptCore backend support, meaning you can try all sorts of things like, say, running Clang, Python, or even compiled JavaScript apps inside your own JavaScript app..

Syrus Akbary

Why Would Anyone Need Generator Functions? — A golden oldie that I enjoyed revisiting because it covers an oft misunderstood and not particularly commonly encountered JavaScript feature.

James Sinclair

Breakpoints and console.log Is the Past, Time Travel Is the Future — Next-level testing in any editor, 15x faster with Interactive Time Travel Debugger, real-time insights & advanced coverage in a new UI.

Wallaby Team sponsor

The Most Effective Ways to Improve Core Web Vitals — Everyone wants their site to be as performant as possible, especially when Google factors performance into its rankings, but how? Google shares a variety of practical techniques to improve your INP, LCP, and CLS metrics here.

Google

Why Code Security Matters – Even in Hardened Environments — A well diagrammed dive into a technique that allows malicious parties to turn a file write vulnerability in a Node.js app into a remote code execution exploit even when the file system is read-only.

Stefan Schiller (Sonar)

Generating Random Mazes with JavaScript — A fun, well-presented walkthrough of a basic maze generation process.

Paul Hebert

Along similarly fun lines is Chris MMO’s Generating Lever-Door Puzzles.

MongoDB Helps Devs Build Better AI Agents with LangChain & Hybrid Search — It’s easier than ever to build AI agents with LangChain, perform hybrid search and ingest large-scale documents.

MongoDB sponsor

🚗 Hacking Cars in JavaScript – Or “Running Replay Attacks in the Browser with the HackRF.” Charlie Gerard

📄 How Bun Supports V8 APIs Without Using V8 (Part 2) Ben Grant (Bun)

📄 How to Create an Organic Text Distortion Effect with Infinite Scrolling – There’s a live demo of the striking, though disorienting, effect. Jorge Toloza

📄 Vercel Makes Changes to Next.js to Simplify Self-Hosting Loraine Lawson (The New Stack)

📄 The Latest in Angular Change Detection – All You Need to Know Krzysztof Skorupka

🛠 Code & Tools

npmpackage.info: Detailed Package Info on a Single Page — Give this online tool the name of an npm package and you get a quick ‘dashboard’ style view of the project’s main statistics, covering areas like quality scores, commits, open issues, releases, bundle size, and more.

Shrinath Nayak

📊 NPM Chart is another cool new site focused on showing npm package download stats.

Prompt, Run, Edit, and Deploy Full-Stack Web Apps with bolt.new — StackBlitz recently released an in-browser AI web development agent: bolt.new! Give it a try today.

StackBlitz sponsor

Docusaurus 3.6: The Docs-Oriented Static Site Generator — Meta’s Docusaurus is a popular way to build docs sites (like these). v3.6 is focused on performance, now using tools like Rspack and SWC to make builds super fast.

Meta

Immutable.js 5.0: Immutable Collections for JavaScript — Provides numerous persistent immutable data structures including a list, stack, map, ordered map, set, ordered set, and records.

Lee Byron and Contributors

Sonner 1.7: The Toast Notification React Component — There’s a live demo to try on the homepage, or see the GitHub repo. v1.7 focuses on animation improvements, browser support, and React 19.

Emil Kowalski

Quaternion.js: A JavaScript Quaternion library — Last week we featured the author’s Fraction.js library, now we go a step deeper with a way to work with 3D rotations using quarternions.

Robert Eisele

BlockNote 0.19 – ‘Notion-style’ block-based editor. Now supporting column-based layouts and client-side export to .docx and PDF. There’s a demo on the project’s homepage.

🔐 OpenPGP.js 6.0 – OpenPGP implementation for JavaScript now supporting the new version of the OpenPGP spec, RFC 9580.

Fastify 5.1 – The fast, low overhead Node.js web framework.

xr 6.4 – Bring VR/AR to React Three Fiber apps.

📰 Classifieds

⚙️ Create entire web apps with Reactile and let it handle your widgets and windows within a single browser tab. 1-month free trial. Try it now.

Meticulous automatically creates & maintains E2E UI tests. Zero flakes. Used by Lattice, Bilt Rewards and others.

Pythagora is an AI dev tool that builds production-ready tools (not demo apps). It writes the code and talks to you in the process.

📗 We’re also reading..

We’ve also had some tabs open that aren’t JavaScript specific but you might find interesting nonetheless:

🫣 Weird Lexical Syntax by Justine Tunney. Justine is building a syntax highlighter and set out to learn 42 programming languages in a single month to help figure out the edge cases. She recounts the surprising things she discovered about the syntax of various languages, including JavaScript.

👻 Before You Buy a Domain, Check if it’s Haunted by Bryan Braun. Buying a domain for a side project is always fun, but it’s far less fun when the domain was previously used for nefarious purposes and comes with baggage..

🤔 What Has Case Distinction But is Neither Uppercase or Lowercase? by Raymond Chen. It sounds like a riddle, but there are actually Unicode characters that have case distinction yet are neither uppercase nor lowercase themselves.

CityJS Medellín 2024 Recap: A Thriving JavaScript Community and a Big Announcement for Latin America!

CityJS Medellín 2024 was an amazing conference that drew together both local and international developers in Medellín for an immersive experience focused on JavaScript, innovation, and collaboration. Held on October 25-26, the conference underscored Colombia’s growing influence in the tech world and showcased the talent of Colombian developers alongside renowned global experts. As the first CityJS event in Medellín, it provided a space for learning, networking, and exploring the future of JavaScript and related technologies.

NodeSource was thrilled to support CityJS Medellín 2024 as a Gold Sponsor, with five dedicated members from our team actively involved in organizing this incredible event.

NodeSource Team at CityJS Medellin

Highlights from CityJS Medellín

CityJS Medellín was packed with insightful talks and workshops, each offering unique perspectives on current and future developments in JavaScript. Attendees could explore diverse topics, from foundational JavaScript practices to cutting-edge innovations in AI, web development, and performance optimization.

Keynote Talks

The conference featured prominent speakers whose talks set the tone for a globally aware developer community. Robin Ginn, Executive Director of the OpenJS Foundation, opened with a talk on the pivotal role of JavaScript in today’s tech landscape. She discussed how JavaScript and open-source projects are shaping the future of AI, cloud computing, and the metaverse, encouraging attendees to take part in open-source initiatives that are driving these advancements.

Miguel Ángel Durán García (@midudev), a well-known developer and content creator, followed with an inspiring presentation on the latest advancements in JavaScript, HTML, and CSS. He delved into upcoming features that will redefine web applications, including new capabilities for JavaScript, which allow for richer and more interactive user experiences.

Wes Todd, a member of the Express.js Technical Committee, gave a much-anticipated talk titled “Express Forward,” addressing the misconception that Express is “dead.” He shared updates on the Express.js project, its ongoing evolution, and the efforts to revitalize its role in modern web applications. Todd’s talk underscored the resilience of Express.js as a backbone of many Node.js applications.

Hands-On Workshops

CityJS Medellín offered several workshops for hands-on learning, where attendees could deepen their skills with practical, instructor-led sessions, Rafael Gonzaga from NodeSource introduced attendees to Node.js performance analysis using N|Solid. His session provided developers with tools and techniques to analyze and improve application performance, a crucial skill in creating scalable and efficient Node.js applications.

Other workshops focused on specific technologies, such as Giovanni Laquidara’s session on developing smart TV applications using React Native. Laquidara demonstrated how JavaScript can bridge web development with the world of smart TV applications. Adrian Estrada from NodeSource, followed with an introduction to building LLM-based applications, helping developers understand how to implement Large Language Models in JavaScript.

Cutting-Edge Talks on AI and Geospatial Web Development

AI was a hot topic at CityJS Medellín. Lizzie Siegle from Cloudflare delivered a beginner-friendly yet powerful talk on prompt engineering, showing attendees how to interact effectively with Large Language Models (LLMs). Marco Ippolito presented a deep dive into JavaScript Abstract Syntax Trees, sharing tools and techniques for conducting advanced code searches in large files, which can streamline code analysis in complex projects. His insights into ASTs underscored the need for efficient code search tools in projects of any scale.

Courtney Yatteau from Esri introduced attendees to Geographic Information Systems (GIS) and demonstrated how JavaScript developers can integrate geospatial data into their projects. Her talk covered essential GIS concepts and practical examples, showing how spatial data can transform applications across sectors like urban planning and environmental monitoring.

Women’s Participation

CityJS had a great presence of women in the conference, promoting the importance of diversity and inclusion in tech events. Congratulations 👏

Innovations in Web and AI Technologies

CityJS Medellín was also a showcase of the latest ideas around AI and JavaScript integration in the browser. Miguel Useche presented a compelling look at running Large Language Models directly in the browser using WebAssembly and WebGPU. He explored the potential of web-based LLMs to bring sophisticated AI capabilities into users’ hands without relying on server-based processing.

Anuar Harb introduced attendees to creating stunning 3D models with AI, using tools like Three.js and Spline. His talk showed how JavaScript can power immersive web experiences, with 3D models generated by AI adding a new layer of interactivity to websites.

Local Talent and Community Impact

A unique aspect of CityJS Medellín was its strong focus on amplifying Colombian voices and celebrating local talent. Speakers like Juan David Nicholls, who covered event-driven architectures using Temporal and React, and Cristian Daniel Marquez Barrios, who discussed the possibilities of JavaScript in quantum computing, exemplified the cutting-edge work being done by developers in Colombia. Their insights showcased Medellín’s potential to influence global tech conversations.

Another standout local speaker, Andres Villegas, presented on distributed async/await patterns with the Resonate JavaScript SDK, offering a fresh perspective on scaling applications across distributed environments. His talk contributed to the growing knowledge base in distributed computing and serverless technologies.

Reflections on CityJS Medellín 2024

CityJS Medellín 2024 was a landmark event for Colombia’s tech community. With a diverse program that spanned hands-on workshops, forward-looking talks, and interactive sessions, the conference created an environment that encouraged collaboration, learning, and inspiration.

For attendees, CityJS Medellín provided not only valuable technical insights but also connections with industry leaders and like-minded developers, building relationships that will undoubtedly fuel future projects and ideas. The success of CityJS Medellín reaffirms Colombia’s role as a key player in the JavaScript ecosystem and sets a high bar for future tech events in the region.

JSConf Latam 2025!

CityJS Medellín 2024 concluded with an exciting announcement that electrified the audience: for the first time, Medellín will host JSConf Latam, marking a historic milestone as the conference makes its debut in Latin America. This highly anticipated event will rotate between Latin American countries each year, starting with Medellín ❤️

JSConf Latam’s arrival cements Colombia’s role as a leading force in the global JavaScript community and signifies a broader commitment to nurturing talent and innovation across the region. This landmark event will not only spotlight local and international experts but also amplify Latin America’s contributions to the global tech landscape, inspiring developers throughout the region to participate and innovate.

The conference will be held in November 2025. To assist or submit a CFP, keep an eye at jsconf.lat

Cutting JavaScript into two: trick or treat?

#​711 — October 31, 2024

Read on the Web

JavaScript Weekly

Python Jumps to #1 on GitHub Over JavaScript, But…GitHub Universe took place this week, flooding us with data about how folks are using the platform. Of interest to those on social media was that Python has taken JavaScript’s #1 language crown, though many argued that TypeScript (now #3) made an impact here. In positive news, JS still ranks first for code pushes alone and there’s been a 15% jump in npm package consumption in the past year.

GitHub

🎉 In other GitHub news, their Copilot AI coding tool can now use alternative LLMs like Gemini and Claude, and GitHub Spark is a new AI-powered tool for rapidly creating and deploying small apps.

Implementing Clean Architecture in Next.js — Learn how to make projects testable and debuggable, independent of UI, framework, database, and external dependencies with the concept of Clean Architecture. Join us live on November 4th.

Sentry sponsor

Should JavaScript Be Split Into Two Languages? — Two weeks ago we linked to an interesting slidedeck presented at TC39 where it was proposed to split JavaScript into two languages: a basic core and a fully featured version that needs tooling to compile it down. This covers a bit more of the story and led to a particularly extensive Hacker News discussion too.

Dev Class

🤔 You could argue TypeScript is already that second language..?

IN BRIEF:

✂️ The latest version of VS Code has a new experimental feature for updating imports when you copy and paste between JS/TS files.

Lee Robinson and Delba de Oliveira present a quick recap of last week’s Next.js Conf 2024 and its main announcements.

🤖 Anthropic’s Claude AI system has introduced an ‘analysis’ tool for writing and running JavaScript within a sandbox, so Claude can perform various calculations and analysis before returning answers.

🙋 The Angular team is considering implementing a new Angular style guide to bring it up to 2024 standards and wants your input. The existing style guide was written in 2016.

RELEASES:

Node.js v22.11.0 (LTS) – Codenamed Jod, this marks Node v22 becoming the active LTS release of Node, a status it will maintain until late 2025.

Node.js v23.1.0 (Current) – The cutting edge Node release line makes JSON modules, import attributes, and the MockTimers test runner API stable.

📊 ApexCharts 4.0 – Popular JS charting library updates its SVG.js dependency.

Chakra UI v3 – A full rewrite for the comprehensive React component suite.

jQuery UI 1.14.1

📒 Articles & Tutorials

How We Shrunk Our JavaScript Monorepo Git Size by 94% — And by “we”, the author means Microsoft, which had an extremely large 178 gigabyte JavaScript monorepo on its hands – big enough that many employees had problems cloning it at all. Jonathan tells the full story here.

Jonathan Creamer

How to Roll Your Own Auth in JavaScript and TypeScript — A snappy look at how to build a session-based authentication system, something Robin notes “does not have to be complicated”.

Robin Wieruch

MongoDB Atlas Search Integration with BuildShip — MongoDB Atlas Search offers powerful full-text search, vector search, and hybrid search capabilities.

MongoDB sponsor

Using shadcn/ui with React 19 (and Next.js 15) — Fresh documentation from the shadcn/ui project on the specifics of using the popular component library with React 19 generally, though with a slight emphasis on Next.js 15.

shadcn

Reimplementing JavaScript’s == in JavaScript — What a trip. Whether or not you’re aware of the ‘quirks’ of JavaScript’s == operator, this could boggle your mind.

Evan Hahn

HTML Form Validation is Heavily Underused — An exploration of the “powerful validation mechanisms” of HTML forms, opining that they’re underused, and proposing why that lack of utilization may be.

everdimension

📄 Node.js, Pipes, and Disappearing Bytes – If piping a Node app’s output to another command, mysterious problems can arise.. Sam Lijin

📄 Introducing the New Svelte CLI Tool: sv Ben McCann

🛠 Code & Tools

Faker 9.1: Generate Fake, Realistic Data on Demand — Names, bios, addresses, zip codes, dates, monetary amounts, transactions, and a lot more besides. I really like the guided DevTools console based demo you can try – an idea other projects should consider. GitHub repo.

Faker.js Team

Fraction.js: Library for Working with Rational Numbers — The imprecise representation of floating point numbers can lead to all sorts of problems, so if you’re working with fractions at all, you might want a little more precision, which Fraction.js offers.

Robert Eisele

Handsontable: Spreadsheet-Like JavaScript Data Grid for Your App — Feature-rich data grid for developers seeking a powerful, customizable, and accessible solution to manage complex data.

Handsontable sponsor

Fedify: A Framework for Building ActivityPub Servers — If you want to join the fediverse with an app of your own (rather than leaning on Mastodon, say), this gives you the building blocks you need.

Hong Minhee

Yantra: A JavaScript Engine for .NET Standard — A managed JS engine for .NET Standard written in C# that supports both CommonJS and ES modules.

Yantra Team

SVG.js: SVG Manipulation and Animation Library — A lightweight approach without dependencies. There’s a demo on JSFiddle you can play with. GitHub repo.

Various Authors

Dependency Cruiser 16.5: A Way to Visualize Dependencies — If you want a look at the output, there’s a whole page of graphs for popular, real world projects including Chalk, Yarn, and React.

Sander Verweij

AuthKit: The World’s Best Login Box — Powered by WorkOS & Radix — AuthKit is a complete solution for authentication, authorization, and user management. It’s free up to 1 million MAUs and comes standard with RBAC, bot protection, MFA, and more.

AuthKit sponsor

🔊 WebAssembly Audio Decoders — Targeting both browser and Node.js use cases, this is a collection of WASM-powered audio decoding libraries for formats like MPEG I/II/III, FLAC, Ogg Opus, Ogg FLAC, Opus, and Ogg Vorbis.

Ethan Halsall

📺 YouTube.js 11.0 – Unofficial JS client for YouTube’s private API.

Serverless Express 4.16 – Run Express.js on AWS Lambda, API Gateway, Lambda@Edge, etc. Now supporting Express 5 too.

Execa 9.5 – Powerful process execution library for Node. When redirecting stdout or stderr to a file, you can now optionally append rather than replace.

MUI X 7.22 – Popular React component suite. Now with server-side support for Data Grid row grouping.

🗓️ react-calendar 5.1 – The ‘ultimate’ calendar for your React app.

📷 VisionCamera 4.6 – Advanced camera control for React Native.

Elliptic 6.6 – Plain JS elliptic curve cryptography implementation.

Acorn 8.14 – Small, fast, JavaScript-based JavaScript parser.

Strapi 5.2 – Popular Node.js headless CMS.

📰 Classifieds

🏠 Remote Senior Developer Experience Engineer – Passionate about React & GraphQL? Join us as a Developer Experience Engineer to elevate our dev community. Remote, EU timezone.

How Google handles authorization at scale. A technical comparison of Google’s Relationship-based authz system and Oso’s Authz as a Service.

A huge week for both Svelte and Next.js

#​710 — October 24, 2024

Read on the Web

JavaScript Weekly

Svelte 5 is Alive — The long awaited next major release of Svelte, the compiler-driven JS UI framework, is the “most significant release in the project’s history”, while remaining largely backwards compatible. A big addition is runes for explicitly declaring reactive state, but there’s much more besides. The official svelte.dev site has also undergone a big rebuild to act as an ‘omnisite’ for all things Svelte.

The Svelte Team

📺 If you want to see how to use Svelte 5, Syntax‘s Scott Tolinski has released ▶️ a 2 hour Svelte 5 basics course on YouTube.

FlexGrid by Wijmo: The Industry-Leading JavaScript Datagrid — A fast and flexible DataGrid for building modern web apps. Key features and virtualized rendering are included in the grid module. Pick and choose special features to keep your app small. Built for JavaScript, extended to Angular, React, and Vue.

Wijmo From MESCIUS inc sponsor

GenAIScript: Microsoft’s Generative AI Scripting Environment — Microsoft is really poking at AI from all angles. TypeChat introduced a type-safe way to talk to LLMs; now GenAIScript offers a JavaScript-powered way to programmatically assemble prompts and process responses. They claim it “brings essential LLM prompt tooling into a cohesive scripting environment.”

Microsoft

Next.js 15 Released — It’s a big week for the popular (some may even argue default) React framework with Next.js Conf starting today, as well as this release. It includes a codemod CLI for easier upgrading, async request APIs, alignment with React 19, and more.

Vercel

IN BRIEF:

Developer IDE firm JetBrains has announced its WebStorm JavaScript/TypeScript IDE is now free for non-commercial use which, notably, also covers paid content creators.

The popular shadcn/ui component library has unveiled a new suite of components for building sidebars.

Spectra is a hackable smartwatch seeking funding on Kickstarter (but it has passed its initial goal). ESP32-S3 based, it appears able to run JavaScript as shown in the ‘dev experience’ screenshots.

🙋 This year’s State of React survey is now open to take until November 19.

RELEASES:

⚛️ React Native 0.76 – A big release. The so-called ‘New Architecture’ is now used by default (so you can now use all the modern React features in RN too), the React Native DevTools are stable, and build times are faster than ever.

🥖 Bun is on a roll.. with three releases in the past week. v1.1.31 added support for node:http2 server and gRPC, v1.1.32 added Node’s crypto.hash method, and v1.1.33 was a bug-fix release.

Express.js 5.0 – Landed a few weeks ago, but now there’s an official post explaining the state of the project which has now passed a comprehensive third party security audit.

Medusa 2.0 – A Node.js-powered ecommerce platform.

React Compiler Beta, Turborepo 2.2, ESLint v9.13.0, Deno 2.0.2

📒 Articles & Tutorials

▶  Build a Sonic Infinite Runner Game Using Kaplay — A two hour walkthrough of using the Kaplay game library (formerly known as Kaboom.js) to build a complete, if simple, Sonic-branded game. You can also play it here.

JSLegendDev

New Wallaby 2.0 – Works with All Editors – A Massive Step Forward for JavaScript Testing — Experience faster JavaScript debugging, real-time insights, & enhanced coverage monitoring with Wallaby 2.0’s integrated UI.

Wallaby Team sponsor

Why I’m Skeptical of Rewriting JavaScript Tools in “Faster” Languages — Rewriting common JS infrastructure / build tools in ‘faster’ languages like Rust, Zig or Go has become popular in recent years, but is it necessary, asks Nolan?

Nolan Lawson

How to Create a Modern SPA with Django and Vue — If you can handle some Python in your life, Django is a powerful backend web framework and it’s quite happy to be paired up with a Vue.js frontend with GraphQL providing the glue.

The Dev Space

Learn How to Build a Full Stack Application Using React Native & Expo — Build a cross-platform full-stack app using a single codebase with scalable backend support and authentication.

Clerk sponsor

📄 Creating a 3D Hand Controller Using a Webcam, MediaPipe and Three.js Caio Bassetti

📄 How To Speed Up Your Vue App with Server Side Rendering Jakub Andrzejewski

📄 Angular’s Approach to Partial Hydration Loraine Lawson (The New Stack)

📄 Understanding npm audit and Fixing Vulnerabilities Niraj Chauhan

📄 Building a Mental Model of Node.js Streams Pavel Romanov

🛠 Code & Tools

match-sorter 7.0: Deterministic Best-Match Array Sorting — If you have an array of items you want to filter and sort ‘intelligently’ and deterministically, this offers a well-described, predictable algorithm. Play with a live CodeSandbox demo.

Kent C. Dodds

🤖 Transformers.js v3: Run Transformers in the Browser — A JS port of Hugging Face’s transformers Python library that can run natural language, vision, and audio machine learning models right in the browser. v3 adds WebGPU support for boosted performance and now supports Node, Deno and Bun too.

Hugging Face

Build Forms from JSON Using Drag & Drop UI — SurveyJS Libraries for Surveys & Forms — Integrate a JSON form editor with any backend. Enjoy complete control over your data with unlimited users and forms — no restrictions.

SurveyJS sponsor

Fetch Mock 12.0: Mock Requests by the fetch API — A flexible API for mocking HTTP requests made by fetch or fetch-imitating libraries. Supports browsers, Node, and web/service workers.

Rhys Evans

📊 Vizzu 0.14: A Library for Animated Data Visualizations — Making visualizations is one thing; animating them is much harder. Vizzu helps you create animated data stories and interactive explorers with a variety of showcase examples for inspiration.

Vizzu Inc.

eslint-plugin-functional: Rules to Promote Functional Programming — This isn’t for me, but if you want to encourage (or even force) a lack of mutation and a use of FP techniques in your codebase, this could be for you.

Jonas Kello

Radix Vue: Unstyled, Accessible Components for Vue.js — An unofficial Vue port of the popular Radix UI component library. GitHub repo.

zernonia et al.

Edge.js v23 – Run .NET and Node.js code in one process on Windows, macOS and Linux.

✂️ Knip 5.34.0 – A neat way to find and tidy unused stuff in your projects.

🧊 PlayCanvas glTF Viewer 5.0 – 3D model viewer supporting glTF 2.0 and PLY.

🗓️ React Date Picker 7.5 – Simple date picker component. (Demo.)

🤖 ml.js 8.0 – Machine learning tools in JavaScript.

MDX 3.1 – Write JSX in your Markdown documents.

📰 Classifieds

Meticulous automatically creates & maintains E2E UI tests. Zero flakes. Used by Lattice, Bilt Rewards and others.

SupaHooks: An Outbound Webhooks Template for Next.js.

⚙️ Create entire web apps with Reactile and let it handle your widgets and windows within a single browser tab. 1-month free trial. Try it now.

JS0 + JSSugar not so sweet?

#​709 — October 17, 2024

Read on the Web

JavaScript Weekly

The Story of Web Framework Hono, By Its CreatorHono is a neat, lightweight framework designed to run on any JavaScript runtime that has been picking up steam in the past year. You can create a simple app reminiscent of Express.js, say, but run it on Cloudflare Workers, Deno, Bun, or Node. It’s in heavy use all over the place, and has lots of interesting features like letting you write HTML with JSX.

Yusuke Wada

Supercharge Your Node.js Code Reviews with AI — Tired of event loop bottlenecks, async errors, and dependency vulnerabilities slipping through code reviews? CodeRabbit, an AI-powered code review tool, analyzes your codebase line-by-line, detecting perf issues, optimizing async patterns, and enhancing security with each pull request.

CodeRabbit sponsor

Node v23.0.0 (Current) Released — Say hello to the newest release line of Node.js that gets all the cutting edge features first (Node 22 will soon become an LTS release as per the usual schedule). Node v23 notably enables support for loading ES modules with require() by default, drops 32-bit Windows support, and node –run goes stable.

Rafael Gonzaga

JS0/JSSugar: ‘The Tooling Will Continue Until Morale Improves’ — In a rather quirky slidedeck presented at TC39 recently, an idea was floated to call the language JS engines implement ‘JS0’ and a myriad of features that have to be compiled to JS0 ‘JSSugar’. It might not surprise you that this idea is considered.. controversial and ▶️ Theo Browne did a 25-minute video digging into it further.

Caolan

IN BRIEF:

Greensock’s popular JavaScript animation library GSAP has been acquired by Webflow – it’ll continue to be updated and maintained as before.

Did you know setTimeout struggles to set timeouts longer than 25 days (or 2^31 milliseconds) in duration? Never fear: Evan Hahn unveils setBigTimeout.

quickjs-cross-compiler provides a way to generate static binaries of JavaScript apps for x86_64, i686, ARM 7, and ARM64.

RELEASES:

Electron 33 – The popular way to build cross-platform desktop apps gets a bump up to Chromium 30, Node 20.18, V8 13, but drops macOS 10.15 support.

Wasp 0.15Wasp is a Rails-like framework using Node, React & Prisma.

Zustand 5.0 – Simple, flux-inspired state management for React.

Javet 4.0 – Java + V8. Embed Node.js and V8 into Java.

Next.js 15 Release Candidate 2, Node.js 22.10.0 (Current), Jasmine 5.4

📒 Articles & Tutorials

How to Build an Image Search App with CLIP, Postgres & JavaScript — A tutorial that brings together a lot of ideas in one place. CLIP is used to turn images into text descriptions. Postgres is used as a vector database. JavaScript provides the glue for both the frontend (with React) and backend (Node.js).

Haziqa Sajid

Using Sibling Parameters as Default Values in Functions — function myFunc(arg1, arg2 = arg1)? A technique safely in the ‘not a lot of people know you can do that’ pile. Alex digs into it a bit and looks at some use cases.

Alex MacArthur

[Guide] Debugging Microservices & Distributed Systems — Learn best practices on understanding and debugging modern web applications. Read the guide.

Sentry sponsor

Liskov’s Gun: The Parallel Evolution of React and Web Components — An opinion piece so long there’s an EPUB version. Baldur tackles Web Components, their growing pains, why frameworks like React took a different path, and why the whole topic remains a difficult circle to square.

Baldur Bjarnason

React Folder Structure in Five Steps, 2024 Edition — Articles about structuring React apps are always popular; this one breaks the idea down to five steps from the simplest of apps to more complex ones. Bulletproof React is worth a look too for something broader.

Robin Wieruch

Optimize Your Builds with Depot’s GitHub Actions Price Calculator — Depot just launched a GitHub Actions price calculator. Get a cost breakdown and make your builds faster and cheaper!

Depot / GitHub Actions Price Calculator sponsor

📄 🫣 Implementing Regular Expressions in TypeScript Types (Badly) – It’s almost Halloween so scary stories are welcome. Steven Kalt

📄 ‘I Interviewed 100 DevTools Founders and This Is What I Learned’ Jack Bridger

📄 Handling In-Browser Paste Events in JavaScript Raymond Camden

📄 The Nuances of Base64 Encoding Strings in JavaScript Matt Joseph

📄 How to Convert CommonJS to ESM Andy Jiang

🛠 Code & Tools

ApexCharts: Flexible Interactive Charting Library — A mature and frequently updated charting library for creating interactive data visualizations, with sparklines, heatmaps, line charts, funnel charts, pies, and others. Can be used in a vanilla way or alongside Angular, Vue or React and there are lots of live examples (with code for each). GitHub repo.

ApexCharts

Over 100 Algorithms and Data Structures Demonstrated in JS — Examples of numerous common algorithms (e.g. bit manipulation, Pascal’s triangle, Hamming distance) and data structures (e.g. linked lists, tries, graphs) with explanations.

Oleksii Trekhleb et al.

Developer Kit: Learn How to Troubleshoot Front-End Issues Faster — Get the kit curated to help front-end developers better understand user activity and resolve issues more efficiently.

Datadog sponsor

fast-grid: The World’s Most Performant DOM-Based Web Table? — A bold claim, but you can see for yourself using the online demo, which lets you filter, sort, and scroll simultaneously for a true test.

Gabriel Petersson

🎨 Color Thief: Grab Color Palettes from Images — Given an image, this uses canvas to return a list of the dominant colors. Works in browsers or Node.

Lokesh Dhakar

Node Version Manager Desktop 4.0 — A Tauri-powered desktop app for macOS, Windows and Linux to manage multiple installed versions of Node on your system.

rainbow

🎹 ChordSymbol: Chord Symbol Parser and Renderer — Accepts chord names in strings (e.g. G7/B, Cadd9, Asus2) and lets you access the notes those chords are made of. GitHub repo.

Christophe Noël

debounce 2.2 – Delay function calls until a set time elapses after the last invocation.

😳 NSFW.js 4.2 – Client-side NSFW image detection via TensorFlow.js.

Secretlint 9.0 – Tool to prevent committing credentials/secrets.

☎︎ vue-tel-input 9.2 – Telephone number input for Vue. (Demo.)

🗓️ Qalendar 3.9 – Event calendar and date picker for Vue 3.

Vaul 1.1 – Unstyled drawer React component. (Demo.)

Mineflayer 4.22 – Create Minecraft bots in JavaScript.

FxTS 1.1 – Functional programming library for TS/JS.

📰 Classifieds

🎹 STRICH: Add blazing fast and reliable 1D/2D Barcode Scanning to your web apps. Free demo app and 30-day trial available.

🪝 Hookdeck: A serverless queue to reliably send, receive, transform, filter, and route events across your event-driven apps.

💥 Improve your database performance with AI. Prisma Optimize automatically analyzes your queries and helps you improve them.

A huge week for ECMAScript proposals

#​708 — October 10, 2024

Read on the Web

JavaScript Weekly

TC39 Advances 10+ ECMAScript Proposals — The architects behind the development of the ECMAScript / JavaScript spec got together again this week (you can see them in this tweet) and they had a packed agenda. Import attributes, Iterator helpers, Promise.try and Regexp modifiers all made it to stage 4, and more besides.

Sarah Gooding (Socket)

🦖 Announcing Deno 2 — A huge release for the “what if I reinvented Node again from scratch?” runtime. Backwards compatibility with Node is a headline feature, but there’s a lot more baked in. Best, though, is the ▶️ epic ‘Announcing Deno 2’ video. After a slightly bombastic opener, Ryan presents a fantastic ‘keynote’ style tour of everything Deno has to offer – I enjoyed watching it.

Dahl, Belder, Iwańczuk and Jiang

💡 A neat new feature is Deno’s Jupyter Notebook support which Simon Willison checks out here.

A Deeper Understanding of Web Security — Steve Kinney hosts this extensive video course on the challenges of web security. You’ll gain a deeper understanding of security on the web, developing your mental model on how to approach things, explore common vulnerabilities, get hands-on experience with security tools, and get to grips with best practices.

Frontend Masters sponsor

Announcing TypeScript 5.7 Beta — The newest TypeScript is on the way. As always, a true laundry list of enhancements and new features, but the path rewriting for relative paths is a particularly welcome addition, enabling easy rewrites of .ts imports into .js at compile time.

Microsoft

IN BRIEF:

Ian Grunert writes about work done to (re)enable JavaScriptCore’s JIT mechanisms on Windows. This is particularly good news for Bun users.

Did you know MySQL 9.0 now natively supports JavaScript stored routines?

🇺🇸 The next JSNation event is taking place in a hybrid form both remotely and in New York City this November 18 and 21. Some fantastic speakers await.

Tenno is an interesting online Markdown editor that supports adding spreadsheet-like cells that can be populated by JavaScript.

🕹️ The winners of the latest js13kGames game jam have been announced. It’s amazing what people have managed to achieve in just 13KB.

RELEASES:

Bun v1.1.30 – Now includes experimental CSS parsing and bundling, as well as a bun publish to publish npm packages, a la npm publish. You can also compile code to bytecode to speed up startup times.

Node.js v20.18.0 (LTS) – Now with network inspection support.

React Native Storybook 8.3 – React Native support in the popular component workshop finally gets fully up to speed.

Rsdoctor 0.4 – Tool for analyzing the Rspack / Webpack build process.

ESLint 9.12.0, Electron.js 32.2, Ember 5.12

📒 Articles & Tutorials

Building a Local Single-Page App with htmx — If you have a reasonably simple app to build, using a large framework is probably going to be overkill. htmx to the rescue! Jake presents an easily followed practical tutorial packed with code.

Jake Lazaroff

💡 Jake also wrote an interesting case study of building a local-first app using SvelteKit and Shoelace, if you want to see something more fully-formed.

Product for Engineers: A Newsletter Helping Flex Your Product Muscle — Product for Engineers is dedicated to sharing the skills and strategies product engineers need to succeed.

PostHog sponsor

Build a Static RSS Reader To Fight Your Inner FOMO — The theme of lightweight JavaScript apps continues with a look at creating a basic RSS feed reader, that updates once a day, with Astro.

Karin Hendrikse

Node vs Bun: No Backend Performance Difference? — You can always trust a benchmark to ruffle some feathers, often over the methodology rather than the result. This is no exception, but interesting nonetheless.

Evert Heylen

▶  Building a Tic-Tac-Toe Game in TypeScript Types — One of those videos I enjoyed simply so I don’t ever feel tempted to try it myself.

Typed Rocks

Securing Node.js Express APIs with Clerk and React — Secure Express API endpoints and integrate authentication without the complexity of building it from scratch.

Clerk sponsor

📄 Building a Robust Frontend using Progressive Enhancement UK Government

📄 The Popover API: Your New Best Friend for Tooltips – Supported in all major browsers, except Safari on iOS. Sjoerd Beentjes

📄 18 Interview Questions Answered by Angular Experts Angular Space

📄 Testing CSS Print Media Styles with Cypress Gleb Bahmutov

🛠 Code & Tools

DOCX 9.0: Generate Word .docx Files from JavaScript — The code to lay out documents is verbose but there’s a lot of functionality baked in and there aren’t many other options for this task. Here’s a CodePen-based example to give you an idea. GitHub repo.

Dolan Miu

TinyJS: A Lightweight Way to Work with DOM Elements — Lighter than querySelector and friends, you ask? Not in file size, but certainly in code weight. TinyJS offers a jQuery-esque syntax for element selection, adding properties to elements, and more.

Victor Ribeiro

Breakpoints and console.log Is the Past, Time Travel Is the Future — 15x faster JavaScript debugging than with breakpoints and console.log, supports Vitest, jest, karma, jasmine, and more.

Wallaby Team sponsor

SVGuitar 2.4: Create SVG-Based Guitar Chord Charts — Dynamically generate chord charts / fingerings in the browser. You can experiment with it in this live demo.

Raphael Voellmy

Free Public APIs: A Collection of Free Public APIs for Developers — Categorized and searchable, these are tested daily by bots so if any API is taken down or moved behind a paywall, it’s removed from the site.

Nick Schneeberger

TutorialKit 1.0: Create Interactive Coding Tutorials — StackBlitz’s framework for creating interactive coding tutorials, perhaps as a way to boost the adoption of your own libraries or design system. v1.0 marks TutorialKit as stable.

StackBlitz

Jeasx: The Ease of JSX with the Power of SSR — A new server side rendering framework built on top of JSX and Fastify.

Maik Jablonski

ip-address 10.0: Library for Parsing and Manipulating IP Addresses — Works with both IPv4 and IPv6 addresses.

Beau Gunderson

React-Grid-Layout 1.5 – Draggable/resizable grid layouts for React apps.

🗓️ Schedule-X 2.4 – Material Design event calendar and date picker.

eslint-plugin-unicorn 56.0 – 100+ useful ESLint rules in one place.

Redwood 8.4 – Popular React app framework.

📰 Classifieds

Automatically creates & maintains E2E UI tests. Zero flakes. Used by Lattice, Bilt Rewards and others. Backed by YC, CTO GitHub and others.

Pythagora is an AI dev tool that builds production-ready tools (not demo apps). It writes the code and talks to you in the process.

⚙️ Create entire web apps with Reactile and let it handle your widgets and windows within a single browser tab. 1-month free trial. Try it now.

Evan You’s next big adventure

#​707 — October 3, 2024

Read on the Web

JavaScript Weekly

VoidZero: A Next-Generation Toolchain for JavaScript — Not content to have merely created Vue.js and Vite, JavaScript powerhouse Evan You has unveiled his latest adventure: a $4.6m funded company building an open-source unified development toolchain for the JavaScript ecosystem. With his track record, this is as good an attempt as it gets.

Evan You

ESLint Now Officially Supports Linting JSON and Markdown — ESLint has been taking steps to become a more general purpose linter and that effort is beginning to bear fruit with this milestone.

Nicholas C. Zakas

Run GitHub Actions Up to 2x Faster at Half the Cost — Blacksmith runs your GitHub Actions substantially faster by running them on modern gaming CPUs. Integrating Blacksmith is a one-line code change. 100+ companies like Ashby, Superblocks, and Slope use Blacksmith to help developers merge code faster.

Blacksmith sponsor

Tauri 2.0: Small, Fast Desktop Apps using Web TechnologiesTauri is a Rust-based alternative to Electron for bringing together HTML, JavaScript and CSS code to create cross-platform desktop apps. Rather than using V8, it uses the natively available webview to run your code.

Tillmann Weidinger

IN BRIEF:

😍 Build tool Vite has a snazzy new homepage just in time for ViteConf.

The Svelte team shares everything that’s new with Svelte lately.

🕹️ OneJS is an attempt to bring JavaScript scripting into the Unity game engine. ▶️ Here’s a screencast showing it off.

🎂 The Knip code decluttering tool celebrates two years with a new release containing a revamped auto-fix mechanism for automatically removing unused exports and files from your code.

Congratulations to Ulises Gascón for becoming the newest TC39 Delegate.

RELEASES:

Eleventy / 11ty 3.0 – Node.js-powered static site generator.

Tabulator 6.3 – Popular interactive table / data grid control.

Jiti 2.0 – Runtime TypeScript and ESM support for Node.js.

pnpm 9.12 – The alternative, efficient package manager.

ViteConf is Live! — Join us today and tomorrow for ViteConf 2024!

StackBlitz sponsor

📒 Articles & Tutorials

▶  Bundling: The Past, Present and Future — A history lesson on bundlers, why they’re used, the problems they solve, the current ecosystem, and a look at the potential future for these tools.

Devon Govett

Unleash JavaScript’s Potential with Functional Programming — More focused on the how, rather than the why, but a good primer nonetheless, especially if you’ve never tried to learn about FP before.

Jan Hesters

An Online Event You Won’t Want to Miss — 🔥 JetBrains JavaScript Day returns Oct 24, and it promises to be the best one yet! Explore an impressive agenda and register for free today.

JetBrains sponsor

SVG Coding Examples: Useful Recipes for Writing Vectors by Hand — Explores the basics of hand-coding SVGs, how to use JavaScript along the way, and practical examples to demystify the inner workings of common SVG elements.

Myriam Frisano

📄 Web Components are Not Framework Components and That’s Okay Lea Verou

📄 How to Submit an Electron App to the Mac App Store Liu Liu

📄 Why Gumroad Didn’t Choose htmx Sahil Lavingia

📄 How Bun Supports V8 APIs Without using V8 Ben Grant (Bun)

📺 Laravel vs Rails for JavaScript Developers Sam Lewis

🛠 Code & Tools

🤖 assistant-ui: React Components for AI Chat — It doesn’t just give you the interface components, but has integrations for Vercel AI, Langchain, and talking to other common LLM APIs (e.g. OpenAI), enabling you to build your own in-house AI chat system quickly. Examples.

Simon Farshid

qrframe: A Library to Generate ‘Pretty’ QR Codes — It’s slightly odd as the QR codes generated aren’t guaranteed to scan reliably, but if you can generate ones that do, they look striking, and could be useful for branding/fun use cases. Play around with a live demo here.

Kyle Zheng

Announcing MongoDB 8.0 — Over 30% Faster Than Before — Learn how MongoDB 8.0 was built to exceed the most stringent security, availability, and performance requirements.

MongoDB 8.0 sponsor

Superdiff 2.0: Compares Two Arrays or Objects and Return a Diff — Got two similar objects and want to see the underlying differences?

antoine

µExpress / Ultimate Express: Like Express, But Faster — Imagine a reimplementation of Express with full API compatibility, but based on µWebSockets and with an optimized router for faster performance.

dimden

VueFormify 1.1: Simple Type-Safe Form Building for Vue — Bills itself as “your ticket to form-building autonomy.” There’s a getting started guide and GitHub repo.

Máté Nagy

pretty-print: Customizable String Representations of JS Values — Produce a string representation of any value. Similar to util.inspect but with many extra options for tree-ifying, coloring, sorting, choosing what to display, etc.

Effectful Technologies Inc

🗓️ Schedule-X 2.3 – Material Design event calendar and date picker.

Summernote 0.9 – Simple WYSIWYG editor atop Bootstrap and jQuery.

ng-dnd 4.0 – Drag and drop solution for Angular. (Demos.)

Prisma 5.20 – Popular ORM for Node.js and TypeScript.

React95 v9.0 – Make React apps that look like Windows 95.

Vaul 1.0 – Elegant drawer component for React.

Eruda 3.4 – A console/devtools for mobile browsers.

BlockNote 0.16 – ‘Notion-style’ block-based editor.

📰 Classifieds

⚙️ Create entire web apps with Reactile and let it handle your widgets and windows within a single browser tab. 1-month free trial. Try it now.

Automatically creates & maintains E2E UI tests. Zero flakes. Used by Lattice, Bilt Rewards and others. Backed by YC, CTO GitHub and others.

Deno gets even better

#​706 — September 26, 2024

Read on the Web

JavaScript Weekly

Deno 2.0 Release Candidate — Deno started life as a manifestation of ideas that Node’s original creator, Ryan Dahl, had after his experiences with Node. Deno 2 is the next step: how the Deno team thinks Deno should ultimately be. Many changes await: window is gone and Node’s process appears, dependency management has been improved, numerous APIs have gone stable (e.g. WebGPU), and both Node.js API and CommonJS support have continued to improve.

Bartek Iwańczuk and Andy Jiang

Don’t Sleep on AbortControllerAbortController is a broadly available mechanism for, originally, aborting Web requests on demand, but you can use it for a lot more than that (or ‘anything!’, as Artem explains).

Artem Zakharchenko

Learn to Build Feature-Rich, Native Mobile Apps Using React Native and Expo — Join Kadi Kraman for a video course designed to hone your React skills. Whether a beginner, or looking to further refine your skill set, you’ll learn to create practical iOS and Android apps, covering components, styling, UX, linting, async storage, animation, and much more.

Frontend Masters sponsor

How Josh W. Comeau Rebuilt His Blog, App Router Style — We’re huge fans of Josh’s blog and he’s just rebuilt it entirely using Next.js, MDX, Sandpack, and an array of other technologies. Here, he goes into great depth about what’s involved. A good look behind the scenes of a modern React-driven project.

Josh W Comeau

IN BRIEF:

🇪🇺 NodeConf EU is back. It takes place in Ireland this November 3-6.

🟨 It also appears JSConf is coming back under the care of the OpenJS Foundation.

📊 Minification Benchmarks is a frequently updated set of benchmarks for a suite of popular JavaScript minifiers.

🕹️ The most recent JS13kGames gamedev contest just ended. If you want to play the entries (or do some judging yourself) they’re all here. I particularly liked The Way of the Dodo and Deep13.

RELEASES:

Bun v1.1.29 – Its C compilation feature gets N-API support, but is otherwise largely a bugfix release.

Storybook 8.3 – A popular frontend component workshop is now using Vitest to rapidly speed up its component testing features.

Strapi 5 – Popular open source headless CMS.

Solid 1.9 – Declarative and performant reactivity for building UIs.

PostgreSQL 17 – The popular database isn’t a JavaScript project, but a lot of you will be using it. Psst! We have a Postgres newsletter too!

📒 Articles & Tutorials

A Guide to Destructuring in JavaScript — The destructuring assignment syntax appeared in ES6 almost ten years ago and has become a central part of modern JavaScript development. This is a good primer/reminder of the potential.

Mat Marquis

The Nine Node Pillars: Principles for Doing Node Right — A group of prolific and productive Node.js contributors have put together a checklist to identify gaps in your current Node development practices, particularly when building large-scale apps.

Snell, Venditto, Dawson, Collina, et al.

A Complete Guide to Session Management in Next.js — Learn how integrating session management into your app provides robust security and enhances user experience.

Clerk sponsor

What Are Durable Functions? A Visual JavaScript Primer — This is rather dependent on what Inngest, a durable function service, offers, but is a good primer to the general idea which may well suit your use cases.

Lydia Hallie (Inngest)

What’s New in Express.js 5.0 — Express.js 5.0 landed recently with rather brief release notes, so here’s a deeper look at what it has to offer. The updates are largely incremental, but set the stage for Express’s future.

Trevor I. Lasn

Angular Routing Essentials: Everything in One Post — A bold claim, but it does a pretty good job.

Oleksandr Kocherhin

Using Reddit’s JSON API from a JavaScript App — How to pull data from Reddit’s API and display it in a simple web application built with Parcel.

Muhammed Ali

📺 Create a Donkey Kong Country-ish Platformer in JS – We don’t see the DKC resemblance, but it’s a solid 4 hour screencast. Chris Courses

📄 Implementing a ‘Like’ Button without Authentication Abhishek Saha

🛠 Code & Tools

Schedule-X 2: A Modern Event Calendar Component — Available in the form of React/Preact, Vue, Svelte, Angular, or plain JS components. Open source but with a premium version with extra features. GitHub repo.

Tom Österlund

🧹 Vue Mess Detector: Code and Quality Analysis for Vue Projects — A static analysis tool that can catch various bugs and code quality issues in Vue-based projects, built atop rules from the Vue.js Style Guide and others. GitHub repo.

Various Contributors

✂️ Cut Your QA Cycles Down from Hours to MinutesQA Wolf’s AI-native approach gets engineering teams to 80% automated end-to-end test coverage and helps them ship 2x faster by reducing QA cycles from hours to minutes.

QA Wolf sponsor

Tesseract.js: Pure JS OCR for 100+ Languages — A port of the C++-based Tesseract library commonly used for extract text from images. The homepage has a live demo where you can drop your own images. GitHub repo.

Tesseract Team

HumanifyJS: Deobfuscate JavaScript Code using ChatGPT — There’s an in-depth explainer here. The primary feature is its ability to reverse the loss of meaningful variable and function names based on the context of the code.

Jesse Luoto

Tests Are Dead. Meticulous Is Here — Automatically creates & maintains E2E UI tests. Zero flakes. Backed by YC, CTO of GitHub, CPO of Adobe, CEO of Vercel.

Meticulous sponsor

React Snap Carousel: DOM-First, Headless Carousel — Uses native browser scrolling and CSS scroll snap points for performance. Try out some of its features in its Storybook. The latest version adds support for infinite carousels.

Richard Scarrott

💡 For more React projects, check out our latest React newsletter.

Perspective 3.1 – Streaming data viz and analytics component. The core is written in C++ and compiled to WebAssembly. The homepage shows it off well.

NeutralinoJS 5.4 – Lightweight cross-platform desktop app framework.

websocket-as-promised 3.0 – A Promise-based API for WebSockets.

Verdaccio 6.0 – Lightweight local private npm registry.

Rspack 1.0.7 – Fast Rust-based web bundler.

esbuild 0.24

Hey, how many C’s are there in JavaScript?

#​705 — September 19, 2024

Read on the Web

JavaScript™? Weekly

‘Oracle, It’s Time to Free JavaScript.’ — It’s long been a bone of contention that Oracle owns the trademark for ‘JavaScript’ (we put out a call two years ago) but this marks the first serious effort to try and change that, including petitioning the USPTO, if necessary. You can support the effort by signing this open letter, joining a vast array of JavaScript luminaries.

The JavaScript Community

Now You Can Compile and Run C in JavaScript — Well, if you’re using Bun, at least. Bun v1.1.28 lands experimental support for compiling and native C code and then running its functions from JavaScript. It’s easier than it sounds..

Jarred Sumner (Bun)

😅 Bun’s creator said this is “an unplanned feature I worked on mostly a month ago on a Saturday for fun” – that’s our kinda fun!

✂️ Cut Your QA Cycles Down from Hours to Minutes with QA Wolf — If slow QA processes bottleneck your software engineering team and you’re releasing slower because of it, you must check out QA Wolf. QA Wolf gets engineering teams to 80% automated end-to-end test coverage and helps them ship 2x faster by reducing QA cycles from hours to minutes. Learn more.

QA Wolf sponsor

ts-blank-space: Fast Type-Stripping TypeScript to JS Compiler — It’s job is simple: be the fastest TS to JS compiler written in JS (it’s 5.6x faster than tsc.) Types are simply replaced with whitespace preserving the coordinates of the JS code which eliminates the need for sourcemaps entirely.

Ashley Claymore / Bloomberg

IN BRIEF:

🏆 Developer analyst firm RedMonk has put out a Q3 2024 ranking of programming languages with JavaScript happily in first place.

📺 Honeypot has released a nine minute documentary where Ryan Dahl (the original creator of Node.js) and Bert Belder ▶️ tell the story of how Deno began.

Talking of Deno, Deno 2.0 is expected to be released tomorrow.

🧭 Alongside new releases of macOS, iOS, and iPadOS, Safari 18 has been released. Alongside numerous Web API enhancements, its JS regex support has been enhanced when it comes to Unicode.

🔥 David Bushell tried JSR – he didn’t like it.

RELEASES:

Fastify v5Fastify is a popular, perf-focused web framework for Node.js, inspired by Express (which recently reached v5.0 too!)

Astro 5 Beta – Astro helps keep the run of v5.0 releases going..

Node.js v22.9 (Current) – Adds a util.getCallSite function to obtain the stacktrace of the current execution. V8’s Maglev JIT is also disabled for reliability reasons due to outstanding issues in V8.

Hono 4.6 – The nifty ‘any runtime’ webapp framework gains context storage middleware.

ViteConf is October 3rd! — StackBlitz is r(ai)sing the bar in the ViteConf ’24 keynote. You won’t want to miss it 👀.

StackBlitz sponsor

📒 Articles & Tutorials

Mathematical Symbols and JavaScript Equivalents — We’re not just talking the obvious like + and – but things like ⁿ√, Σ, Π, ∃, and set notation.

Joshua Nussbaum

A React 19 Cheat Sheet — From Kent C Dodds, of Epic React fame, comes this part cheat sheet, part succinct reminder of some of the new things you can do in React 19, along with (very) brief code examples.

Kent C. Dodds

[Workshop] Fix Your Front-End 101: JavaScript Edition — Learn practical tips to debug JavaScript end to end. Join our JavaScript team live on Sept 24.

Sentry sponsor

From Parcel to Vite: A Short Story of a 100K LOC Migration“We’ve migrated our frontend projects from Parcel to Vite, and the process was… smooth.”

Gao / Logto

How to Create a Chrome Extension with React, TypeScript, Tailwind CSS and Vite — Covers everything you need to know right through to publishing in the Chrome Web Store.

Lokman Musliu

📺 Building a React-Powered TODO App in 9 Steps – A 54 second video showing off the key stages, all without any libraries except React. Danny Thompson

📄 12 Ways to Better Vue Components with TypeScript Fotis Adamakis

📄 Why We Switched from Cypress to Playwright S Varun (BigBinary)

📄 Bitwise Operators in JavaScript and When to Use Them 8 Hobbies

📄 An Introduction to TanStack Router Adam Rackis

🛠 Code & Tools

date-fns v4.0 Released with First-Class Time Zones Supportdate-fns is a hugely popular and comprehensive suite of 200+ functions for working with dates in JavaScript, and now there’s first-class time zone support too.

Sasha Koss

ts-remove-unused: Remove Unused Code from TypeScript Projects — A tool that can auto-fix unused exports (removing export from the declaration or the whole declaration based on its usage) and delete modules that have no referenced exports. Knip is another mature tool in this space, though focused more on detecting the things you can remove.

LINE

Amplify the Benefits of JWTs and Session Tokens — Learn how leveraging the benefits of both session token authentication and JWTs results in the best of both approaches.

Clerk sponsor

Next.js SaaS Starter: A Next.js Template for SaaS Webapps — A starter template for building a SaaS-style webapp using Next.js with authentication, Stripe integration, and a dashboard for users. It uses Postgres and Drizzle for the database and UI elements based on shadcn/ui and Tailwind.

Lee Robinson (Vercel)

nano-spawn: Tiny Execa-Inspired Process Execution for Node.js — If you’re familiar with Sindre’s Execa for running commands from a Node app in a reliable manner, nano-spawn offers its core functionality in a smaller package.

Sindre Sorhus and ehmicky

DECK.GL: GPU-Powered Large-Scale Data Visualization Framework — Well suited to geospatial data visualization use cases that go beyond typical 2D views. There are plenty of examples to show it off. Can be used through both vanilla JS and React interfaces.

OpenJS Foundation

Vue-Multiselect 3.1: A Complete ‘Selecting Solution’ for Vue.js — There’s a lot on offer here, complete with SSR support, Vuex support, strong test coverage, and with no dependencies.

Damian Dulisz et al.

Chokidar 4.0: Efficient Cross-Platform File Watching Node.js Library — Wraps around fs.watch / fs.watchFile and normalizes the events received, applies best practices, and presents an API that works the same across platforms.

Paul Miller

Express.js 4.21 – We featured Express.js 5.0 last week, but the widely deployed 4.x branch continues to get updates.

Starlight 0.28 – Astro’s official, all-in-one docs site builder.

Material UI 6.1 – Independent React components using Material Design.

Varlet 3.5 – Material Design-inspired component library for Vue 3.

Preact 10.24 – The 3KB React-compatible alternative.

NodeBB 3.9 – Node.js based forum system.