Reflecting on a big year for JavaScript

#​668 — December 21, 2023

Read on the Web

🎄 Welcome to the final issue of 2023! We’re taking a week off for Christmas, so this issue focuses on looking back at the past year and the items that intrigued you the most. We’re back at full steam on January 4, 2024 and we hope you have a fantastic holiday season.
__
Peter Cooper and the Cooperpress team

JavaScript Weekly

🎉  V8 is Faster and Safer Than Ever — The V8 team wants to end the year on a high and they’ve certainly pulled it off performance-wise. This post covers the highlights for the V8 engine in 2023, including the new Maglev mid-tier JIT compiler, the faster HTML parser, and support for several new JS features.

Victor Gomes (V8)

Announcing SvelteKit 2 — SvelteKit’s first official release was a year ago, and despite its relative youth, the framework has been quickly embraced by the community. This 2.0 release is an incremental one, adding support for Vite 5, and laying the groundwork for Svelte 5 which is due for release in 2024.

Svelte

Feel the Power of More Than 420,000 Teammates and Work #LikeABosch — At Bosch, we shape the future with high-quality technologies and services to inspire people and improve their lives. And it’s our people who make us remarkable. Our success is your success. Let’s celebrate together. Learn more.

Bosch sponsor

date-fns v3 Released — The hugely popular suite of 200+ functions for working with dates in JavaScript has been rewritten in TypeScript, reintroduces String date arguments, has ESM support on Node, and all functions now export via named exports. GitHub repo.

Sasha Koss

v0: Vercel’s AI-Powered React Component Creator — The AI-powered v0 looked fascinating on its release, but has been stuck behind a waitlist till now. Vercel has dropped that list, opening it to all users. Even Larry David would admit it’s pretty, pretty good.

Vercel Labs

IN BRIEF:

RIP Vue 2.x: If you’re using Vue 2, be prepared: Vue 2 goes ‘End of Life’ (EOL) on December 31st, 2023.

We’ve revisited Robin Wieruch’s 10 Web Development Trends in 2023 from January 2023 – he was on the money with all of them.

Linus Schlumberger took a look back at all the main new JS and TS features of the past three years.

Conversely, The New Stack took to looking at what’s next for JavaScript.

Remote Workshop: Svelte & SvelteKit – Afternoons of Jan 30 to Feb 1

Mainmatter sponsor

▶  TypeScript Origins: The Documentary — Videos don’t tend to do well in JavaScript Weekly, but this was the most popular one, so I wanted to feature it again! I truly enjoyed watching all of this; it’s so well made. It digs into the motivations and process behind TypeScript’s creation and release, and could easily replace Die Hard in your Christmas rotation. Maybe.

OfferZen

26 Web Dev Terms You May Not Have Heard Of

Jens Oliver Meiert

📒 Top Articles & Tutorials of 2023

As determined by their popularity in JavaScript Weekly.

Deep Cloning Objects in JavaScript, The Modern Way — I’m as surprised as you, but this was the top-clicked link in 2023. If you’ve been leaning on something like Lodash for deep cloning, we “finally now have the built-in structuredClone function to make deep cloning objects in JavaScript a breeze.”

Steve Sewell

Web Components Will Outlive Your JavaScript Framework — Web Components have been having ‘quite a moment’ this year and this looks set to continue in 2024. This was a spicy opinion piece but the points raised provoked a lot of discussion and remain highly relevant in the JS zeitgeist.

Jake Lazaroff

What Is Deeper SAST in JavaScript? — Read about the expanded capabilities of Sonar’s SAST to help detect security vulnerabilities in your JavaScript apps.

Sonar sponsor

You’ve Got Options for Removing Event Listeners — A review of some of the most common approaches available to remove event listeners in JavaScript.

Alex MacArthur

Things You Forgot (or Never Knew) Because of ReactThe item that was popular in both this newsletter and our React newsletter and easily one of the ‘classics’ of the year.

Josh Collinsworth

Writing JavaScript Without a Build System — Using a variety of build tools for things like bundling and transpiling is reasonably standard in modern JavaScript development, but what if you want to keep things simple? For simple things, it’s not necessary, says Julia. This led to a lot of discussion on Hacker News.

Julia Evans

Julia didn’t mention them, but 2023 was also the year that import maps became broadly supported in browsers, opening up extra opportunities for build-free JavaScript. The whole topic remains a little up in the air, though, judging by the reaction to DHH’s (he of Ruby on Rails fame) excitement about the ‘no build’ experience.

🛠 Top Code & Tools of 2023

As determined by their popularity in JavaScript Weekly.

UnsuckJS: Comparing Lightweight JavaScript Options — A list of frontend JS libraries in a table on a single, fast page. It remains a handy way to see the relative popularity, file size, and latest versions of libraries as diverse as Preact, Bau, htmx, Hyperapp, and Mithril.

Adam Hill

React Libraries for 2023 — The React ecosystem is so large that there’s often a problem of being spoiled for choice, so opinionated guides to different solutions tend to do well, like this annual list from Robin.

Robin Wieruch

Session Replay Basics – Debug Web App Issues Faster — Join us on Jan 11 to learn how Session Replay can help find and resolve the most difficult-to-repro issues in JavaScript.

Sentry sponsor

A Huge Year for Playwright — The popular Web testing and automation framework took some serious steps forward in 2023, particularly with v1.32.0 (linked above) offering a ‘UI mode’ that lets you explore, run and debug tests in a UI environment, complete with built-in watch mode. ▶️ This video provides a good introduction.

Microsoft

You Don’t (May Not) Need Lodash or Underscore — Inspired by the popular You Might Not Need jQuery, this extensive document provides pure JS alternatives to almost 100 different functions as you’d find in popular utility libraries like Lodash.

You Don’t Need

Driver.js: Tours, Highlights, Contextual Help, and More — A no-dependency library for putting together on-page tours and contextual help. The project is a few years old but was rewritten in TypeScript in 2023, gained numerous enhancements, and got a fresh lick of paint.

Kamran Ahmed

Transformers.js: Running ML Models in Your Browser — Transformers are a type of machine learning model often used in language or visual processing and while running these in the browser remains in its infancy, Transformers.js opens up some ML models to you with some impressive demos here.

