---
title: "Douglas Crockford calls JavaScript 'smelly.'"
publication: "JavaScript Weekly"
issue: 642
published_at: "2023-06-08"
canonical_url: "https://javascriptweekly.com/issues/642"
---

Plus TypeScript 5.1, using JSX with jQuery, better regex docs, and backtick dangers. |        

#​642 — June 8, 2023 

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

Together with [![Courier logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_280,h_50/e_make_transparent/co_white,e_outline:7/clkuuoftwiz8z2xjnkhb.png)](https://www.courier.com/blog/how-to-send-password-resets-via-sms-and-email-using-node-js-and-next-js/?utm_campaign=q2-fy23-cooper-press&utm_source=email&utm_medium=javascript-weekly-06-08&utm_content=next-js-send-sms-blog)  

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/do3o9j52bszeqpbha2jp.jpg)](https://github.com/evanw/polywasm)  

[Polywasm: A Polyfill to Run WASM in JS Environments](https://github.com/evanw/polywasm) — The creator of [esbuild](https://esbuild.github.io/) is back with something fresh: a polyfill that uses live translation to be able to run `.wasm` files in JS environments that either lack a WebAssembly implementation or [have it disabled](https://github.com/evanw/polywasm#why-does-this-exist). You can see how it performs in [this special version of the esbuild playground](https://esbuild.github.io/try/?polywasm=1). 

Evan Wallace   

[Announcing TypeScript 5.1](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/) — This release of the statically typed JavaScript superset is a gentle 'quality of life' step forward rather than a featureful extravaganza, but we get support for linked editing of JSX tag names, namespaced JSX attributes, the ability to have unrelated types for getters and setters, and `undefined`-returning functions no longer need an explicit `return`. 

Daniel Rosenwasser (Microsoft)   [![\](https://copm.s3.amazonaws.com/e26a6a88.png)](https://www.courier.com/blog/how-to-send-password-resets-via-sms-and-email-using-node-js-and-next-js/?utm_campaign=q2-fy23-cooper-press&utm_source=email&utm_medium=javascript-weekly-06-08&utm_content=next-js-send-sms-blog) 

[How to Send Password Resets via SMS and Email Using Node.js & Next.js](https://www.courier.com/blog/how-to-send-password-resets-via-sms-and-email-using-node-js-and-next-js/?utm_campaign=q2-fy23-cooper-press&utm_source=email&utm_medium=javascript-weekly-06-08&utm_content=next-js-send-sms-blog) — When you’re building a web application, there’s a decision to make about how to handle users and authentication. There are many services and libraries to choose from, and the right choice will depend on the requirements of what you are building. 

Courier.com sponsor   

[NakedJSX: Use JSX _Without_ React](https://nakedjsx.org/) — If you like JSX and would like to use it to help in the production of static HTML _without_ using React itself, this command line tool is for you. It even extracts scoped CSS classes and deduplicates them. 

David Hogan   

Oh, you can also use NakedJSX to [use JSX with jQuery](https://nakedjsx.org/documentation/cookbook/jquery/), which you may either find useful _or_ a fun way to troll your team, depending on how you roll. 😏  

[Dan Abramov Rebuilds React Server Components from Scratch](https://github.com/reactwg/server-components/discussions/5) — Having faced a raft of questions about Server Components, Dan has begun to write a series covering everything from the ground up by _reimplementing_ a basic form of RSC from scratch. It’s not aimed at day-to-day React developers, but those who want to grok the ideas behind RSCs. 

Dan Abramov   

**⚡️ IN BRIEF:** 

- ⭐️ Douglas Crockford, of _JS: The Good Parts_ fame, [▶️ is back pointing out](https://www.youtube.com/watch?v=lc5Np9OqDHU) JavaScript is a 'smelly' language and 'it's time for the next thing.' 😬
- MDN's reference pages on regular expressions in JavaScript [have been substantially improved](https://developer.mozilla.org/en-US/blog/regular-expressions-reference-updates/).
- From Apple's WWDC this week comes [▶️ a handy presentation on Safari's DevTools](https://developer.apple.com/videos/play/wwdc2023/10262), plus a [barrage of news about Safari enhancements](https://webkit.org/blog/14205/news-from-wwdc23-webkit-features-in-safari-17-beta/) around the 'spatial web', JPEG XL support, the popover API, offscreen canvas support, local storage policies, extra JS regex features, and more.
- Emma Twersky shares [everything Angular related](https://blog.angular.io/angular-at-google-i-o-2023-ed800269070e) from the recent Google I/O 2023 event.
- 📘 Faraz K. Kelhini's [_Text Processing with JavaScript_](https://pragprog.com/titles/fkjavascript/text-processing-with-javascript/) is a new book, currently in beta with a final release due in August from _Pragmatic Bookshelf._ The table of contents shows it to be [packed with useful stuff.](https://pragprog.com/titles/fkjavascript/text-processing-with-javascript/#extracts)   

**RELEASES:** 

- [Tesseract.js 4.1](https://github.com/naptha/tesseract.js) – Pure JavaScript OCR.
- [BlockNote 0.8](https://github.com/TypeCellOS/BlockNote/releases/tag/v0.8.0) – 'Notion-style' block-based editor.
- [Redwood 5.3](https://github.com/redwoodjs/redwood) – React + GraphQL full stack framework.
- [TensorFlow.js 4.7](https://github.com/tensorflow/tfjs) – ML in the browser.
- [Madge 6.1](https://github.com/pahen/madge) – Create graphs of module dependencies.  

📒 Articles & Tutorials  

[Why (and How) You Should Write Your WebAssembly in TypeScript](https://www.zksecurity.xyz/blog/posts/wasmati/) — Performance is the main argument made by the author who shows off [Wasmati](https://github.com/zksecurity/wasmati), a library for creating WebAssembly modules by writing TypeScript using an API that corresponds to WASM operations. It works in modern browsers, Node, and Deno. 

Gregor Mitscha-Baude   

[Backtick Strings are Likely the Wrong Tool for Your Job](https://spin.atomicobject.com/2023/06/05/javascript-backtick-strings-wrong/) — It’s too common to try to put together query strings using JavaScript’s template strings, says Mattie, and this leads to potential injection problems. Luckily, there’s an alternative way.. 

Mattie Behrens   

[Dynaboard: AI Meets Low-Code to Get More Done, Faster](https://dynaboard.com/?utm_source=cooperpress-jw&utm_medium=email&utm_campaign=ai-q22023) — Build high performance authenticated web applications in a collaborative — full-stack — development environment. 

Dynaboard sponsor   

[Is React Having an 'Angular.js Moment'?](https://marmelab.com/blog/2023/06/05/react-angularjs-moment.html) — The author puts forward an argument comparing the discontinuity from AngularJS to Angular 2 in 2014 with current shifts in the React ecosystem. 

François Zaninotto   

[Painless WebGPU Programming with taichi.js](https://betterprogramming.pub/painless-webgpu-programming-with-taichi-js-afa43c7adb2e) — [taichi.js](https://github.com/AmesingFlank/taichi.js) is a GPU computing framework that transforms JavaScript functions into parallelizable WebGPU compute shaders. You can see [a live demo here](https://taichi-js.com/playground/game-of-life) using the _Game of Life._ 

Dunfan Lu   

[A Preview of Web Apps on macOS Sonoma 14 Beta](https://blog.tomayac.com/2023/06/07/web-apps-on-macos-sonoma-14-beta/) — The next version of macOS will double down on the idea of well integrated, desktop-installable webapps. Here’s a dig around into how it works so far. 

Thomas Steiner   

[Live Streaming with Multiple Hosts in a Browser with Amazon IVS](https://dev.to/aws/live-streaming-with-multiple-hosts-via-a-browser-with-amazon-ivs-c8l) 

Amazon Web Services (AWS) sponsor   

[The Many Ways to Select the n-th Character from a String](https://christianheilmann.com/2023/06/02/the-many-ways-to-select-the-n-th-character-from-a-string/) 
Christian Heilmann   

[Primitive Objects in JavaScript: When To Use Them](https://www.smashingmagazine.com/2023/06/primitive-objects-javascript-part-2/) 
Kirill Myshkin   

[A Quick Primer on Node.js's New Built-in Test Runner](https://blog.endpts.io/primer-on-the-built-in-node-js-test-runner) 
endpts  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/seqoo1jehqdjfq23kqmh.jpg)](https://github.com/algolia/autocomplete#readme)  

[Algolia AutoComplete: A Fast, Full-Featured Autocomplete Library](https://github.com/algolia/autocomplete#readme) — This isn’t a UI widget – you’re in full control of rendering the experience – but this will let you wire up the experience you want users to have. There’s a [getting started tutorial](https://www.algolia.com/doc/ui-libraries/autocomplete/introduction/getting-started/) and a [CodeSandbox demo](https://codesandbox.io/s/github/algolia/autocomplete/tree/next/examples/playground?file=/app.tsx) where you can play around with some live code. 

Algolia   

[Perfectionist 1.0: ESLint Plugin for Sorting Data](https://github.com/azat-io/eslint-plugin-perfectionist) — It supports sorting all sorts of things (props, imports, types..) and enforcing that with ESLint. It supports alphabetical and natural sorting, as well as by _line length_ which leads to [a neat aesthetic..](https://raw.githubusercontent.com/azat-io/eslint-plugin-perfectionist/main/docs/public/example.png) 

Azat S.   

[Comprehensive Full-Stack Application Monitoring Solution](https://ter.li/09t5i7) — A flexible application monitoring tool that doesn’t break the bank. 

TelemetryHub sponsor   

[pgsql-ast-parser 11.1: A Simple SQL Parser](https://github.com/oguimbal/pgsql-ast-parser) — A TypeScript-based Postgres SQL syntax parser that can produce a typed AST for most queries (PL/pgSQL is not supported). It’s used as part of the author’s [pg-mem project](https://github.com/oguimbal/pg-mem) which provides a mini, ‘in memory’ Postgres clone in Node or the browser (here's [a live demo of that](https://oguimbal.github.io/pg-mem-playground/)). 

Olivier Guimbal   

[Goxygen 0.4: Quickly Generate a Go(lang) Backend for a JS Project](https://github.com/Shpota/goxygen) — A tool that sets up a new Go-based project with Angular, React, or Vue in the front-end, and Docker and Docker Compose files to spin it up. It’s been around a few years, but has now added Vue 3.3 support and a Vite-based Vue template. 

Sasha Shpota   

- [Noble Curves 1.1](https://github.com/paulmillr/noble-curves)
 ↳ Audited elliptic curve cryptography library.
- [Taxi 1.3](https://taxi.js.org/)
 ↳ Add slick PJAX navigation to a site.
- [Inngest 2.0](https://github.com/inngest/inngest-js)
 ↳ Build serverless job systems with TypeScript.
- [TinyBase 3.2](https://github.com/tinyplex/tinybase/releases/tag/v3.2.0)
 ↳ Reactive data store for local‑first apps.
- [React Arborist 3.1](https://github.com/brimdata/react-arborist)
 ↳ Complete tree view component ([demo](https://react-arborist.netlify.app/gmail)).
- [Alova 2.6](https://github.com/alovajs/alova)
 ↳ Request strategy library for Vue, React and Svelte.     

💻 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=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   

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

🛠 Useful Thing of the Week 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/gqhks2q9dby3xccalkgb.jpg)](https://bundlejs.com/?q=alpinejs)   

[bundlejs: Online npm Package Bundle Size Checker](https://bundlejs.com/?q=alpinejs) — A browser-based tool that can treeshake, bundle, minify, and compress (gzip and brotli) packages to show you what their weight impact is. It runs entirely in the browser, too, using the [WebAssembly build of esbuild](https://esbuild.github.io/getting-started/#wasm). 

Okiki Ojo         

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
