Exploring JavaScript symbols

#​714 — November 21, 2024

Read on the Web

🦃 We’re taking next week off for Thanksgiving. We don’t celebrate it in our country, but we know many of you do, so it seemed a good time for a break. We’ll be back on Thursday December 5.
__
Your editor, Peter Cooper

JavaScript Weekly

Importing a Frontend JavaScript Library Without a Build System — Many developers prefer to eschew complex, modern build processes and use JavaScript in a more old-school way. You can definitely get by without a build system, and Julia explores some ways to import libraries in such a setup.

Julia Evans

Angular v19 Released — The latest version of the popular enterprise-scale app framework is here with a ▶️ 22 minute introductory video running through what’s changed and what’s new, including incremental hydration (in preview), two new core reactivity primitives, event replay, and the ability to specify which routes are rendered server or client side.

Minko Gechev

Ship Code Confidently When You Take Testing Fundamentals — Join Steve Kinney for this video course on test-driven development workflows and nail the testing fundamentals. You’ll learn about automation, equality, mocks and spies, integration testing, the tools to help you along the way, and much more.

Frontend Masters sponsor

IN BRIEF:

🗳️ The latest State of JS survey is now open and taking your responses. It’s open until December 3.

🇫🇷 dotJS 2025 is taking place next April in Paris, France. If you’d like to speak, the CFP is open until November 29.

AWS Lambda, the serverless functions platform, turns ten years old this week. Its first runtime was JavaScript-based.

Nova is an interesting new JavaScript engine that takes a CPU cache friendly data-oriented approach.

RELEASES:

Bun v1.1.35 – The fast JavaScriptCore-based runtime adds native support for Musl and Alpine Linux, the Bun binary is a lot smaller, console.group and groupEnd are now supported, and fs.readFile is faster on small files.

Payload 3.0 – Headless Next.js-native CMS platform.

📊 Mantine v7.14.0 – The popular React component suite adds new ‘angle slider’, radial bar chart, funnel chart, and stacking modal/drawer components.

Node.js v23.3.0 (Current) and v20.18.1 (LTS)

Ionic 8.4, ESLint v9.15.0, Turborepo 2.3, Deno 2.1, QuickJS 0.7

🤞 It wasn’t released by the time we hit ‘send’ but we suspect TypeScript 5.7 will be out later today – you can check on the TypeScript blog.

📒 Articles & Tutorials

Exploring JavaScript SymbolsSymbols were a new ‘quirky little primitive’ (as Trevor puts it) that arrived with ES6 ten years ago, but they continue to be poorly understood. Trevor boils them down really well, including a little side quest into the likely-to-be-deprecated ‘species.’

Trevor I. Lasn

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

Building Self-Contained Executable Programs with Deno — One of Deno’s compelling features is its deno compile command that can turn JavaScript and TypeScript programs into single, easy to distribute cross-platform binaries. Here’s a bit more about what makes it tick.

Ryan Dahl and Andy Jiang

Mapping Over Promises in JavaScript — A quick look at three approaches: for..of, Promise.all, and p-map

Peter Mbanugo

Explore Sentry Launch Week: New Products and Community Highlights — Join us for daily video drops on YouTube at 9am PT, and on Discord to chat live with the engineers building Sentry.

Sentry sponsor

📄 Migrating from VuePress to VitePress Henry Bley-Vroman

📄 Why Alpine is the ‘New jQuery’ and Why That’s Awesome Raymond Camden

📄 How to Prerelease an npm Package Scott Vandehey

📄 Precise Decimal Math in JavaScript with Fraction.js Trevor I. Lasn

📄 How to Avoid Flaky Tests in Playwright Zanini and Ackerson

📄 Adding Interactive Charts in Astro Pavlin BG

🛠 Code & Tools

Viselect: Let Users Visually Select DOM Elements — If you’ve got a variety of elements and you want users to be able to select them in groups, individually, or even in multiple groups, this lets you offer that functionality easily. Can be used in a vanilla fashion or with integrations for P/React or Vue.js.

Simon Reinisch

Perfectionist 4: ESLint Plugin for Sorting Things in Your Code — It doesn’t care what you want to sort (props, imports, types, decorators, modules..) but if you want to enforce something is sorted using ESLint, this is for you. It supports alphabetical and natural sorting, plus sorting by line length which results in this sort of aesthetic.

Azat S.