Xenova

DeviceScript: Microsoft’s Even-Tinier TypeScript — DeviceScript brings the TypeScript experience to low-resource microcontroller devices. It’s compiled to a custom VM bytecode that can run in such constrained environments (a la Go’s TinyGo.) It’s aimed at VS Code users but there’s a CLI option.

Microsoft

Please note that these are the items that got the most clicks in the newsletter, but as we’ve covered throughout the year, many projects have had significant releases this year, including Deno, Astro, TypeScript, Node.js, Ember and Bun.

That’s all for now, and we’ll see you again in 2024! ❄️

Join our Partner Program!

Are you a Systems Integrator, Consulting Company, or Agency building Node.js based solutions to your clients? If you are then our new NodeSource Approved Partner Program may be right for you.

This program is specifically designed to help companies like yours win more deals, earn revenue from sales of NodeSource N|Solid Pro, and build better solutions for your clients.

The program offers the following benefits for members:

Revenue share from sold N|Solid licenses
Pre-sales support to help you close deals
Sales training on N|Solid and other NodeSource products
Access to Technical training programs to enhance your teams skills with Node.js and Javascript
Account management and technical support through Slack/Teams
Early access to N|Solid product updates and roadmap insights
Co-marketing opportunities
Listing in the NodeSource Partner finder

To learn more and apply please contact our partnerships team at [email protected]

JS Runtime Royale

#​667 — December 14, 2023

Read on the Web

✍️ Christmas is almost here, so we’re preparing our annual roundup issue for next week, before we take some time off! Keep an eye out for that next Thursday 🙂
__
Your editor, Peter Cooper

JavaScript Weekly

Oxlint: A New JS Linter ’50-100x Faster’ than ESLint? — Making tools as fast as possible is a common theme in the JavaScript world, and it’s the MO for the JavaScript Oxidation Compiler toolkit. Oxlint is one of their tools that’s now GA. It’s still early days, but when Evan You says “the performance is absolutely nuts” when running against the Vue 3 codebase, we sit up and listen.

Boshen

Bun v1.0.18: The JS Runtime Preparing to Take Over the World — I might have overegged the headline, but Bun is on a serious mission to replace Node.js, at least, with their ‘one goal for 2024’ being to “flip the default backend JavaScript runtime from Node.js to Bun.” They are also placing a focus on shipping Windows support ASAP.

Jarred Sumner et al.

New TypeScript Courses: Take the Learning Path — Join Mike North (Tech Lead at Stripe) for this series of brand new TypeScript courses. You’ll get hands-on practice covering both the fundamentals and advanced features like utility types and advanced generics. Learn best practices to configure and evolve your TS codebase!

Frontend Masters sponsor

Visual Studio Code November 2023 — The latest VS Code release has some handy enhancements for JS developers, including a V8 heap snapshot visualizer, the ability to drag tabs into their own new windows (a.k.a. ‘floating editor windows’), and TypeScript 5.3.

Microsoft

Deno 1.39: The Return of WebGPU — Deno introduced WebGPU support in Deno 1.8 but it was removed for various reasons. It’s back and gives you a tidy way to work with the GPU directly from JavaScript (behind the –unstable-webgpu flag, at least). Improvements to Node.js compatibility and various Deno APIs, as well as TypeScript 5.3, are included.

The Deno Team

IN BRIEF:

🎁 GitHub Unwrapped is a fun project that renders your GitHub activity into a video (a la Spotify’s “Wrapped” roundups). The source is available. It uses the React-based Remotion to dynamically create the videos.

Safari 17.2 is a particularly jam-packed release of Apple’s browser, but on the JavaScript side it has added support for import attributes.

There’s only a day or two left to take the State of JS 2023 survey.

The latest Storybook beta has added support for React Server Components.

A handy list of JavaScript engines, runtimes, and interpreters.

RELEASES:

Million 3.0 – VDOM replacement for faster React.

Croner 8.0 – Trigger functions using cron syntax.

Rollup 4.9, Ember.js 5.5, Expo Router 3.0 beta, Remix 2.4.

📄 Articles & Tutorials

The Await Event Horizon in JavaScript — You know someone’s getting heavy when they start a JavaScript article by talking about the event horizon around black holes and how “a similar boundary exists around every JavaScript Promise.” Enjoy.

Charles Lowell

Benchmarking, Profiling, and Optimizing JS Libraries — As part of this year’s Web Performance Calendar, take a journey with Stéphane to learn about optimizing a library (globalize, in his case) by way of benchmarking and profiling.

Stéphane Goetz

[Live Today] Fix Slow Code and Improve Browser JavaScript Performance

Sentry sponsor

The New TC39 FAQs — TC39 is the committee responsible for evolving and maintaining the ECMAScript spec, the standardized form of JavaScript, and its members have started a disclaimer-riddled FAQ. You can suggest new topics by opening an issue, or learn a little from the nine questions covered so far, including Will JS ever add JSX notation? and Will WebAssembly replace JS?

Ecma TC39

You Don’t Need JavaScript for That“Just because you know something needs JavaScript, doesn’t mean it still does. You can make better websites if you test those assumptions every now and then.”

Killian Valkhof

What Vue’s Creator Learned the Hard Way with Vue 3 — Evan You shared some of the lessons he learned from the release and reception of Vue 3 around things like including a lot of small breaking changes, to choosing deprecation over breaking changes.

Loraine Lawson (The New Stack)

▶  Deploying Node.js with Google’s Duet AIDuet AI is Google’s AI-based assistive agent that works both in the IDE and within Google Cloud.

Google Cloud

Stop Nesting Ternaries in JavaScript

Phil Nash

🛠 Code & Tools

RE:DOM 4.0: The 2K UI Library — We first linked to this library over 6 years ago but it’s still going, so if you want something to help with creating and syncing DOM elements that’s ‘close to the metal’, it’s worth a look. v4.0 enables tree shaking and adds viewFactory.

Juha Lindstedt and contributors

TS Docs: Online Reference Docs for npm Packages — Browse reference TypeScript documentation for any package or version of a library.

Shubham Kanodia

