#​718 — January 10, 2025

Read on the Web

🗓️ Friday is the new Thursday! If you were a JavaScript Weekly reader several years ago, you might remember it always landed on Fridays and after getting caught out by a variety of big news items landing on Thursdays in recent years, we're back ;-)
__
Your editor, Peter Cooper

Together with  Datadog

JavaScript Weekly

 2024's JavaScript Rising Stars — It’s time to fully wave goodbye to 2024, but not before Michael Rambeau’s annual analysis of which JavaScript projects fared best on GitHub over the past year. Even if you dislike GitHub stars as a metric for anything, this remains a great way to get a feel for the JavaScript ecosystem and see what libraries and tools have mindshare in a variety of niches. A fantastic roundup as always.

Michael Rambeau

A Look at Import Attributes — It’s always a pleasure to see Dr. Axel blogging about JavaScript again, and he’s back with one of his typical deep dives into a newer ECMAScript feature: import attributes. This feature provides an inline syntax for attaching metadata to module imports such as for importing non-JavaScript modules (e.g. JSON, WASM or CSS).

Dr. Axel Rauschmayer

How to Enable End-to-End Testing with Synthetic Monitoring — Synthetic Monitoring helps you launch new features with confidence and speed. Learn how you can create robust end-to-end test suites, spend less time on false positives, and proactively catch errors before they get to production.

Datadog sponsor

Node’s New Built-in Support for TypeScriptNode.js v23.6.0 (Current) has just been released and makes Node’s new type-stripping features work by default, so you can just run node file.ts and it Should Just Work™. Dr. Axel explains how it works and what the limitations are.

Dr. Axel Rauschmayer

IN BRIEF:

RELEASES:

  • pnpm 10 – The efficient npm alternative no longer runs lifecycle scripts of dependencies for security reasons, hashing algorithms have been upgraded to SHA256, and lots of minor tweaks.

  • Bun v1.1.43 – The high-performance runtime gets first class S3 support, an HTML bundler, and can output V8 heap snapshots (which is quite something as Bun uses JavaScriptCore, not V8).

  • 🔠 Tesseract.js 6.0 – The popular pure JS multilingual OCR library has resolved a variety of memory leak issues.

  • Docusaurus 3.7 – The popular docs-oriented site generator goes full React 19.

  • Node.js v22.13.0 (LTS) – The permission model system is now stable.

  • Puppeteer 24.0, RxDB 16.0, Ember 6.1, QuickJS 0.8

📒 Articles & Tutorials

The Future of htmxhtmx is an increasingly popular way to enhance HTML and actually write less JavaScript on the frontend. This post reflects on how htmx would like to be ‘the new jQuery’, not least in the sense that one of the project’s goals is to push the ideas of htmx into the HTML standard itself, as in this set of proposals.

Gross and Petros

You Don't Need Next.js — As much as Next.js is considered the React meta-framework of choice, if your requirements are modest, simply going with plain React offers numerous benefits in terms of simplicity and speed, as seen here.

Benny Kok

Introducing Clerk SDKs for Vue and Nuxt — Official @clerk/vue & @clerk/nuxt SDKs for authentication integration with pre-built UI components in Vue/Nuxt apps.

Clerk sponsor

Using TypeScript Without Build Tools — Chris Coyier enjoys the benefits of TypeScript while developing, but actually compiling it to JavaScript in various scenarios is less endearing. We’ve learnt (above) that Node can now run .ts files directly, but what other projects support the use of TypeScript without build tools?

Chris Coyier

📄 Using a JavaScript Component Inside a Haskell App – Did you know Haskell’s main compiler supports integrating with JavaScript? Mateusz Goślinowski

📄 Crafting a Dreamy Particle Effect with Three.js and GPGPU Dominik Fojcik

📄 Build Your Own Site Speed Testing Tool with Puppeteer Henry Price

📄 Sharing a Variable Across HTML, CSS, and JavaScript Chris Coyier

📄 Benchmarking GraphQL Solutions in the JS/TS Landscape Tomasz Nieżurawski

📄 Shallow Clones vs Structured Clones Phil Nash

🛠 Code & Tools

PostalMime: A Universal Email Parsing Library — An email parsing library happy in most JS runtimes. Takes the raw source of emails and parses them into their constituent parts.

Postal Systems

trimMiddle(): The Missing String Trim Method? — If you’ve got a long string and want to keep the start and end and truncate in the middle, this is for you. There’s a live demo here and GitHub repo.

Christian Heilmann

Fully Customizable Form Builder that Blends Seamlessly with Your JS App — Need a survey solution you control? With SurveyJS, customize your form builder’s look and functionality. Try it for free.

SurveyJS sponsor

Introducing @smoores/epub: A Package for Working with EPUB FilesEPUB is a popular e-book file format and this new library provides a way to both read and write them. npm package link.

Shane Friedman

Tipex: An Advanced Rich Text Editor for Svelte — Based on the popular Tiptap editor framework, it’s customizable, has theming support, and is Svelte 5-ready. Here’s a live example.

Friend of Svelte

React-Toastify 11: In-Page Notifications Made Easy — There’s an elaborate demo page here but essentially it’s a flexible, easy to style ‘toast’ style notifications system with many years under its belt. GitHub repo.

Fadi Khadra

Electrobun: A New JS Cross-Platform Desktop App Toolkit — A fresh take on the concept covered by Electron and Neutralinojs, except based around Bun. It’s early days, though, with only ARM-based Macs supported for now.

Blackboard Technologies inc.

Tagify 4.33: An Elegant Input Component for Tags — The polished demos show a lot of effort has been put in here. GitHub repo.

Yair Even-Or

📰 Classifieds

Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Lattice, Bilt Rewards, etc.


🔹Sell to enterprise with a few lines of code with WorkOS — the modern, flexible identity platform for B2B SaaS. Integrate SSO, SCIM and FGA in minutes, not months.

🎁 And one for fun?

📄 Play Tetris in a PDF File — (direct link to PDF)

I'll let you decide if this one is fun or frightening! Whether or not this will work depends on your PDF reader or browser support, but it works with Chrome and Firefox, at least.

The PDF document format supports embedded JavaScript and this experiment uses it to implement a game of Tetris. The developer, Thomas Rinsma, has used Python to output the PostScript that includes the game's JavaScript. Couple that with the fact many browser PDF renderers are themselves implemented in JavaScript (e.g. PDF.js) and you have a veritable Matryoshka doll of technologies at play here.