---
title: "Etsy's journey to TypeScript"
publication: "JavaScript Weekly"
issue: 565
published_at: "2021-11-19"
canonical_url: "https://javascriptweekly.com/issues/565"
---

Plus Electron 16, the beta of React 18, and building 3D scenes with React. |        

#​565 — November 19, 2021 

[Unsubscribe](https://javascriptweekly.com/leave/*|UID|*)|[Read on the Web](https://javascriptweekly.com/issues/565)   

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/rdx7vq6awkalzpw3iclo.jpg)](https://engineering.tines.com/blog/understanding-why-our-build-got-15x-slower-with-webpack)  

[Understanding Why a Build Got 15x Slower with Webpack 5](https://engineering.tines.com/blog/understanding-why-our-build-got-15x-slower-with-webpack) — Two engineers began to encounter their front-end build process taking _minutes_ rather than seconds and wondered what was up. This is their brief yet technical explanation of how they debugged it and how Webpack [got a fix](https://github.com/webpack/webpack/issues/14580). 

Eoin Hennessy (Tines)   

[Etsy’s Journey to TypeScript](https://codeascraft.com/2021/11/08/etsys-journey-to-typescript/) — These sorts of stories always seem to be popular as teams weigh up the best way to progress. Etsy had a _lot_ of JavaScript code but felt some of the problems they were encountering could be solved by TypeScript. This post digs into the approach they took and _“what it took to educate an Etsy-sized company in a new programming language”_. 

Salem Hilal   [![\](https://copm.s3.amazonaws.com/87649be8.jpg)](https://imagekit.io/features/video-api/?utm_source=Cooperpress&utm_medium=email&utm_campaign=Javascriptweekly_Newsletter&utm_content=PrimaryLink_VideoAPI_AD) 

[Video API Built to Create Stunning Visual Experiences](https://imagekit.io/features/video-api/?utm_source=Cooperpress&utm_medium=email&utm_campaign=Javascriptweekly_Newsletter&utm_content=PrimaryLink_VideoAPI_AD) — Are videos impacting your page's load time? Now, deliver optimized videos in the right format, quality & size based on the user's device in real-time. Delivering stunning visual experiences just got simpler, Try ImageKit's forever-free plan today. 

ImageKit.io sponsor   

[Some Notes on Using 'esbuild'](https://jvns.ca/blog/2021/11/15/esbuild-vue/) — Julia Evans’ walk into the world of JavaScript bundling will be of immediate interest to anyone who’s been doing JavaScript since pre-bundling times, and it digs well into how an experienced developer unfamiliar with [esbuild](https://esbuild.github.io/) interprets what it really does. 

Julia Evans   

[TypeScript 4.5 Released](https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/) — Just two weeks after the RC comes the final release. What’s new? The formerly promised ES module support for Node is now [merely experimental](https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/#esm-nodejs) and in nightly releases only, but you also get the `Awaited` type, tail recursion elimination on conditional types, and naturally _much more._ 

Daniel Rosenwasser (Microsoft)   

[React 18 Enters Beta Stage](https://github.com/reactwg/react-18/discussions/112) — ..but as the official Twitter account [explains in a thread](https://twitter.com/reactjs/status/1460380211262930948): _“Most developers don’t need to think about React 18 yet..”_ while noting they're keen for people to try it out and leave feedback on the issue tracker. The final release is due in Q1 2022. 

React Working Group   

**IN BRIEF:** 

- [Kent C Dodds has joined](https://kentcdodds.com/blog/how-i-help-you-build-better-websites) the Remix team – [Remix](https://remix.run/) is a promising looking framework being unveiled as open source next Monday (you can learn [more of what it's about here](https://dev.to/dabit3/a-first-look-at-remix-run-449a)).
- If you're into (or interested) in serverless platforms, [Cloudflare Workers](https://workers.cloudflare.com/) has had a _huge_ week with [a beta of v2](https://blog.cloudflare.com/wrangler-v2-beta/) of its popular Wrangler developer tools, its [Durable Objects storage system](https://blog.cloudflare.com/durable-objects-ga/) going GA, and a new [Services abstraction](https://blog.cloudflare.com/introducing-worker-services/) to easier build composable apps. Oh, and Workers now [supports ES modules too.](https://blog.cloudflare.com/workers-javascript-modules/)
- The main npm registry, now run by GitHub, [had a big security flaw](https://github.blog/2021-11-15-githubs-commitment-to-npm-ecosystem-security/#security-issues-related-to-the-npm-registry) where attackers had the theoretical potential to 'publish new versions of any npm package' without proper authorization. Ouch.
- [Ember 4.0](https://github.com/emberjs/ember.js/releases/tag/v4.0.0) has been released.. maybe: it's not on their official blog or Twitter yet. More info [on their v4 process here.](https://blog.emberjs.com/the-road-to-ember-4-0/)
- Netlify has [raised $105M](https://www.netlify.com/press/netlify-raises-usd105-million-to-transform-development-for-the-modern-web) to double down on the Jamstack ecosystem and, hopefully, to increase Cassidy Williams' whimsy budget 😊 

**RELEASES:** 

[Tagify 4.9](https://yaireo.github.io/tagify/) – Elegant input component for tags.
 [Vuetify 2.6](https://vuetifyjs.com/en/) – Material Component Framework for Vue.
 [execa 6.0](https://github.com/sindresorhus/execa) – A better Node process launcher.
 [Plottable 3.12.0](https://github.com/palantir/plottable) – Modular chart components on D3.
 [Teaful 0.8](https://github.com/teafuljs/teaful/releases/tag/0.8.0) – Tiny React state library.
 [Dann.js 2.4](https://github.com/matiasvlevi/Dann/releases/tag/v2.4.0) – Neural network library.
 [Electron.js 16](https://www.electronjs.org/blog/electron-16-0)    

💻 Jobs  

[JavaScript Developer at X-Team (Remote)](https://x-team.com/remote-javascript-developer-jobs/?utm_source=cooperpress&utm_medium=email-ad&utm_campaign=cooperpress-js&utm_content=js) — Join the most energizing community for developers and work on long-term projects for Riot Games, FOX, Sony, Coinbase, and more. 
X-Team   

[Mid/Senior Software Engineer at Carbon Five (LA / SF / NYC / CHA)](https://grnh.se/e02c6d762us) — Join our team of creative full-stack devs to work with exciting clients in tech. Great benefits, growth opps, caring team & more. 
Carbon Five   

[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) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired    

📖 Tutorials, Opinions & Stories 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/apvi2j6m4nmnqooq1m8a.jpg)](https://varun.ca/modular-webgl/)   

[How to Build Stunning 3D Scenes with React Three Fiber](https://varun.ca/modular-webgl/) — If you want to build neat 3D visualizations in the browser using the React concepts you’re already familiar with, here’s how to get started. A great intro. 

Varun Vachhar   

[Powerful Command Line Tools for Modern Web Development](https://www.smashingmagazine.com/2021/11/powerful-terminal-commandline-tools-modern-web-development/) — What’s your favorite command-line tool? In this post, Louis shares a collection of relevant command-line apps and utilities that he has personally come across in the past few years. 

Louis Lazaris   

[Migrating from Puppeteer to Playwright](https://www.checklyhq.com/guides/puppeteer-to-playwright/) — [Puppeteer](https://developers.google.com/web/tools/puppeteer) is a popular Node library to remote control Chrome/Chromium browsers, whereas [Playwright](https://playwright.dev/) is a little broader and newer. This post digs through what you need to consider if you switch between the two. 

Checkly   

[Develop a Faster Way to Work. Build Internal Tools, Remarkably Fast](https://retool.com/?utm_source=sponsor&utm_medium=newsletter&utm_campaign=cooperpress) — Custom dashboards, admin panels, CRUD apps—build any internal tool faster in Retool. Get started for free today. 

Retool sponsor   

[Using Web Workers to Boost Third-Party Script Performance](https://blog.logrocket.com/using-web-workers-boost-third-party-script-performance/) — A look at [Partytown](https://github.com/BuilderIO/partytown), a still experimental library that aims to improve third-party script performance using Web Worker technology. 

Arek Nawo   

[How to Debounce and Throttle Callbacks in Vue](https://dmitripavlutin.com/vue-debounce-throttle/) — How to debounce and throttle watchers and event handlers in Vue components. 

Dmitri Pavlutin   

[Detecting Objects with Serverless, Twilio Video, and TensorFlow.js](https://www.twilio.com/blog/object-detection-serverless-video-tensorflow-js) 
Lizzie Siegle (Twilio)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/pxewiy323ftzjeqxbvxc.jpg)](https://github.com/dfahlander/Dexie.js/releases/tag/v3.2.0)   

[Dexie.js 3.2: The IndexedDB Wrapper is Now Reactive](https://github.com/dfahlander/Dexie.js/releases/tag/v3.2.0) — Dexie provides a well thought out wrapper around the IndexedDB API offered by most mainstream browsers and now it integrates even better with reactive UI libraries too. The [homepage](https://dexie.org/) has had a facelift too and includes framework specific examples. 

David Fahlander   

[Electron 16.0.0 Released](https://www.electronjs.org/blog/electron-16-0) — [Electron](https://www.electronjs.org/), the toolkit for building cross platform desktop apps with JavaScript, is now one of those projects with a fast, regular release cadence, so no _huge_ changes here, but you get Chrome 96, Node 16.9.1 and V8 9.6 support, as well as the [WebHID API](https://developer.mozilla.org/en-US/docs/Web/API/WebHID_API). 

OpenJS Foundation   

[App Performance Blocked By Your Database?](https://www.polyscale.ai/) — PolyScale provides a plug-and-play database edge cache. Scale globally in minutes without writing code. 

PolyScale.ai sponsor   

[MicroDiff: Lightweight, No Dependency Object and Array Comparison](https://github.com/AsyncBanana/microdiff) — Given two objects or arrays, it returns the differences. Boasts high performance and TypeScript support. 

AsyncBanana   

[React Location: A New 'Enterprise-Grade' React App Router](https://react-location.tanstack.com) — An effort which got its start “as a wrapper around the long-winded [React Router] v6 beta release” has spun off as a standalone project of its own. 

Tanner Linsley   

[browser-or-node 2.0: Figure Out Where Your Code is Running](https://github.com/flexdinesh/browser-or-node) — Provides a simple way to tell if your code is currently running in a browser, in Node, in a Web Worker, or in Deno. 

Dinesh Pandiyan   

[Free Activity Feeds & Chat APIs for Qualifying Teams](https://getstream.io/blog/maker-account/?utm_source=javascript_weekly&utm_medium=newsletter_content_ad&utm_content=Developer&utm_campaign=JavascriptWeekly_Nov2021_MakerAccount) 

Stream sponsor   

[Geodesy Functions Implemented in JavaScript v2.3.0](https://github.com/chrisveness/geodesy) — _Geodesy_ is the science of measuring the earth, its shape, distances, etc. If you have a need to work with such concepts, these examples will be useful. 

Chris Veness   

[μPlot 1.6: Fast, Tiny, Canvas-Based Time Series Chart Library](https://github.com/leeoniya/uPlot) 
Leon Sorokin         

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

'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