Add Authorization, MFA, Biometrics and More to Your JavaScript App in Just Minutes — It’s about time that somebody talked some sense about OAuth and JavaScript. So we did. You’re welcome.

FusionAuth sponsor

Seroval 1.0: Stringify JS Values — A handy utility library for turning JavaScript values into strings that can handle far more complex things than JSON, say.

Alexis H. Munsayac

SpaceTime 7.5: A Lightweight Timezone Library — Use this to calculate times in other timezones. Has a Moment-like API but is immutable. No dependencies. GitHub repo.

Spencer Kelly

React Responsive Pagination: Component for Smart Pagination — A responsive pagination component which intelligently adjusts to the available width. The homepage is a live demo, or you can hit the GitHub repo.

Jon Elantha

Svelte SPA Router: A Router for Svelte 3 and 4 SPAs — Previously for Svelte 3 only, Svelte 4 support has now been added. Upgrade guide.

Alessandro (Ale) Segala

📊 vue-chartjs: A Vue.js Wrapper for Chart.js — Using Vue? Want charts? Consider this. Demos here.

Jakub

Bringing Performance, Reliability, and CI/CD to Data — Managed infrastructure for versioning, access controls, and performance. Subscribe now.

Patch sponsor

Facebook Relay 16.1 – The React GraphQL framework.

React PDF 7.6 – Display PDFs in your React apps.

Reactotron 3.0 – React Native debugging tool.

jest-image-snapshot 6.4 – Jest matcher for image comparisons.

pnpm 8.12 – Fast, efficient package manager.

ws 8.15 – Fast Node.js WebSocket library.

np 9.2 – A better npm publish.

😍 Beautiful Planets

Three.js Procedural Planets — This is gorgeous! You can have a lot of fun adjusting the parameters to change the outcome, or you can spin up and play with your own copy using the source code. If you don’t want to stress out your browser, you can see how it looks ▶️ in this video.

Daniel Greenheck

Innovating for Performance: How our Infra Team Powers 100+ Million Downloads A Year (While Keeping our SaaS Reliable and Secure)

We just shared big news about the open-sourcing of our Node.js Runtime and the release of our AI Copilot for Node, both requiring a big role from our infrastructure (Infra) team. They are the team behind the scenes, dedicated to delivering top performance, and have been instrumental in maintaining our reputation for fast, stable, and secure delivery of our SaaS product and Binary Distributions–which generate over 100 million annual downloads a year.

The team is always looking for ways to innovate our infra to meet the growing demand and efficiency of our services, and as a part of the product releases, made some key updates to our platform. We wanted to share so others could gain value in their efforts as well as celebrate this critical group for us. Next time you talk to your infra team, give them some love, they do so much!

Infrastructure Enhancements: Moving Forward with EKS and GitOps

Our Infra team has recently completed significant updates to further improve our services:

1. Migration from ECS to EKS: To streamline our operations, we have transitioned from AWS Elastic Container Service (ECS) to Elastic Kubernetes Service (EKS). This move simplifies our operational framework by unifying it on a single platform (EKS), significantly reducing the need to manage and monitor multiple platforms. This change also enhanced our security. In Kubernetes, we now manage our security with policies and roles and the automated Kubernetes control plane security provides the services that make Kubernetes work.

2. Pipeline Enhancements: Our deployment processes have been upgraded for efficiency and reliability. The integration of GitOps and GitHub Actions play a pivotal role in these improvements:
Single Source of Truth: Both infrastructure and application configurations now have a centralized, standardized management system. This approach ensures consistency and reliability in our deployment processes.
Enhanced Collaboration and Automation: The adoption of GitOps allows for smoother collaboration and automation, making it easier to deploy changes rapidly and efficiently.
Declarative Configuration: Our configuration is designed to be easily readable and understandable, facilitating quick and accurate deployments.

3. Faster Deployment Times: One of our key achievements has been a reduction in deployment times of almost 70%. This efficiency gain translates to quicker availability of new features and updates for our customers, enhancing their overall experience.

4. Reduced Cost: In addition to all of the above, we also reduced the costs for our deployments by 80%!!!

Our Commitment to Timely Updates and Ecosystem Support

At NodeSource, we are proud to be a leading distributor of the open source binaries for DEB and RHEL and for setting the standard for release speed. Millions of websites, apps and more count on our binaries because we deliver them rapidly. We release security updates within 24 hours and Node.js feature builds inside of 48 hours. This rapid response time supports the evolving needs of the Node.js ecosystem and demonstrates our commitment to providing the latest and most secure features to our customers. Check out our GitHub Distributions for more.

Conclusion: A Continued Legacy of Innovation and Excellence

At NodeSource, the Infra team’s ongoing innovations ensure that we remain at the forefront of performance, stability, security, and availability. We are proud of our efforts to support the Node.js ecosystem, as well as organizations that rely on Node, by providing the best tooling, service, and support.

Learning JS framework concepts by building one

#​666 — December 7, 2023

Read on the Web

JavaScript Weekly

Learn How Modern JS Frameworks Work by Building One — Building things is a great way to learn, even if you don’t end up using what you built. Even better is when someone who’s already built something successful introduces you to the process. Nolan doesn’t go super deep but far enough to whet your appetite and for you to learn a few things by taking it further.

Nolan Lawson

🚀  Astro 4.0 Released — The new major release of the Astro content-site framework is just out, including a new dev toolbar, automatic i18n routing, new view transition APIs, and more. There’s also, experimentally, incremental content caching. Upgrading is simple – an npx @astrojs/upgrade away for most folks.

Astro

Streamline API Development With Postman Workspaces — Postman workspaces give teams shared access to the API tools they need to solve problems together. They are the go-to place for development teams to collaborate and move quickly while staying on the same page.

Postman sponsor

Maglev: V8’s Fastest Optimizing JIT — An interesting look under the hood of how the V8 JavaScript engine (as used in Chrome, Node.js and elsewhere) continues to get faster thanks to work on its Maglev JIT compiler which sits between the existing Sparkplug and TurboFan compilers (which both have distinct compilation speed vs code performance tradeoffs).

The V8 Team

IN BRIEF:

