#656 — September 28, 2023
JavaScript Weekly
The Saga of Google’s Closure Compiler — Dan looks back at Google’s Closure Compiler, a JavaScript transpiler Google built in 2004 and used most heavily in the pre-TypeScript era to reduce the size of JavaScript files, check types, and otherwise handle common pitfalls. A neat bit of JavaScript history.
Dan Vanderkam
Speeding up the JavaScript Ecosystem: Polyfills Gone Rogue — Marvin’s mission to speed up popular libraries continues. First blogging on the topic last year, now he’s looking at the role polyfills play in making packages large and inefficient. There are two sides to every story, though, as this Hacker News thread found.
Marvin Hagemeister
Building Cross-Platform Desktop Apps with Electron — In this detailed video course Steve Kinney shares how to build robust, user-friendly Electron-based desktop apps, covering key concepts like main and renderer processes, inter-process communication, security, and more.
Frontend Masters sponsor
⚡️ IN BRIEF:
🐦 TC39 met earlier today and advanced several proposals including RegExp escaping and resizable ArrayBuffers (and nixed two, including Symbol.thenable).
If possible, please take the State of HTML 2023 survey. Your answers could help determine what features browsers focus on next! And if you don’t believe me, let Lea Verou convince you.
Verticalize introduces a vertical pipe-like function to JavaScript to help you chain operations together in a more visually appealing way, but.. it’s certainly a matter of taste.
The Preact team has an update on Preact Signals, their take on reactive programming.
Engineers from Vercel and Cloudflare have published a draft spec for a Sockets API for non-browser runtimes. Here’s why this all matters.
📱 Strada is a new library from 37signals that bridges the gap between server-rendered HTML and native controls in hybrid mobile apps. Here’s how it looks in practice.
Publishing packages with npm provenance is now generally available.
Cloudflare Workers is a popular serverless platform for running JavaScript functions at the edge and it now has an all new pricing model that’s certainly a lot more appealing.
🎉 RELEASES:
Shoelace 2.9 – Suite of framework agnostic components. Changelog.
Dependency Cruiser 14.0 – Visualize & validate dependencies.
Ember 5.3, pnpm 8.8, and Bit 1.0.
📒 Articles & Tutorials
One Thing Nobody Explained To You About TypeScript — The author makes a strong case for creating a separate tsconfig.json for each environment your code runs in: “Today, I write about one thing about configuring TypeScript that took me years to realize. I’m sure you’re making the same mistake as I did.”
Artem Zakharchenko
Upgrading Frontend Dependencies with Confidence — Writing tests for logic in our apps is easy, but how can you determine if a component isn’t rendering properly? Visual regression testing. Here’s a workflow based on GitHub Actions, Playwright, and Argos.
Sébastien Lorber
React Authentication — Without Complexity — Userfront streamlines authentication & access control so engineers can focus on their core business. Read the docs now.
Userfront sponsor
Understanding the Modulo % Operator — Tackles the oft misunderstood operator in Josh’s visual, beginner-friendly style.
Josh W Comeau
⏱ Why the Temporal API is Awesome — It’s still a stage 3 proposal, but the Temporal API works around some of Date’s limitations without third-party libraries.
Taro Dragan
Drawing on Google Maps with Drawing Manager — A particularly thorough, code-rich followup to Integrating Google Maps in React.
Pavlo Chabanenko (Sudolabs)
Thoughts on Svelte 5 as a 3+ Year Full-Time Svelte Dev — Thoughts that lead to the proposal of Pelte, an attempt to spark conversation rather than a real tool (so far).
Filip Tangen
The Forecast For Your Next Database: Strongly Typed and Cloudy
EdgeDB sponsor
Building Token Based Authentication with JWTs on Fastify
Arif Imran
The Angular Renaissance: Why Frontend Devs Should Revisit It
Loraine Lawson (The New Stack)
How React Server Components Made Our Site Faster
Christian Mathiesen (Frigade)
Replacing RxJS with a State Machine
Ben Nadel
🛠 Code & Tools
Tesseract.js 5.0: JavaScript OCR for 100+ Languages — A port of the C++-based Tesseract library used to extract text from images. v5.0 is a big deal as there are huge file size reductions resulting in a 50% decrease in runtime size, a similar reduction in memory use, and iOS 17 compatiblity. GitHub repo.
Tesseract Team
ChatGPT.js: A Library for Working with ChatGPT via the DOM — Includes a fairly extensive API that lets you interact with ChatGPT for use in Chrome extensions, Tampermonkey scripts, and so on.
KudoAI
Industry-Leading JavaScript Components for the Web — Build your apps with powerful JavaScript developer tools including reporting solutions, spreadsheets, and UI components.
GrapeCity sponsor
Instant.dev: A New Postgres-Focused ORM for JavaScript — Aims to introduce a more Ruby on Rails/Active Record-style experience to the increasingly rich JavaScript ORM ecosystem.
instant․dev
Chardet 2.0: Character Encoding Detection Library — It uses statistical methods to determine the most likely encoding of a supplied buffer, string, or file, from a selection of about 30.
Dmitry Shirokov
👾 n64js: A Nintendo 64 Emulator in JavaScript — There’s a Web-based version to try (if you have the right files) or just ▶️ watch a video.
Paul Holden
🗓 React Chrono 2.3 – Timeline component. Some examples.
ip-address 9.0 – Parse & manipulate IPv4/6 addresses.
Sonner 1.0 – Toast notifications React component.
Jazzer.js 2.0 – In-process fuzzing for Node.js.
JZZ 1.7 – MIDI library for Node and browsers.
💻 Jobs
Frontend Developer 🚀 (Remote, Work from Anywhere 🏖️) — Enjoy TypeScript, React, GraphQL and performance? Join in building our super-fast headless commerce service with a beautiful UI.
Crystallize
Full-Stack Engineer, Remote in EU or Berlin — Join our small team to build an insurance product that people love. We use React, TypeScript, Prisma, NestJS and more.
Feather
Find JavaScript Jobs with Hired — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.
Hired
🕹 The hardest JavaScript game ever?
JS Crush: Match Values That Are Equal in JS — The author’s comment that this is “a game that mocks JS equality quirks, the most absurd feature of the language” should put you in the right frame of mind for giving this Candy Crush-inspired casual game a go!
Herrington Darkholme
P.S. I’m encountering folks who haven’t heard about the ▶️ TypeScript Origins documentary we featured last week, so I wanted to mention it again in case you have the time spare. I enjoyed it and learned a lot too.