#​722 — February 7, 2025

Read on the Web

Together with  Sentry logo

JavaScript Weekly

Oracle Claims 'JavaScript' Isn't a Generic Term, and More — In this 'motion to dismiss' Oracle has responded to Deno’s attempt to prove Oracle shouldn't hold the JavaScript™ trademark with the argument that “relevant consumers do not perceive JAVASCRIPT as a generic term” (does Oracle only consider people who give it money to be relevant?) among other comedic insights.

Ryan Dahl

There Are a Lot of Ways to Break Up Long Tasks in JavaScript — Due to how browsers and the event loop work, letting a single task hog the main thread is a quick way to freeze up your site’s UI. Alex explains the problem and uses a simple example to walk through the pros and cons of different solutions from basic use of setTimeout() to requestAnimationFrame(), channel messaging, and Web Workers.

Alex MacArthur

Debugging Shopping Cart Issues Faster — Vue/Nuxt devs: Get full insight into your shopping cart errors! Capture Pinia State wherever errors occur. Learn how on the Sentry blog ».

Sentry sponsor

▶  Angular: The Documentary — From the creators of the fantastic ▶️ Node.js and ▶️ Ruby on Rails documentaries comes this fresh story covering the ups and downs of the popular Angular (née AngularJS) framework starring a cast of veritable JavaScript luminaries.

Honeypot

IN BRIEF:

RELEASES:

  • ES Module Shims 2.0 – Polyfills import maps and other ES Modules features on top of the baseline native ESM support in browsers.

  • pnpm 10.2 – The alternative, efficient package manager.

  • Turborepo 2.4

📒 Articles & Tutorials

Which Rich Text Editor Framework Should You Choose in 2025? — A round-up of actively developed WYSIWYG editor options you can drop into your apps along with the pros and cons of each.

Dexemple and Rowny (Liveblocks)

How to Publish ESM-Based npm Packages with TypeScript — Now that you can use the ES modules (almost) everywhere, it’s worth understanding how to package them up for use with npm. Axel digs into everything you need to know and shares some useful tools too.

Dr. Axel Rauschmayer

Locate and Resolve JavaScript Errors Instantly with Datadog — Troubleshoot frontend JavaScript errors faster with frontend to backend correlation and automatic error tracking.

Datadog sponsor

An Introduction to WebAssembly in Deno — How to build a simple WASM module and use it to call Rust code from JavaScript.

Jiang and Sherret (Deno)

Vite with TypeScript — If you’ve created a JavaScript-based React project with Vite and want to get on the TypeScript train, here are the basic steps.

Robin Wieruch

📄 Building a Playful Stop-Motion Crayon Cursor in p5.js Jorge Toloza

📄 Keep Your Node Apps Secure with npx is-my-node-vulnerable Trevor I. Lasn

📄 Read-Only Accessibility in TypeScript – How to use the readonly keyword. Dr. Axel Rauschmayer

📄 How to Set WebGL Shader Colors with CSS and JavaScript Nicolas Mattia

🛠 Code & Tools

RE2JS 1.0: Linear Time Matching for Regular Expressions — RE2 is a regular expression engine built by Google designed to operate in time proportional to the size of the input, in order to avoid so-called ‘ReDoS’ problems caused by backtracking, and this brings such protection to the browser too.

Oleksii Vasyliev

Fuse.js 7.1: Lightweight Fuzzy-Search with No Dependencies — Want a simple search feature without a dedicated backend? This mature solution could help. Here’s a live demo.

Kiro Risk

Start Selling to Enterprise Faster with WorkOS — Add SSO, SCIM, and RBAC to your B2B SaaS app in minutes—not months.

WorkOS sponsor

🎨 tinygradient 2.0: A Gradient Generation Library — Generate color gradients with an unlimited number of color stops and steps in JavaScript to use as you wish. Supports named colors, hex colors, RGV, HSVa, and RGB CSS strings. GitHub repo.

Damien Sorel

parse-duration 2.0: Convert a Human Readable Duration to Milliseconds — You might wonder why a library that converts 1hr 20mins into 4800000 needs a version 2. Well, it now supports more units (mo, mth, microsec, and nanosec), has moved to ESM, and supports locales.

Jake Rosoman

Waveform Renderer — Quickly create a visual waveform from a MP3 or WAV — you can also edit the look. Think of it as a lighter alternative to Wavesurfer.js. GitHub repo.

Andres Felipe Alarcon

📰 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 Lattice, Bilt Rewards, etc.


🌎 Get your FREE remote pass to 50% of the talks at the 2025 JS Nation conference. Invite 3 friends to unlock full access — including talks from Evan You, Thomas Steiner, and 50+ speakers.


Meet Harmony: An open source library for composing consistent and highly performant platforms from independent business features.

  • 🍪 CookieConsent 3.1 – A lightweight, pure JS, GDPR-compliant cookie consent mechanism with which to annoy all your users meet regulatory requirements.

  • Happy DOM 17.0 – Cross-runtime JS implementation of a web browser sans UI. Now supports ES modules.

  • remove-unused-vars 0.0.4 – An experimental new tool for removing unused variables from code.

  • get-value 4.0 – Use property paths (a.b.c) get a nested value from an object.

  • mp4-muxer 5.2 – MP4 multiplexer in pure TypeScript with support for the WebCodecs API, video and audio.

  • 🗺️ react-map-gl 8.0 – React friendly API wrapper around MapboxGL JS. (Demo.)

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

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

  • web-worker 1.5 – Consistent Web Workers in browser and Node.

  • Js_of_ocaml (jsoo) 6.0 – An OCaml to JavaScript compiler.

  • RxDB 16.5 – Offline-first, reactive database for JS apps.

🎵 A quick musical number..

A Protracker Module Player in Pure JavaScript — I’m a sucker for 90s tracker music, JavaScript experiments, and cool Web experiences, and this has all three. If you’re not familiar with tracker music, it’s a way to write music on a grid which triggers the playing of samples. This code manages to parse and play a Protracker file in pure JavaScript. (Note: The image above is of the original Protracker app, this experiment is more minimal and about the code.)

srtuss