Your Vectors Are Too Big — Are your massive full-fidelity vectors slowing down your search? Compress, cut costs, and boost speed with MongoDB Atlas!

MongoDB sponsor

React Scan: Detect Performance Issues in Your App — A pure JavaScript tool you can drop into your app to automatically ‘scan’ for problematic renders without doing lots of integration work. There’s a simple demo on the homepage or you can see Aiden’s view of Twitter/X being scanned. GitHub repo.

Aiden Bai

💬 Discordeno v19: A Powerful Discord API Library — A long-standing way to work with, and build bots for, the popular Discord chat system. v19 is a big update with breaking changes. GitHub repo.

Discordeno Team

🤖 Vercel’s AI Chatbot Starter Template — An open source AI chatbot app template built using Next.js. It uses Vercel’s AI SDK and other Vercel APIs for the heavy lifting.

Vercel

Glide.js 3.7: A Dependency-Free Slider and Carousel Control“Designed to slide. No less, no more” says the creator. MIT licensed and mature.

Jędrzej Chałubek

📰 Classifieds

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

Hookdeck: An alternative to Amazon API Gateway + Lambda + SQS. With local dev, debugging, and observability built-in.

pretty-ms 9.2 – Convert milliseconds to human readable strings. Now with options to hide years, seconds and days, as preferred.

Javet 4.1 – Embed Node.js and V8 into Java. Updates to Node v22.11.0 and adds Float16 support.

Embla Carousel 8.5 – Lightweight carousel library with fluid motion.

Sortable 4.0 – Make tables sortable with class=”sortable”

📊 Vue Data UI 2.4 – Vue 3 data visualization components.

Capacitor 6.2 – Build cross-platform native apps with JS.

Peggy 4.2 – Parser generator for JavaScript.

Will we care about frameworks in an AI world?

#​713 — November 14, 2024

Read on the Web

JavaScript Weekly

Component Party: A Rosetta Stone of UI Libraries — A long-standing comparison of many different frameworks (like React, Vue, Svelte, Angular, Qwik, Solid.js, etc.) by way of simple code snippets to perform various tasks. Now including Svelte 5 and Angular 17/Renaissance.

Mathieu Schimmerling

Will We Care About Frameworks in the Future? — Paul wonders if the increasing use of LLMs and agents in software development will lead to a reduction in the need for new frameworks and extra developer-focused abstractions.

Paul Kinlan

Advanced JavaScript Tools to Empower Your Applications — Build better web applications with powerful JavaScript developer tools including: SpreadJS Excel-like spreadsheet components, ActiveReportsJS reporting tools, Wijmo UI component suite, and Document Solutions viewers for PDF, Excel, Image, and more.

MESCIUS inc sponsor

The vlt Package Manager and Serverless Registry — A very experienced team, including npm creator Isaac Schlueter, launched Vlt to ‘build the future’ of JavaScript package management. The first results have appeared in the shape of the vlt client (which can replace npm), as well as a serverless package registry you can self host to serve up your own packages.

Clarke, Adorno, Schlueter, and Karrys

💡 Sarah Gooding shares some more background on Vlt’s story here.

TypeScript 5.7 Release Candidate — The popular typed JS superset adds support for ES2024 as a target, can report errors when variables aren’t initialized, adds path rewriting for relative paths, and can use Node’s compile caching to save on parsing work. The final release is expected in a week or two.

Microsoft

IN BRIEF:

🤖 Microsoft has introduced Copilot Edits in VS Code – it provides a way to work across multiple files in a project at once.

Jawsm is an early-stage, experimental JavaScript to WebAssembly compiler (akin to Porffor) but that aims to use the most advanced WASM features off the bat, such as WasmGC and exception handling.

💜 CSS now has an official logo!

RELEASES:

Expo SDK 52 – Toolset for building modern React Native apps, now supporting React Native 0.76 and the New Architecture.

Node.js v18.20.5 (LTS) – Lots of dependency updates and now import attributes and JSON modules are marked stable.

No announcement, but it looks like Ember 6.0 is about to land.

Node.js v23.2.0 (Current), pnpm 9.13, Parcel 2.13.0

📒 Articles & Tutorials

JavaScript Import Attributes (ES2025) ExplainedImport Attributes (now at stage 4 at TC39 and already supported in some runtimes) add a way to supply useful metadata about modules you’re importing.

Trevor I. Lasn

💡 Trevor is on quite a run of great posts. He also digs into Promise.try and how JavaScript’s bitwise shifting operators work.