📊 The WebAssembly vs JavaScript (PDF) paper compares the energy requirements and performance of JS and WASM on the Web. Spoiler: “WebAssembly is faster than JavaScript and even more energy efficient.”

A recap of the Electron ecosystem in 2023.

The New Stack weighs up the pros and cons of using React today.

Talk about going down a rabbit hole, but did you know it’s possible to use Nuxt, Vue and Tailwind CSS to build an Adobe Premier Pro plugin?

Popular ingress service ngrok has unveiled a JavaScript SDK to add secure ingress to Node apps.

The Construct 3 2D game engine now supports TypeScript.

RELEASES:

Electron 28 – Now with ESM support, Chromium 120 & Node.js 18.18.2.

Fresh 1.6 – The Deno-based web framework.

React Native 0.73 – Now with full Android 14 support, Kotlin becomes the recommended language for Android, and more.

HTML5 Boilerplate v9.0 – Blast from the past!

Redux 5.0, Redux Toolkit 2.0, and more.

Node.js v21.4.0 (Current), Qwik 1.3, and Redwood 6.5

📄 Articles & Tutorials

Prettier’s CLI: A Performance Deep Dive — We’ve recently written about the bounty the Prettier project put up (and how Biome won it) but Prettier has also been working on itself by hiring the author of this post to find and implement performance improvements, all while sticking with JavaScript.

Fabio Spampinato

The Complete Puppeteer Cheatsheet — If you want to control a headless Chrome browser from JavaScript, Puppeteer is for you.

Mohan Ganesan

Accelerate Your API Development with Postman Collection Templates — Browse 70+ free and customizable templates to jump-start your API design, documentation, development, and testing workflows.

Postman sponsor

How Marketing Changed OOP in JavaScript — A look at JavaScript’s earliest history and its prototypal nature.

Juan Diego Rodríguez

Goodbye, Clean Code — Much as Donald Knuth warned us away from premature optimization, here Dan Abramov tells us to beware of premature refactoring and de-duplication. (A golden oldie post from 2020.)

Dan Abramov

I Replaced npm, yarn and nvm with pnpm — npm hasn’t been the only package manager in town for many years.

Pawel Grzybek

Advanced Patterns for Taking Page Element Screenshots with Playwright

Liran Tal

TypeScript’s Hidden Feature: Subtypes

Tim Johns

🛠 Code & Tools

TSDiagram: Diagrams as Code with TypeScript — Draft diagrams quickly with TypeScript. Define data models through top-level type aliases and interfaces and it automatically lays out things out in an efficient way. GitHub repo.

Andrei Neculaesei

StyleX: Meta’s CSS-in-JS Styling System — A newly open sourced “CSS-in-JS” library from Meta made up of a JavaScript syntax and compiler for styling web apps. Jack Herrington has ▶️ a 13-minute screencast taking a practical look.

Goel and Gallagher (Meta)

Simplify Debugging with Console Ninja’s Predictive Logging — Smart predictions and ahead of time logging saves you multiple iterations of adding logs and re-running your app to get the values you need.

Wallaby Team sponsor

tsParticles 3.0: Particles, Confetti and Fireworks for Your Pages — Create customizable particle related effects for use on the Web. Uses the regular 2D canvas for broad support.

Matteo Bruni

Culori: A General-Purpose Color Manipulation Library — Supports most color spaces and formats defined in the CSS Colors Level 4 spec and can parse, convert, mix, create color differences, and more. GitHub repo.

Moqups

Perfume.js 9.2: Web Performance Library for Measuring User-Centric Metrics — A tiny web perf monitoring library that reports data back to your favorite analytics tool and supports the latest browser performance APIs for precise metrics on things like first paint, total blocking time, etc.

Leonardo Zizzamia

Timenames: A Unique Name for Each Second of the Day — The author had an app and wanted to create more interesting unique filenames without using the time directly. There’s a live demo showing the names in action.

Ankur Seth

YouTube.js 8.0: A Wrapper Around YouTube’s Private ‘InnerTube’ API — It uses the same behind the scenes API as official YouTube clients, rather than the official developer API, so, as always, your mileage may vary.

LuanRT

Feel the Power of More Than 420,000 Teammates and Work #LikeABosch

Bosch sponsor

Storybook 7.6 – The frontend UI component workshop.

Mantine 7.3 – Full featured React component suite.

swup 4.5 – Page transition library for server-rendered sites.

wavesurfer.js 7.5 – Audio waveform rendering and playing.

Nano Events 9.0 – An event emitter library in 107 bytes.

AdminJS 7.5 – Admin interface for webapps.

AVA 6.0 – Popular test runner for Node.

NodeSource Team Supports JSConf Colombia for the Event’s 10th Anniversary

