---
title: "Getting some closure"
publication: "JavaScript Weekly"
issue: 656
published_at: "2023-09-28"
canonical_url: "https://javascriptweekly.com/issues/656"
---

Plus a nightmarish JavaScript puzzle, Tesseract 5.0, and even a JavaScript N64 emulator. |        

#​656 — September 28, 2023 

[Read on the Web](https://javascriptweekly.com/issues/656)  

Together with [![Frontend Masters logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_300,h_70/e_make_transparent/co_white,e_outline:5/nk0tfdvalivacz8rw7rt.png)](https://frontendmasters.com/courses/electron-v3/)  

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/o2or5d4yoqle5ghfr2tn.jpg)](https://effectivetypescript.com/2023/09/27/closure-compiler/)  

[The Saga of Google's Closure Compiler](https://effectivetypescript.com/2023/09/27/closure-compiler/) — Dan looks back at Google’s [_Closure Compiler_](https://developers.google.com/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](https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-6/) — Marvin's mission to speed up popular libraries continues. First [blogging on the topic](https://marvinh.dev/blog/speeding-up-javascript-ecosystem/) 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](https://news.ycombinator.com/item?id=37604373). 

Marvin Hagemeister   [![\](https://copm.s3.amazonaws.com/71aadf41.jpeg)](https://frontendmasters.com/courses/electron-v3/) 

[Building Cross-Platform Desktop Apps with Electron](https://frontendmasters.com/courses/electron-v3/) — 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](https://twitter.com/robpalmer2/status/1707331795124179110) earlier today and [advanced several proposals](https://twitter.com/robpalmer2/status/1707331777440919595) including [RegExp escaping](https://github.com/tc39/proposal-regex-escaping) and [resizable ArrayBuffers](https://github.com/tc39/proposal-resizablearraybuffer) (and nixed two, including [Symbol.thenable](https://github.com/tc39/proposal-symbol-thenable)).
- If possible, please [take the _State of HTML 2023_ survey.](https://survey.devographics.com/en-US/survey/state-of-html/2023) Your answers could help determine what features browsers focus on next! And if you don't believe me, [let Lea Verou convince you](https://lea.verou.me/blog/2023/state-of-html-2023/).
- [Verticalize](https://github.com/laurentpayot/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](https://preactjs.com/) team has [an update on Preact Signals](https://preactjs.com/blog/signal-boosting/), their take on reactive programming.
- Engineers from Vercel and Cloudflare have [published a draft spec](https://sockets-api.proposal.wintercg.org/) for a Sockets API for non-browser runtimes. Here's [why this all matters.](https://blog.cloudflare.com/socket-api-works-javascript-runtimes-wintercg-polyfill-connect/)
- 📱 [Strada](https://dev.37signals.com/announcing-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](https://masilotti.com/strada-launch/).
- Publishing packages [with npm provenance is now generally available](https://github.blog/changelog/2023-09-26-npm-provenance-general-availability/).
- [Cloudflare Workers](https://developers.cloudflare.com/workers/) is a popular serverless platform for running JavaScript functions at the edge and it now has [an all new pricing model](https://blog.cloudflare.com/workers-pricing-scale-to-zero/) that's certainly a lot more appealing.   

**🎉 RELEASES:** 

- [Shoelace 2.9](https://shoelace.style/) – Suite of framework agnostic components. [Changelog.](https://shoelace.style/resources/changelog#id_2_9_0)
- [Dependency Cruiser 14.0](https://github.com/sverweij/dependency-cruiser) – Visualize & validate dependencies.
- [Ember 5.3](https://blog.emberjs.com/ember-released-5-3/), [pnpm 8.8](https://github.com/pnpm/pnpm/releases/tag/v8.8.0), and [Bit 1.0](https://bit.dev/blog/announcing-bit-v10-a-beginning-of-a-new-era-in-component-driven-software-lmqh3dua/).  

📒 Articles & Tutorials  

[One Thing Nobody Explained To You About TypeScript](https://redd.one/blog/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](https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing) — 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](https://userfront.com/tutorials/react-authentication?&utm_source=javascriptweekly-com&utm_medium=newsletter&utm_campaign=sponsored_link&utm_content=react_authentication) — Userfront streamlines authentication & access control so engineers can focus on their core business. Read the docs now. 

Userfront sponsor   

[Understanding the Modulo `%` Operator](https://www.joshwcomeau.com/javascript/modulo-operator/) — Tackles the oft misunderstood operator in Josh's visual, beginner-friendly style. 

Josh W Comeau   

⏱ [Why the Temporal API is Awesome](https://taro.codes/posts/2023-08-23-temporal-api/) — It’s still a stage 3 proposal, but the [Temporal API](https://tc39.es/proposal-temporal/docs/) works around some of `Date`’s limitations without third-party libraries. 

Taro Dragan   

[Drawing on Google Maps with Drawing Manager](https://sudolabs.com/insights/react-google-maps-drawing-tools) — A particularly thorough, code-rich followup to [Integrating Google Maps in React](https://sudolabs.com/blog/integrating-google-maps-in-react). 

Pavlo Chabanenko (Sudolabs)   

[Thoughts on Svelte 5 as a 3+ Year Full-Time Svelte Dev](https://poxi.substack.com/p/my-thoughts-on-svelte-5-as-a-full) — Thoughts that lead to the proposal of [Pelte](https://pelte.dev/), an attempt to spark conversation rather than a real tool (so far). 

Filip Tangen   

[The Forecast For Your Next Database: Strongly Typed and Cloudy](https://www.edgedb.com/launch?lang=ts) 

EdgeDB sponsor   

[Building Token Based Authentication with JWTs on Fastify](https://thatarif.in/posts/token-based-authentication-with-fastify-jwt) 
Arif Imran   

[The Angular Renaissance: Why Frontend Devs Should Revisit It](https://thenewstack.io/the-angular-renaissance-why-frontend-devs-should-revisit-it/) 
Loraine Lawson (The New Stack)   

[How React Server Components Made Our Site Faster](https://frigade.com/blog/bundle-size-reduction-with-rsc-and-frigade) 
Christian Mathiesen (Frigade)   

[Replacing RxJS with a State Machine](https://www.bennadel.com/blog/4519-replacing-rxjs-with-a-state-machine-in-javascript.htm) 
Ben Nadel  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/o7brkyric9bdh0oycwgj.jpg)](https://github.com/naptha/tesseract.js)  

[Tesseract.js 5.0: JavaScript OCR for 100+ Languages](https://github.com/naptha/tesseract.js) — A port of the C++-based [Tesseract](https://github.com/tesseract-ocr/tesseract) library used to extract text from images. [v5.0](https://github.com/naptha/tesseract.js/releases/tag/v5.0.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.](https://github.com/naptha/tesseract.js) 

Tesseract Team   

[ChatGPT.js: A Library for Working with ChatGPT via the DOM](https://chatgpt.js.org/#/) — 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](https://www.grapecity.com/javascript-solutions?utm_source=CooperPress&utm_medium=JavaScript-Weekly&utm_campaign=JS-Tools-JS-Weekly-Sponsored-Link-9-23) — 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](https://instant.dev/) — 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](https://github.com/runk/node-chardet) — It uses statistical methods to determine the most likely encoding of a supplied buffer, string, or file, from a selection of [about 30.](https://github.com/runk/node-chardet#supported-encodings) 

Dmitry Shirokov   

👾 [n64js: A Nintendo 64 Emulator in JavaScript](https://github.com/hulkholden/n64js) — There’s a [Web-based version](https://hulkholden.github.io/n64js/) to try (if you have the right files) or just [▶️ watch a video.](https://www.youtube.com/watch?v=cIMGaOHLgzk) 

Paul Holden   

- 🗓 [React Chrono 2.3](https://react-chrono.prabhumurthy.com/) – Timeline component. Some[examples.](https://5f985eb478dcb00022cfd60e-hqwgomhkqw.chromatic.com/?path=/story/example-horizontal--horizontal-timeline)
- [ip-address 9.0](https://github.com/beaugunderson/ip-address) – Parse & manipulate IPv4/6 addresses.
- [Sonner 1.0](https://sonner.emilkowal.ski/) – Toast notifications React component.
- [Jazzer.js 2.0](https://github.com/CodeIntelligenceTesting/jazzer.js) – In-process fuzzing for Node.js.
- [JZZ 1.7](https://github.com/jazz-soft/JZZ) – MIDI library for Node and browsers.
- [Preact 10.18.0](https://github.com/preactjs/preact/releases/tag/10.18.0)
- [esbuild 0.19.4](https://github.com/evanw/esbuild/releases/tag/v0.19.4)    

💻 Jobs  

[Frontend Developer 🚀 (Remote, Work from Anywhere 🏖️)](https://crystallize.com/careers/frontend-developer) — 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](https://feather-insurance.com/careers/full-stack-engineer?channel_id=921909) — 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](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-javascriptweekly%29&utm_content=find-your-next-job) — 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? 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/yfgeqmczph7zecsj9wqp.jpg)](https://js-crush.vercel.app/)  

[JS Crush: Match Values That Are Equal in JS](https://js-crush.vercel.app/) — 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](https://www.youtube.com/watch?v=U6s2pdxebSo) 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.         

Published by [Cooperpress](https://cooperpress.com/) and edited by [Peter Cooper](https://twitter.com/cooperx86) 

'JavaScript' is a trademark of Oracle Corporation in the US
We are not endorsed by or affiliated with Oracle. 

[Change your email address](https://javascriptweekly.com/edit_subscription/*|UID|*) or [stop getting this newsletter](https://javascriptweekly.com/leave/*|UID|*). 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
