#546 — July 9, 2021
JavaScript Weekly
The State of Web Workers in 2021 — The web is typically single-threaded, but two years ago Surma told us why to always use Web Workers to bring multithreading to your solutions despite the difficulties. Almost every client supports them now, so Surma makes the case again and explains why Web Workers deserve a place in your projects.
Surma
How export default thing is Different to export { thing as default } — When someone like Jake ends up having to chat to the V8 team to figure something out and then learns something, it’s worth following along. Off down the export rabbit hole we go…
Jake Archibald
Uptime Monitoring Is Now Available in AppSignal — Uptime monitoring is the first line of defense against downtime. Ping your apps every minute from 4 locations around the world and receive alerts when something is down. Now you’ll know about downtime before your users do.
AppSignal sponsor
npm audit: Broken by Design — “The way npm audit works is broken. Its rollout as a default after every npm install was rushed, inconsiderate, and inadequate for the front-end tooling.” Dan adopts an untypically critical tone but does a good job of demonstrating how vulnerabilities are not all alike when it comes to whether they matter.
Dan Abramov
A Look at Building with Astro — Astro, which we featured a month ago, is a new framework for building sites where you get to use JavaScript frameworks but sites are rendered in static form.
Chris Coyier
Elementary: React-Inspired Functional, Declarative Audio Applications — Can writing audio DSP software be “simple, fast and fun”? Not up until now, but Elementary intends to change all that, and thus lowering the barriers to entry for this burgeoning field.
Nick Thompson
Quick Bits
How about a two-player self hosted Tic-tac-toe game in 640 bytes of JavaScript?
When I see someone flashing an ESP32 microcontroller from the browser, it reminds me just how far JavaScript and browsers have come.
Did you know you can run scripts (written in JavaScript) on a schedule on your Google Sheets spreadsheets? Here’s a Twitter thread explaining how.
Releases
Highlight.js 11.1 — Web syntax highlighter library.
Gatsby 3.9 — React ‘dynamic site generator.’
zx 2.0 — Better scripting with Node.js.
Snowpack 3.8 — Module driven frontend build tool.
ckeditor 29.0 — Rich text editor framework.
Rollup 2.53.0 — Next-generation ES module bundler.
TIFF 5.0 — TIFF image decoder written entirely in JS.
💻 Jobs
Now Hiring: Work with the Best, Building the Best — The sharpest developers, building the fastest websites. Looking for more, to build more. Join us.
Econify
Senior Backend Engineer (Berlin / Remote) — Honest, simple insurance. Modern TypeScript stack. Join our small team, take ownership and push your ideas.
Feather
Find a Job Through Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It’s free for job-seekers.
Hired
📖 Articles, Opinions & Tutorials
TypeScript and Native ESM on Node.js — This topic comes up time and time again, and for good reason – it’s the way things are headed. Dr. Axel covers the essentials you need to know in order to use and produce native ECMAScript/ES modules on Node when using TypeScript.
Dr. Axel Rauschmayer
How to Use Promise.all() — Handle multiple promises at once, in parallel, and then get the result in a single aggregate array.
Dmitri Pavlutin
Ultimate Guide to Building a UI Library: Building Robust Components — TJ VanToll shares what he’s learned from over a decade of writing and working with UI components. Go to the blog series.
Progress KendoReact sponsor
When a Click is Not Just a Click — There are nuances to consider when listening for a click event (such as a ‘click’ sent from a keyboard versus one from a mouse). This post dives into how you can distinguish different types, and what opportunities arise from identifying them.
Travis Almand
▶ Using Deno Deploy to Release Super Fast Cloud Functions — Jack promises a look into the “potential JavaScript future” by building a chat app using Deno (a Node-a-like built by Node’s original author, no less) and deploying it on the Deno Deploy platform. This is easy to understand and follow along with, and the approach taken feels so natural.
Jack Herrington
Breaking Down Bulky Builds with Netlify and Next.js — Using Next.js’ Incremental Static Regeneration (ISR) coupled with on-demand builders and Netlify’s Next on Netlify build plugins to create a site that builds certain routes only when needed, cutting the build time down dramatically.
Átila Fassina
The Ultimate Guide to Cardinality for Observability
Lightstep sponsor
How to Structure a Large Scale Vue.js App
Daniel Kelly
What Is WebAssembly — and Why Are You Hearing So Much About It?
Mary Branscombe
🛠 Code & Tools
html2canvas 1.0: A JavaScript HTML Renderer — Take screenshots of pages or elements of pages and render them to canvas. There’s a live demo to the bottom right of the homepage. GitHub repo.
Niklas von Hertzen
pdfmake: Client/Server Side PDF Generation in Pure JavaScript — There’s a live playground of it in action, plus lots of code examples of how to use it to various ends. Built on top of pdfkit.
Bartek Pampuch
Fuzzball: Fuzzy String Matching Library — To tackle those cases where what’s typed isn’t quite what’s indexed. There’s a neat tree-themed Web-based demo. GPL licensed.
Nolan
Understanding and Preventing Common Security Vulnerabilities — Join Buildkite on a tour of some of the most common security problems companies face, and how you can prevent them.
Buildkite sponsor
Mantine 2.0: Full Featured React Component Library — An MIT licensed, TypeScript-based collection of over 100 components and hooks with native dark theme support and a focus on usability and accessibility. Plenty of documentation and examples.
Mantine Team
imask.js: A Vanilla JavaScript Input Mask — Rather than validate the syntax of input fields, how about preventing users from even entering invalid values?
imaskjs
TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript — A type builder library that creates in-memory JSON Schema objects that can be statically resolved to TypeScript types.
Haydn Paterson
fzstd: High Performance Zstandard Decompression in a Pure JS Package
Arjun Barrett
Johnny Five 2.1: A JavaScript Robotics and IoT Programming Framework
Rick Waldron
Vue 3 Starter: An Opinionated Starter Template for Vue.js Projects
Gentrit Abazi