es-toolkit: A Modern JavaScript Utility Library — Boasts being both faster and ‘97% smaller’ than the ubiquitous Lodash, for which it is a direct 'seamless' replacement (and now boasting 100% Lodash compatibility). The reference guide shows off all it can do, and it’s widely adopted — being used by Storybook, CKEditor, and recommended by Nuxt. GitHub repo.
Viva Republica, Inc
Avoid Common Mistakes in React and Next.js — Avoid redundant useState and useEffect, deeply nested data, unscalable forms, and hidden shared state bugs. David Khourshid teaches practical patterns to refactor complex apps and scale with confidence!
Frontend Masters sponsor
When is WebAssembly Going to Get DOM Support? — Working with the DOM from JavaScript is straightforward, but WebAssembly requires glue code to do it. Is this going to change? Daniel of the TC39 committee digs into the issue here and says that modern build toolchains and WASM’s evolution are making things easier all the time.
Bun v1.2.19 – The fast JS runtime now supports pnpm-style isolated node_modules with bun install, offers an interactive dependency updating feature, and more. Bun 1.3 is also expected very soon.
PythonMonkey 1.2 – Embed the SpiderMonkey JS engine into Python's VM.
Revisiting My 2010 JavaScript Library — A developer looks back at code he wrote 15 years ago, the ‘clever solutions’ he used, and why most of it is redundant in 2025.
Transformers.js 3.7: Machine Learning and Models for the Web — Brings the ability to run powerful pretrained models in the browser, thanks to the ONNX runtime. v3.7 adds Voxtral (speech transcription and audio understanding), LFM2 and ModernBERT support.
Hugging Face
npq: Safely Install Packages by Auditing Them Pre-Install — npq performs several extra steps compared to npm. It consults Snyk’s database of vulnerabilities, looks at the package’s age, download count, and docs, and tries to paint a better picture of what you’re really installing.
The State of HTML 2025 survey is now open to take – it's not just a survey; you'll probably learn a few things at the same time too.
Google has unveiled OSS Rebuild, a new attempt to make open source ecosystems (like npm) more secure by allowing the comparison of packages with upstream artifacts.
The JavaScript Date Quiz — Prepare to get irritated? JavaScript’s native date parsing features are notoriously arcane and prone to cause surprises if you step off the beaten track. So while we await the broad availability of the Temporal API, why not put your assumptions and knowledge to the test with an educational quiz?
Sam Rose
Next.js 15.4 Released (and What's Coming in Next.js 16) — A relatively small release for Next, but with updates to performance, stability, and Turbopack compatibility, and a good summary of what’s coming next in Next.js 16.
Jimmy Lai and Zack Tanner
Add SSO & SCIM with Just a Few Lines of Code — WorkOS offers clean, well-documented APIs for SSO, SCIM, RBAC, and more, so you can focus on building features your users care about. Trusted by engineering teams at Cursor, Replit, Vercel, and Temporal.
WorkOS sponsor
WebAssembly: Yes, But for What? — Writing for ACM Queue, one of the contributors to multiple JavaScript and WebAssembly (WASM) implementations shares a good roundup of where WebAssembly is being used, both in the browser and server-side, and how it’s gradually finding its way into seemingly everything.
Andy Wingo / ACM
IN BRIEF:
Vue 3.6 Alpha has been released as a preview of what's coming up. Vapor Mode is a key addition for compiling single file components into a more efficient form.
React Native is gaining support for Node-API, opening up a lot of possibilities for code-sharing, build optimizations, and bringing existing packages into the React Native ecosystem.
How to Create an NPM Package in 2025 — One of JavaScript’s most essential tasks, but one with numerous steps involved if you want to follow best practices, integrate useful tools, and get things just right. Matt Pocock rounds up the overall process here.
Matt Pocock
The History of React Through Code — An epic article charting React’s evolution from its origins at Facebook through to now. It sheds light on React’s core philosophies and the motivations behind major decisions. This is a great way to round out your thinking about, and knowledge of, React's overall story.
Tiptap v3: The Headless Rich Text Editor Framework — Tiptap provides a fantastic base for putting together powerful rich text editing experiences, and v3 includes a lot of DX improvements like being able to unmount and remount editors (ideal for dynamic UIs), ‘Markviews’ for creating custom views for text segments (marks) using your own components, an SSR mode, and more. GitHub repo.
Tiptap GmbH
✉️Upyo: A Simple Cross-Runtime Email Sending Library — A cross-runtime email library that provides a unified, type-safe API for sending emails both on SMTP and HTTP-based (e.g. SendGrid or Amazon SES) providers. TIL that ‘upyo’ (우표) means ‘postage stamp’ in Korean.
🤖 Burke Holland gives us a first look at GitHub's Copilot Coding Agent, essentially a more stand-alone, independent AI agent you can point at working on issues and PRs in your repo.
AWS has unveiled Amazon S3 Vectors, an add-on to its S3 object storage service that lets you store and query vectors.
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 core grid module. Pick & choose special features to keep your app small. Built for JavaScript, extended to Angular, React, and Vue.
Wijmo From MESCIUS sponsor
A Detailed Summary of the Latest TC39 Plenary — A thorough roundup of May’s major ECMAScript committee meeting with far more detail about each proposal’s development and the decisions made than we usually get to hear about. Topics include Array.fromAsync, explicit resource management, the Temporal API, and some brainstorming around AsyncContext.
What’s the Difference Between Ordinary Functions and Arrow Functions? — This sounds like basic stuff, but James always does a good job of digging in and explaining things in a way that gives you a more nuanced way to think about a concept, even if it’s just “Which function declaration syntax should I use?”
JavaScript Scope Hoisting is Broken — The creator of Parcel argues that scope hoisting (when bundlers inline modules into a shared scope) conflicts with modern JS patterns like code splitting and dynamic imports, causing subtle bugs and offering little benefit, so he’s considering removing it in Parcel v3.
Devon Govett
Codepoint–Safe Truncation: Fixing Emoji Slicing — An app’s CSV importer kept breaking on emoji-filled rows, triggering errors. James demonstrates how swapping slice for a code-point–aware spread fixes it.
Driver.js: Tours, Highlights, Contextual Help, and More — A vanilla JS library for making on-page tours and contextual help systems. It’s been around for several years, but is still maintained, and there are lots of examples to check out – it’s really smooth.
Kamran Ahmed
jsonrepair: Repair Invalid JSON Documents — This has lots of possible use cases, including dealing with weird JSON coming back from LLMs or non-compliant JSON spat out by poorly built software. You can use it from Node, as a CLI tool, or try a basic version online.
PlanetScale has shared a neat interactive article about caching that visually demonstrates the benefits of caching from several different angles, right down to the CPU level.
🖊️ It’s been a quiet week with heatwaves and holidays seeming to slow the usual flow, but we've made it.. thanks to a few items out of left field 😅 For our US readers, happy Independence Day! __ Peter Cooper, your editor
☀️ JavaScript Weekly ☀️
Deno 2.4: deno bundle is Back — Deno 2.4 reintroduces the deno bundle command for creating single-file bundles for both the server and client side, complete with support for npm and JSR dependencies and automatic tree-shaking. You can also now include arbitrary files into modules using import, and Deno’s built-in OpenTelemetry support is now stable. It’s a substantial release.
Iwańczuk and Jiang
💡 Not to play favorites, Bun v1.2.18 is now out too.
JS1024 is an annual JavaScript code golfing contest. You've got till July 19 to submit a JavaScript program written in 1024 bytes or less on the theme of 'Creepy'.
How to Build Your Own Color Search Engine — A straightforward, practical look at bringing together several technologies and skills to create an AI powered color suggestion tool (which you can try here – results may vary, as seen above). The techniques covered can be used for many different practical ends.
The Road to Next — Learn full-stack web development with Next.js 15 and React 19. The perfect match for JavaScript developers ready to go beyond the frontend.
Robin Wieruch sponsor
⏪A Perplexing JavaScript Parsing Puzzle — The most popular item in JavaScript Weekly this year (so far) was simple in presentation but also deceptively simple in what it asked. 14 characters of JS and one straightforward question – can you get it right?
Hillel Wayne
Modern Node.js Patterns for 2025 — A reflection on the potential of Node as it stands right now. Ashwin reminds us of various developments, including the use of ES modules, built-in Web APIs, the test runner, watch mode, the permission model, import maps, and more.
Repomix 1.0: Pack a Codebase Into an AI-Friendly Format — Enter a GitHub URL, choose your settings (XML, MD, etc), and get a blob that's ideal if you want an LLM to answer questions about or analyze that repo. You can use it online or as a library in Node. GitHub repo.
snapDOM 1.8: Captures DOM Nodes as Images — A rapidly maturing, fast and accurate DOM-to-image capture mechanism to capture any HTML element as a scalable SVG image, preserving styles, fonts, background images, etc. The homepage is packed with examples.
🎨Spectral.js: A 'Paint-Like' Color Mixing Library — If you have two colors to transition between, tweening the RGB values can result in some ugly intermediate colors. Spectral.js uses Kubelka–Munk theory which more closely matches how paints work for a visually satisfying result.
Ronald van Wijnen
Protobuf-ES 2.6 – Full Protocol Buffers implementation for JS/TS.
If Cloudflare Workers are too limited for your use case, Cloudflare has a new option: Cloudflare Containers. Containers is integrated with Workers but, unsurprisingly, lets you package up your app in container images and run them in a flexible way.
🎵 If you fancy getting creative, Strudel is a neat way to code music in the browser. There's a lot to enjoy here with live examples throughout the docs.