Over a thousand developers gathered together two weeks ago to engage in all things JavaScript at the sold-out JSConf Colombia (https://www.jsconf.co/) while celebrating its 10th year in Medellin. Our NodeSource team members (current and past) played impactful roles in leading, planning, and speaking to support the community event. We are incredibly proud of our Colombian team members, who are a massive part of creating our best-in-class OSS N|Solid Runtime and premium platform N|Solid Pro.

Adrian Estrada, our VP of Engineering and OpenJS Foundation Board Member, has been a key leader for years in supporting Colombia’s Node.js and JS community. His great passion for technology and enabling people to develop and grow makes him a fantastic leader for our global engineering team and community engagement. Alongside Adrian, Julian Duque, a NodeSource alumni, has also been instrumental in the Colombian JavaScript community. His leadership and contributions have significantly shaped the region’s JavaScript development landscape. Julian’s efforts, combined with Adrian’s dedication, underscore the deep involvement and influence NodeSource has in nurturing and advancing the tech community in Colombia.

This event has had an incredible decade-long run, with a commitment to breaking down barriers, promoting accessibility, and creating a space that champions diversity. As the last in the series, the community was committed to making this final event one to remember.

The event opened to local musicians on stage, setting the tone for a joyous and creative experience. Talks at the event showcased the diversity of the community, including topics like “Making Art with JavaScript and Garbage,” “Unlock the Power of JavaScript Generators,” “IDX, WebIDE’s and the Future of JavaScript Debugging,” and the AI-themed “Chatting with the Canvas; How to Assemble Art from AI Image Prompts.”

Jessica Felix highlighted N|Solid, our product, emphasizing its significance in modern Node.js development and performance analysis. This array of topics underlined JavaScript’s dynamic and multifaceted nature, catering to a wide range of interests and expertise within the community.

NodeSource Alumni and JS Rockstar Erick Wendel shared his knowledge about “How to consume gigabytes of data in JavaScript without slowing down applications.”

And one of our current team members, the talented Juan José Arboleda, challenged the attendees that “JavaScript can be as fast as C++.”

Colombia has long been a crucial part of NodeSource, and the talent and energy from the region have produced many great team members. Like Maria Fernanda Serna and NodeSource Alumni Liz Parody, who helped organize this year’s event, we have enjoyed the spirit and talents of this region. Colombia has also been a place where we give back. From these community events to where we planted trees for every customer in our NodeForest campaign, Colombia is ¡Qué nota de lugar! (a fantastic place!).

In keeping with this spirit of community and innovation, a new event is being born to replace JSConf Colombia. It will be announced soon and is set to happen in October 2024. This upcoming event, which includes some of the organizers of JSConf Colombia, will continue to foster the region’s vibrant tech community. NodeSource will also continue to support this initiative, highlighting its ongoing commitment to the Colombian tech scene.

Every Framework Everywhere All at Once

#​665 — November 30, 2023

Read on the Web

JavaScript Weekly

Eliminating JS Framework Lock-in with Web Components? — Can you build an app where each component is using a different framework? Amazingly, yes. Web components aren’t new but are ‘having a moment’ and Jake demos an interesting, if contrived, use case. He explains: “Say you’re writing a Vue app and you really want to use a library that’s only available as a React component. You can wrap that library in a web component and use it in your Vue app…”

Jake Lazaroff

Announcing Deno Cron — Deno adds a cron-style feature to run code on a pre-defined schedule using Deno.cron. This works locally (behind –unstable) in a long-running process, but on Deno Deploy it analyzes the definition and runs the code on time, as you’d expect, with no extra work needed.

Zinkovsky and Jiang (Deno)

Feel the Power of More Than 420,000 Teammates and Work #LikeABosch — At Bosch, we shape the future with high-quality technologies and services to inspire people and improve their lives. And it’s our people who make us remarkable. Our success is your success. Let’s celebrate together. Learn more.

Bosch sponsor

The Biome Formatter Wins the ‘Prettier Challenge’ — Two weeks ago, the creator of Prettier put up a $10k bounty for a Rust-powered code formatter that could pass over 95% of Prettier’s tests. Biome, the toolchain forked from Rome, has already managed to claim the prize, topped up by further contributors.

Biome

🤔 There’s a post from the Prettier POV where @vjeux explains why he offered the bounty: he felt a ‘a lack of competition’ was holding Prettier back.

IN BRIEF:

📺 Evan You, creator of Vue.js, presented an update on the state of Vue and Vite for VueConf Toronto attendees. (48 minutes.)

🟩 The two LTS Node.js branches have received releases backporting features from newer versions: Node v20.10.0 (LTS) gains WebSocket and an experimental flag to auto-detect ESM code. Node v18.19.0 (LTS) gets npm 10 and tweaks for customization hooks and loaders.

🎙️ Off The Main Thread is a new podcast featuring Jake Archibald and Surma (both formerly of Google / HTTP 203).

🎂 Not to do with JS – though some of you may use it – but Notepad++ is 20 years old. It’s a popular open source code editor and Notepad replacement for Windows.

🙋 The State of JavaScript 2023 survey is still open to take.

RELEASES:

Passport 0.7 – Popular authentication middleware for Express-based apps.

eta (η) 3.2 – Embedded JS template engine for Node, Deno, and browsers.

Fable 4.6 – F# to JavaScript transpiler.

📄 Articles & Tutorials

▶  10 JavaScript Changes You (May Have) Missed in 2023 — We’ve covered most of these, but this is still a productive refresher in just six minutes, covering things like toSorted(), iOS Web Push, Next.js updates, Angular 17, and the rapid rise of Bun.

Fireship on YouTube

Fireship is a great channel for these sort of quick-fire roundups, and if you want more 100+ JavaScript Concepts You Need to Know is a fun one.

Tracking Frontend JS Exceptions with Playwright Fixtures — Playwright is commonly used to test frontend apps and ensure they’re rendering and behaving correctly, but what if you want to be sure the underlying JavaScript is working as expected too? Stefan has some tips.

Stefan Judis

Lesser Spotted React Mistakes and How to Avoid Them — Read about common pitfalls that occur when writing React code. Cut, paste, & try the included examples in your own code.

Sonar sponsor

A Deep Dive into CheerpJ 3.0: A WASM JVM for the Browser — A look at an interesting WebAssembly-based Java Virtual Machine that runs client side in the browser, opening up bidirectional Java-JavaScript interop, if you need it. Note that it’s commercial, but can be used free for personal projects and evaluation.

Pignotti, Bates, and De Rossi

A Simple WebSocket Benchmark: Node vs Bun — Using as ‘textbook’ an example of WebSocket communication as possible, the author pits Node and Bun against each other.

Daniel Lemire

Svelte Through the Eyes of a React Developer

Ido Shamun

🛠 Code & Tools

FullCalendar: A Full Sized JavaScript Calendar Control — An interesting option if you want a Google Calendar style experience for your own apps. Has connectors for React, Vue and Angular. The base version is MIT licensed, but there’s a commercial version too with extra features.

Adam Shaw

Knip 3.3: Find Unused Files, Dependencies and Exports — Finds unused files, dependencies and exports in your projects and lets you cut/knip them away.

Lars Kappert

😍 Knip has continued to evolve a lot this year, and now also has a snazzy new homepage. You can also learn more about what’s new in 3.x.

Inline REPL Anywhere in Your Code — Execute context aware code snippets directly in your editor, anywhere in your project, even if your application/tests are not working.

Wallaby Team sponsor

Syntax.js: Code Syntax Highlighting Library — There are many long standing options in this area, such as Prism and highlight.js, but it’s interesting to see a fresh and lightweight take.

William Troup

ai2html: Turn Adobe Illustrator Files into HTML — We noticed this tool being used by the Financial Times to share graphs they’ve designed, and the result is really good. This project isn’t new, but we haven’t shared it before, it’s well maintained, and there are lots of examples.

The New York Times Company

aws-lite: A New Node.js-Powered AWS API Client — AWS does a good job with its APIs and tooling, but sometimes their approach is a little heavyweight. aws-lite provides a simpler, faster option. “You can think of it as a community-driven alternative to AWS’s JavaScript SDK.”

Begin

Hire Vetted Developers in US Time Zones, Fast

Revelo sponsor

Neutralinojs 4.15.0 – Cross-platform desktop app framework – lighter than Electron as it uses the locally available browser engine.

jest-image-snapshot 6.3 – Jest matcher for image comparisons.

Mongoose 8.0 – MongoDB object modelling approach.

edit-in-place 1.9 – Edit in place library for Angular apps.

Jotai 2.6 – Simple, flexible state management for React.

sql.js 1.9 – SQLite 3.44 compiled to JavaScript.

React Share 5.0 – Social media sharing buttons.

np 9.0 – A better npm publish.

pnpm 8.11 – Fast, disk space efficient package manager.

NOTABLE QUOTABLE

“As a principal engineer, I view it as my role to keep us off the bleeding edge as much as possible. That way, when we really do need to innovate, we have the capacity to do so. And when we don’t need to, we can go really freaking fast.”

___
Nicole Tietz

3 Takeaways from Web Summit 2023

Along with approximately 70,000 other souls from around the globe, the NodeSource team attended Web Summit 2023 earlier this month. Famous for being the largest European tech event (or even the world), Web Summit was full of riveting AI conversations, more than 2,600 startups, and plenty of tasty food trucks and, of course, amazing local cuisine.

On the heels of this successful event, we’d like to share our team’s biggest event takeaways as we close this year on a strong note and get ready for what 2024 has in store.

#1 Everyone has a unique take on using AI.

From session topics to conversations with our peers, AI was all the buzz at the event and we were definitely not the only ones leaning into the AI movement. Startups across all industries are injecting AI into their products and services, and many are at different points in their adoption of the technology. While there are many who are only an inch deep into AI, some are using it in more advanced and compelling ways.

For example, Riccardo Semadeni, MediRapp AG’s CEO, is transforming ultrasound diagnostics and improving global patient outcomes by automating everything from data collection to diagnosis to reporting. With AI, MediRapp is making the entire process faster, more accurate, and more effective while significantly elevating patient care. This is a great showcase of how AI can process nearly unlimited amounts of data and provide analysis that significantly increases the quality of outputs and helps make better decisions.

On the other hand, another company, Harry, is using AI in a completely different way. Simo Alami explained how they are creating AI powered resources for companies. Do you need a content writer? SEO specialist? PR manager? Other marketing talent? Harry will create a customized AI resource for your organization. This is a very interesting use of generative AI to create meaningful value for small and even large organizations by augmenting teams with AI powered by data.

These two examples showcase how innovative leaders are identifying new ways to use AI advancements to transform their industries.

#2 Collaboration paves the way for continued transformation.

Our team traveled from all over the world to attend Web Summit—Seoul, Madrid, Sao Paulo, Utah, Seattle, Medellin, Bogata, Vancouver, and Berlin. With this in-person time together, we dove deep into ways we could continue to elevate our offering and customer experience. We discussed ways to evolve our recently open-sourced N|Solid Runtime and advance our AI powered Node.js Copilot, which we released on the first day of Web Summit. This time allowed us to gather essential insights from our community who shared the common consensus that NodeSource’s ability to open-source our runtime would be transformative for development teams.

Having dedicated time to come together as a team to bond, share, and test new ideas is critical to our success and we look forward to putting these plans into motion.

#3 Our industry is full of startup founders dedicated to making an impact.

On the event’s opening day, NodeSource was one of 300 startups selected for a special event, “The Gathering.” During the day, we participated in group sessions discussing a range of topics from leadership to raising capital to AI. While these discussions were full of great insights, what was even more notable was the ability to connect with fellow founders looking to make an impact.

Web Summit was full of lively conversation about taking our industry to the next level. We chatted with startup entrepreneurs, learned from headliners with unique stories, and shared exciting updates with investors, press, and customers. We thoroughly enjoyed connecting with founders and enterprise leaders whose digital products rely on Node.js and tech builders that leverage and build with Node.

Overall, NodeSource had a wonderful time at Web Summit and even had the opportunity to visit some local sites, like visiting CasCais by way of a winding trek along the coast and then up into the hills to the westernmost point of all of Europe at Cabo Da Roca. Heading into the new year, we can’t wait to attend Web Summit 2024!

The unbearable weight of massive JavaScript

#​664 — November 23, 2023

Read on the Web

JavaScript Weekly

Time to Take the State of JavaScript 2023 — The long standing State of JavaScript survey is back for another run at figuring out what the community is up to and what tools we’re using. The results are always illuminating and we’ll share the tastiest parts once available.

Devographics

▶  The Unbearable Weight of Massive JavaScript — An extensive talk looking at what can be achieved by simplifying web architecture, chiefly by using new or upcoming Web Platform APIs and getting back to building fast, maintainable, user-friendly frontends. Slidedeck.

Ryan Townsend

Stop Building Auth, Start Building Apps with EdgeDB + Next.js — It’s hard enough to come up with an idea worth trying. See how EdgeDB and our new authentication extension makes it easy to go from idea to working application in record time using Next.js.

EdgeDB sponsor

TypeScript 5.3 Released — The latest edition of the type-enhanced JavaScript superset is here. The headline feature is full support for the import attributes proposal (as it currently stands, at stage 3 in TC39), but there are many enhancements around type narrowing, interactive inlay hints for types in editors, and more. Not the biggest update, but progress nonetheless.

Daniel Rosenwasser (Microsoft)

Vite 5.0 Released — The Vite suite of frontend tooling may have started life in the Vue.js world, but is now used by projects aplenty including SvelteKit, Remix, and Astro. v5 now uses Rollup 4, removes many deprecated features, and requires Node 18+. There’s a migration guide to help with your v4 to v5 progression.

Evan You and Contributors

IN BRIEF:

The Node.js 20.x runtime is now available on AWS Lambda.

🎁 A bumper list of dev-related tools & services running Black Friday deals.

GitHub looks at what’s new in the latest Git release: Git 2.43.

The AWS Amplify team teases ‘Gen 2’ of their fullstack app platform.

RELEASES:

⭐️ Transformers.js v2.9 – State of the art ML in JavaScript. v2.9 adds support for depth estimation, zero-shot object detection, and optical document understanding.

Redux Toolkit 2.0 rc.0, Redux 5.0 rc.0, React-Redux 9.0 rc.0 – Initial RCs with better packaging and smaller bundles. Final releases due soon.

Bun 1.0.14 – Introduces a high-perf globbing API for matching files and strings.

Rspack 0.4 including Rsbuild 0.1 – A fast Rust-based web bundler.

Node v21.2.0 (Current) and Node v20.10.0 (LTS)

Starlight 0.13.0 – Beautiful docs sites atop Astro.

📄 Articles & Tutorials

▶  4 Web Devs, 1 App Idea — Salma Alam-Naylor, Scott Tolinski, and Eve Porcello join Jason Lengstorf to kick off a fun new series where several developers all implement the same type of app, show off how they went about it, and react to each other’s approaches. Svelte, Astro, and Next.js each make an appearance.

Learn with Jason

Promises Training — Practice working with promises through a curated collection of interactive challenges. Aimed at developers with at least an intermediate understanding of promises who want to dig deeper.

Henrique Inonhe

JavaScript Error and Performance Monitoring — Track, trace, debug and resolve JavaScript errors across platforms. Are your releases that easy? Join us live.

Sentry sponsor

An Attempted Taxonomy of Web Components — A collection of open-source web components (and lessons learned from using them) that may help you on your journey in this complex, developing space.

Zach Leatherman

Using OpenAI APIs to Analyze Automated Test Failures — A look at how to develop a Nightwatch.js plugin which sends the test failure and associated errors to a service that integrates with OpenAI’s platform to analyze said errors and provide actionable feedback.

Andrei Rusu

🛠 Code & Tools

Bruno: An Open-Source HTTP API Exploration App — There are a lot of ‘API client’ tools like this, commercial and non-commercial, with varying levels of features, but this is an open source one entirely built in JavaScript with a fully-offline ethos some might appreciate. GitHub repo.

Anoop M D, Anusree P S and Contributors

debounce 2.0: Delay Function Calls Until a Set Time Elapses — If you don’t want something to run too often, debouncing is the strategy for you and this library makes it simple. v2 adds types and brings the code up to modern standards.

Sindre Sorhus et al.

Level Up Your UX With Bryntum — Empower your users with advanced widgets like data grids, calendars, schedulers, and Gantt charts.

Bryntum sponsor

H3: A Minimal HTTP Framework for Multiple JS Platforms — Aims to be as universal as possible and works across numerous platforms, including Node, while offering the basic HTTP framework features and a compatibility layer with Express middleware. v1.9 just landed.

UnJS

request-animation-frames: Use requestAnimationFrame Anywhere — The latest library from the one-man module powerhouse, Sindre Sorhus. The idea this time is to allow you to use requestAnimationFrame in any JavaScript environment. The implementation is delightfully simple.

Sindre Sorhus

Spectral.js: A More ‘Paint-Like’ Color Mixing Library — If you have two colors to transition between, just tweening the RGB values can result in some rather ugly intermediate colors. Spectral.js uses Kubelka–Munk theory which more closely matches how paints work for a visually satisfying result.

Ronald van Wijnen

‘A Node + TypeScript + ts-node + ESM Experience That Works’ — It’s just three files: package.json, tsconfig.json and a utilities file.

Khalid Zoabi

A Non-Cloud Alternative to Google Forms That Has It All

SURVEYJS sponsor

🖼 medium-zoom 1.1: A Library for Medium-Style Image Zooming — Responsive, can load a higher definition version of an image on zoom, and mouse, keyboard and gesture friendly. Now we just need a library that can cover up the bottom half of a page with junk like Medium also does now. Demo.

François Chalifour

gridstack.js 10.0 – Build interactive dashboard panels quickly.

MQTT.js 5.3 – MQTT client for Node and browser.

Piscina 4.2 – Node.js worker thread pool implementation.

(Official) MongoDB Node.js Driver 6.3

SQL Formatter 14.0 – Pretty print SQL queries.

Job Listing

Full Stack TypeScript Software Engineer – [Remote Europe]Marker.io is a visual bug-reporting tool for the web. Join our dev team and work remotely (Stack: Node.js, Vue.js & MongoDB).

Marker.io

NOTABLE QUOTABLE

“Programming isn’t about what you know; it’s about what you can figure out.”

___
Chris Pine (author of Learn to Program)

P.S. Medium is 🗑️. If you don’t want to host your own blog, try Hashnode, dev.to, Bear, or even throw Markdown at GitHub Gists – it’ll provide a better reader experience and we’ll be more likely to link to it.

Digging into explicit resource management

#​663 — November 16, 2023

Read on the Web

JavaScript Weekly

Prettier 3.1 Released — The popular opinionated code formatter has a new release including support for the new control flow syntax in Angular 17 plus a new, experimental formatting option for ternary expressions (as in x ? y : z) explained in more depth in “A curious case of the ternaries.”

Alex Rattray

🤔 With an aim to making code formatting even faster, Prettier’s co-creator has put up a $10k bounty for any Rust project that passes >95% of Prettier’s tests.

Exploring Explicit Resource Management in JS — A practical look at the idea of explicit resource management, an idea both currently at stage 3 in TC39 (and partly supported in TypeScript 5.2) that makes it easier to ‘clean up’ resources once they are no longer used or needed.

Ilia Pozdnyakov

Build Interactive, Live Video Applications with Amazon IVS — Amazon Interactive Video Service (Amazon IVS) allows developers to create dynamic video experiences, such as collaborative real-time livestreams. Check out the new ivs.rocks to find code samples, demos, and other resources. Click here to get started.

Amazon Web Services (AWS) sponsor

On HTML Web Components — “With web components, you might even say React’s component model is being ported to the browser. But it’s being done in a way that works to enhance how the web already works, not replace it”.

Jim Nielsen

A Review of Lightweight JavaScript Frameworks — This overview is targeted at Django (i.e. Python) developers but if you, too, want to avoid larger frameworks like React or Angular, you might appreciate this look at numerous alternatives from Stimulus and htmx to more oblique options like Laravel Livewire.

Michael Yin

🥳 AWS is celebrating a huge release with v6 of the AWS Amplify JavaScript library which includes full support for Next.js App Router and Server Actions.

🌎 Node.js TSC member Yagiz Nizipli is suggesting using Biome for code formatting in Node, since ESLint has deprecated its core formatting rules.

👾 The winners of React Jam, a recent React-based game development contest, have been revealed. An entry I enjoyed was useChess, a set of chess-based puzzles.

▶️ If you’ve wondered what the big deal is about Astro, James Q Quick went on the Software Engineering Daily podcast and explained Astro pretty well.

🎵 Someone’s recorded ▶️ a rap music video about TypeScript..

RELEASES:

Node.js v21.2.0 (Current)

visx 3.5 – D3-based visualization primitives for React.

fx 31.0 – Powerful terminal JSON viewer.

Astro 3.5, Ember 5.4, and Prisma 5.6.

📄 Articles & Tutorials

67 Browser-Based Debugging Tricks — A list of useful, ‘not-obvious’ hacks to get the most out of the browser’s DevTools. Assumes a reasonable existing understanding of said tools.

Alan Norbauer

Exploring V8’s Strings: Implementation and OptimizationsNote: This is very technical and most JavaScript developers do not need to go this deep. That aside, this is a fantastic look under the covers of how the V8 engine handles strings, including the optimizations used that allow it to go toe to toe with languages like C++.

Ilia Pozdnyakov

JavaScript Scratchpad for VS Code — Quokka.js is the #1 tool for exploring/testing JavaScript with edit-continue experience to see realtime execution and runtime values.

Wallaby Team sponsor

▶  An Overview of Angular 17’s New Built-In Control FlowAngular 17 was released last week and a significant enhancement was support for a new syntax in templates that looks and feels more JavaScript-y.

Dmytro Mezhenskyi

Moving Back to React (from Preact) — Preact felt like a logical, lightweight choice to this team at one time, but they’ve switched to React for better compatibility with Next.js, among other things. Their page weight is up slightly, but they feel the tradeoff is worth it.

Ante Barić (Daily․Dev)

My Journey to 3x Faster Builds: Trimming Barrel File Imports“I maintain a small frontend application (4K LOC) which uses Vite as the compiler. The production build, using npm run build, was taking 26 secs on Github Actions. It seemed awfully slow for such a small application. I decided to investigate why.”

Ramana Venkata

Can Bun Eat Node’s ‘Lunch’? — An experiment in migrating a codebase (a restaurant voting app called Lunch) from Node over to Bun and seeing how it fares.

Jeffrey Carl Faden

Feel the Power of More Than 420,000 Teammates and Work #LikeABosch

Bosch sponsor

How to Use NPM Packages Outside of Node — Learn how to run NPM packages in ‘other places’ like serverless platforms, the browser, and beyond.

George MacKerron (Neon)

What I Learned Building an Audio Plugins System for the Web

Ben Wiley

Rust for JavaScript Developers: An Overview of Testing

Joshua Mo

🛠 Code & Tools

gsplat.js: A Gaussian Splatting Library — Gaussian splatting is an increasingly popular graphics rendering techniques where rather than render millions of tiny, textured triangles in a scene, you get a more wild paintball-like splatter fest, where each paintball creates a smooth, colorful blob instead of a rigid shape. This demo is both simple and striking.

Dylan Ebert

Reveal.js 5.0: The HTML Presentation Framework — A way to build presentations using standard Web technologies. The project’s homepage is, itself, such a presentation. v5.0 adds support for ‘scroll mode’ which essentially turns presentations into more typically scrolling Web experiences – demo.

Hakim El Hattab

🖍️ Marker.io: Collect Bug Reports With Annotations & Session Replay — Collect feedback on live websites. Get dev-friendly bug reports with screenshots, URLs, console logs & session replay.

Marker.io sponsor

Datasheet Grid: An Airtable-like React Component — If you’ve got an array of objects and you want a way for users to manipulate them, this is for you. It’s not going to replace a spreadsheet or an extensive data grid framework, but it’s a mature solution featuring smooth animations, virtualized rows/columns, keyboard navigation, and more.

Nicolas Keller

Perfect Freehand: A Library for Creating Better ‘Freehand’ Lines — You can try it out here. Makes your e-signature not look like chicken scratch! Might be useful for drawing apps.

Steve Ruiz

Wild Wild Path v5: Object Property Paths with Wildcards and Regexps — A ‘wild’ way to access properties in objects (which can be deeply nested) by way of string based queries that support wildcards and regexes. The examples help communicate the idea.

ehmicky

@storybook-test: More Streamlined and Powerful Storybook Testing — @storybook/test consolidates the API of @storybook/jest and @storybook/testing-library into a new, single package, powered by Vitest.

Kasper Peulen

Marked 10.0 – Markdown parser and compiler. There’s also marked-terminal 6.1 which lets you render Marked-processed Markdown on the terminal.

HumanizeDuration.js 3.31.0 – Turn milliseconds into textual durations in numerous natural languages.

actions/github-script 7.0 – Script the GitHub API in GitHub Actions.

Plasmo v0.84.0“Like Next.js for browser extensions.”

PDFKit 0.14.0 – PDF generation for Node and browser.

React Joyride 2.7 – Create guided tours in your apps.

Job Listing

Full Stack TypeScript Software Engineer – [Remote Europe]Marker.io is a visual bug-reporting tool for the web. Join our dev team and work remotely (Stack: Node.js, Vue.js & MongoDB).

NOTABLE QUOTABLE

“When you choose a language, you’re choosing more than a set of technical trade-offs – you’re choosing a community.”

___
Joshua Bloch