---
title: "The return of ECMAScript 2023 (and Angular)"
publication: "JavaScript Weekly"
issue: 634
published_at: "2023-04-13"
canonical_url: "https://javascriptweekly.com/issues/634"
---

Plus the weirdest way to define a range, a way to test your == knowledge, and Node's new test runner. |        

#​634 — April 13, 2023 

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

Together with [![Imagekit\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_290,h_100/e_make_transparent/co_white,e_outline:7/srf0buoihyfdsnjkebof.png)](https://imagekit.io/blog/aws-s3-video-streaming-imagekit-video-api/?utm_source=Cooperpress+&utm_medium=email&utm_campaign=JavaScriptWeekly_Newsletter&utm_term=aws-s3)  

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fbcblmd7d5qxno7hqc9o.jpg)](https://eqeq.js.org/)  

[The JavaScript Equality Table Game](https://eqeq.js.org/) — _Minesweeper_ will feel like a walk in the park after this reminder of the horrors of JavaScript’s `==`. If you need to go in depth, [Section 7.2.14](https://262.ecma-international.org/9.0/#sec-abstract-equality-comparison) of the ECMAScript spec will help, but otherwise? Stick to three equals (`===`) unless you have a good reason not to. 

Reinis Ivanovs   

[htmx 1.9 Released](https://htmx.org/posts/2023-04-11-htmx-1-9-0-is-released/) — htmx ([homepage](https://htmx.org/)) is an increasingly popular library _outside_ of the JavaScript space as it lets folks use things like WebSockets, SSE, AJAX, and CSS transitions by marking up HTML rather than writing lots of JavaScript. v1.9 adds support for view transitions and generalized inline event handling. [The code examples](https://htmx.org/examples/) are worth a look – htmx makes a lot possible, with rather little tooling or markup needed. 

htmx team   [![\](https://copm.s3.amazonaws.com/de9e7382.jpg)](https://imagekit.io/blog/aws-s3-video-streaming-imagekit-video-api/?utm_source=Cooperpress+&utm_medium=email&utm_campaign=JavaScriptWeekly_Newsletter&utm_term=aws-s3) 

[Supercharge AWS S3 Video Streaming with ImageKit's Video API](https://imagekit.io/blog/aws-s3-video-streaming-imagekit-video-api/?utm_source=Cooperpress+&utm_medium=email&utm_campaign=JavaScriptWeekly_Newsletter&utm_term=aws-s3) — Get adaptive bitrate streaming, video optimizations, format conversions, and real-time transformations and watermarking by attaching ImageKit with your AWS S3 bucket. 

ImageKit sponsor   

[The ECMAScript® 2023 Language Spec Steps Forward](https://tc39.es/ecma262/2023/) — After prematurely announcing the progression of the ES2023 spec in February, we can now announce: TC39 has approved the ECMAScript 2023 spec, and while it remains a candidate, it’s now a step closer to eventual ECMA General Assembly approval. The [finished proposals list](https://github.com/tc39/proposals/blob/main/finished-proposals.md) for 2023 now includes [Array find from last](https://github.com/tc39/proposal-array-find-from-last), [hashbang support](https://github.com/tc39/proposal-hashbang), [Symbols as WeakMap keys](https://github.com/tc39/proposal-symbols-as-weakmap-keys), and [change Array by copy](https://github.com/tc39/proposal-change-array-by-copy). 

ECMA International   

**IN BRIEF:** 

- [▶️ Angular is back with a vengeance](https://www.youtube.com/watch?v=nQ2A30cD3Q8), says Fireship.
- Serverless platform AWS Lambda has [introduced response streaming](https://aws.amazon.com/blogs/compute/introducing-aws-lambda-response-streaming/) on its JS runtime (for now) so you can send response data as it becomes available rather than all at once. (→ _[Via Serverless Status](https://serverless.email/issues/282)_)
- **/[]/** A look at a seemingly JS-specific quirk in regular expressions [when empty character classes are used](https://www.abareplace.com/blog/emptybrackets/).
- [An analysis of languages used in GitHub pull requests](https://lemire.me/blog/2023/04/07/programming-language-popularity-by-github-pull-requests/) shows JavaScript/TypeScript leading the way with Python just slightly behind. The comments went in lots of odd directions here.
- Seven folks at _Vue Amsterdam 2023_ shared their [▶️ tips on getting started with Vue.js](https://www.youtube.com/watch?v=RUdKQKRBkhk).
- [▶️ An hour-long chat on the State of Node.js](https://www.youtube.com/watch?v=Yl5mVte-wdw) with some leading figures.
- [Node v18.16.0 (LTS)](https://nodejs.org/en/blog/release/v18.16.0) has been released with backported support for compiling JavaScript code into a single executable app. Node 19's _Ada_ URL parser also appears.
- A [striking visual introduction to React](https://react.gg/visualized) and its fundamental concepts.   

**RELEASES:** 

- [Node.js v19.9 (Current)](https://nodejs.org/en/blog/release/v19.9.0)
- [Puppeteer v19.9](https://github.com/puppeteer/puppeteer) – It's the week for almost 20s.
- [pnpm 8.2](https://github.com/pnpm/pnpm/releases/tag/v8.2.0) – Efficient `npm` alternative.
- [Redwood 4.5](https://github.com/redwoodjs/redwood/releases/tag/v4.5.0) – Popular app framework.
- [Storybook 7.0](https://storybook.js.org/blog/storybook-7-0/) – With an official release post this time.  

📒 Articles & Tutorials 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/tjvbi88xq73nfr20yx3d.jpg)](https://dev.to/jonrandy/ranger-js-range-syntax-for-anything-4djc)  

[Ranger: Use a Range-Like Syntax for Anything?](https://dev.to/jonrandy/ranger-js-range-syntax-for-anything-4djc) — `const numbers = 1[[...8]]`, anyone? This is a neat trick for a bit of syntatic sugar, but I’m not sure it would pass the sniff test for most teams. You might find [the implementation](https://github.com/jonrandy/js-ranger/blob/master/ranger.js) interesting to check out though. Long may this sort of experimentation continue. 

Jon Randy   

💡 A proposal for JavaScript to get [built-in range support](https://github.com/tc39/proposal-iterator.range) is at stage 2.  

📅 [Build and Deploy ‘23: May 3rd - Save the Date!](https://codefresh.io/build-and-deploy/?utm_source=javascript_weekly&utm_medium=paid_display&utm_campaign=build_deploy_23) — The ultimate CI/CD virtual conference - best practices and end-user success stories from DevOps experts. Plus, a keynote from Emily Freeman, author of _DevOps for Dummies_. 

Codefresh sponsor   

[Trying Node's Built-In Test Runner](https://glebbahmutov.com/blog/trying-node-test-runner/) — In 2022, Node gained an experimental built-in test runner (`node:test`). It’s [going to become stable](https://github.com/nodejs/node/issues/46642) in the forthcoming Node v20, so it’s a good time to look at how it works and how it compares to other solutions you might already be using. 

Gleb Bahmutov   

▶[The Right Way To Merge JavaScript Objects](https://www.youtube.com/watch?v=TmhvqvjK5nM) — In just one minute, too. 
Jack Herrington   

[Ref vs. Reactive: What to Choose When Using Vue 3 Composition API?](https://mokkapps.de/blog/ref-vs-reactive-what-to-choose-using-vue-3-composition-api/) 
Michael Hoffmann   

[How to Stream File Uploads to S3 Object Storage from Node.js](https://austingil.com/upload-to-s3/) 
Austin Gil   

[How to Contribute to a Project You Have No Idea About](https://grifel.dev/how-to-contribute-without-knowledge) 
Michal Warda  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ohnflgc9s0fbymuf4ji1.jpg)](https://revealjs.com/)  

[Reveal.js 4.5: An HTML Presentation Framework](https://revealjs.com/) — Brings elegant presentations to anyone with a Web browser. [v4.5](https://github.com/hakimel/reveal.js/releases/tag/4.5.0) was just released with support for jumping to specific slides, a few new themes, and with live reload working with files in subfolders. 

Hakim El Hattab   

[List.js: Add Search, Sort, Filters, and More to Tables and Lists](https://listjs.com/) — A handy library for adding search, sort, filters and flexibility to tables, lists or other HTML elements. Want an example? [Why,](https://listjs.com/examples/existing-list/) [of](https://listjs.com/examples/fuzzy-search/) [course.](https://listjs.com/examples/add-get-remove/) 

Jonny Strömberg   

[🦘Quokka.js - #1 JavaScript Scratchpad for VS Code](https://quokkajs.com/?utm_source=cooperpress&utm_medium=javascriptweekly&utm_content=javascriptweekly) — With 2M+ downloads, Quokka.js is the #1 tool for exploring and testing JavaScript/TypeScript. Code runs immediately as you type. 

Wallaby.js sponsor   

[Queue: Async Function Queue with Adjustable Concurrency](https://github.com/jessetane/queue) — Exports a class Queue that implements most of the Array API. 

Jesse Tane   

[Yet Another React Lightbox](https://yet-another-react-lightbox.com/) — Add a lightbox component to your projects “in minutes” – there are [several examples to try](https://yet-another-react-lightbox.com/examples), as well as a [playground with adjustable settings.](https://yet-another-react-lightbox.com/examples/playground) [GitHub repo.](https://github.com/igordanchenko/yet-another-react-lightbox) 

Igor Danchenko   

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dbwc6wojhzbuwc4jrbqj.jpg)](https://sandpack.codesandbox.io/)  

[Sandpack 2.6: Component Toolkit for Creating Live Code Editing Experiences](https://sandpack.codesandbox.io/) — Created by the folks at CodeSandbox, so they surely know what they’re doing in this space. [GitHub repo.](https://github.com/codesandbox/sandpack) 

CodeSandbox   

[Easy to Use, Full-Stack Application Monitoring](https://ter.li/zdj2m8) 

TelemetryHub sponsor   

[TS Writer: A Template String Template Engine for Generating Code at Runtime](https://tinylibs.js.org/packages/ts-writer/) — Rather niche, but aimed at situations where you might need to generate code at runtime in TypeScript. 

tinylibs   

- [Minimatch 9.0](https://github.com/isaacs/minimatch)
 ↳ Glob matcher library.
 `minimatch("bar.foo", "*.foo")`
- [hls.js 1.4](https://github.com/video-dev/hls.js/releases/tag/v1.4.0)
 ↳ Play HLS in browsers with support for MSE.
- [Partytown 0.8](https://github.com/BuilderIO/partytown)
 ↳ Relocate third-party scripts off the main thread.
- [Plasmo 0.68](https://github.com/PlasmoHQ/plasmo)
 ↳ _"It's like Next.js for browser extensions"_
- [Obsidian 8.0](https://github.com/open-source-labs/obsidian) – GraphQL, built for Deno.
- [MUI X 6.1](https://github.com/mui/mui-x/releases/tag/v6.1.0) – React component suite.
- [TestCafe 2.5](https://github.com/DevExpress/testcafe) – Automate end-to-end web testing.
- [Maquette 3.6](https://maquettejs.org/) – Lightweight virtual DOM library.
- [Venom 5.0](https://github.com/orkestral/venom) – WhatsApp bot library.     

💻 Jobs  

[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=easy-job-hunting) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired   

[Full Stack JavaScript Engineer @ Emerging Cybersecurity Startup](https://defendify.breezy.hr/p/b07e57b21e02-saas-software-engineer) — Small team/big results. Fun + flexible + always interesting. Come build our award-winning, all-in-one cybersecurity platform. 
Defendify   

🧑‍💻 Got a job listing to share? _[Here's how](https://booking.cooperpress.com/jobs)_.          

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