Creating an ASCII Shader Using OGL — An incredibly cool effect demonstrated in a great tutorial on getting started with shaders and using OGL, a lightweight WebGL library.

Andrico Karoulla

Guide to Error & Exception Handling in React — Learn common errors and best practices for recovering from them in a user-friendly way.

Sentry sponsor

How a BBC Navigation Bar Component Broke Depending on Which External Monitor It Was On — A look at an interesting bug related to external monitor positioning. The lesson is that “browsers have an interoperability issue in how they represent screen coordinates in multi-monitor setups”.

Josh Tumath

How to Set Up Next.js 15 for Production in 2024 — Share in this author’s experience in scaling up Next.js apps to over 100k monthly active users and millions of monthly visitors.

Jan Hesters (ReactSquad)

▶  From Next.js to htmx: A Real World Example — An interesting case study explained in a 50-minute screencast: “Replacing my components with the equivalent HTML elements powered by htmx wasn’t exactly an easy task, but one that was worth the time.”

Pouria Ezzati

📄 How to Optimize Performance in Vue Apps Jakub Andrzejewski

📄 How to Build a Database App with Drizzle ORM and Deno Andy Jiang

📄 Essential tsconfig.json Options You Should Use Duy NG

📺 Building a Rich Text Editor with Svelte 5 Michael Aufreiter

🛠 Code & Tools

Lexical 0.20: An Easy-to-Extend Text Editor Framework from Meta — A text editor framework built by Meta with extensibility, accessibility, and cross platform support in mind (there’s even a Swift variant for iOS). There’s a live playground if you want to give it a try. React support is first class, but it can be adapted to work elsewhere (as with svelte-lexical).

Meta / Facebook

Introducing @clerk/nextjs v6, with Support for Next.js 15 — With v6, auth() helper is async, <ClerkProvider> defaults to static rendering, and partial pre-rendering is supported.

Clerk sponsor

Storybook 8.4 Released — A minor release for the powerful frontend component workshop but “one of our most feature-packed minor releases” with one click component testing, Svelte 5 support, and React Native Storybook 8.

Michael Shilman

🗓️ Schedule-X 2.5: Material Design Calendar and Date Picker — 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

🎵 music-metadata: Stream and File-Based Music Metadata Parser — Supporting formats like MP3, FLAC, Ogg, WAV, WMA, AAC and AIFF, this library extracts metadata like ID3v1 and iTunes tags for processing however you want. Yes, it even works in the browser.

Borewit

Looking for a DIY Survey Solution? SurveyJS Has You Covered — Build, customize, and store surveys with ease. Total data control, JSON-driven, no backend restrictions—integrates into any JavaScript app.

SurveyJS sponsor

Micromark 4.0.1: A Small Compliant Markdown Parser — 100% compliance with the CommonMark standard, supports extensions (such as for GitHub Flavored Markdown), and full test coverage.

Titus Wormer

jsep 1.4: JavaScript Expression Parser“Think of jsep as a tool to parse the kinds of expressions that would be written in individual Excel cells.”

Stephen Oney

📊 visx 3.12 – Airbnb’s suite of React visualization components now includes a Sankey diagram component.

🖼️ Fabric.js 6.5 – Makes HTML5 Canvas elements more interactive with an object model and operations. GitHub repo.

DOMPurify 3.2 – Fast, tolerant XSS sanitizer for HTML and SVG. Demo.

MikroORM 6.4 – Popular TypeScript ORM for Node.js.

Marked 15.0 – Fast Markdown compiler / parser.

📰 Classifieds

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

Never miss a Shopify, Stripe, GitHub, Paddle… or any webhook again with Hookdeck’s serverless queue infrastructure. Learn more.

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

😀 More fun at Val Town

I’ve written about Val Town several times and am a huge fan. It’s a site where you can write and deploy TypeScript from your browser and describes itself as “if GitHub Gists could run, and AWS Lambda was fun.

It’s been a delight to watch its progression from a prototype to what is now a solid platform used in production use cases and I want to call out some recent posts that keep it on my radar:

Building a Code-Writing Robot and Keeping it HappyTownie is an AI assistant for building apps on Val Town. This post digs into how it works, some of the problems encountered in its creation, and how its results are evaluated.

Val Town Town – Could you implement something like Val Town on Val Town itself? At the risk of eating its own tail, it turns out you can.

If you’re stuck for something to do or check out, check out Val Town – it’s fun!

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