🎄 We've made it to the end of 2024! In this issue, we're being reflective, leading with a few news items but then looking at what made 2024 special in the world of JavaScript, and covering some of the biggest things we linked to this year.
Then we're on a Christmas break for two weeks and will be back in your inbox on Friday, January 10, 2025, — yes, we're moving back to Fridays for 2025! We hope you have a Merry Christmas and a Happy New Year. __ Peter Cooper and the Cooperpress team
Complete Intro to React v9: New Project, Modern Stack — Join Brian Holt in building a pizza delivery app from scratch. Master hooks, TanStack Router, testing, and React 19 features in this comprehensive guide to modern React development. No prior React experience needed.
Frontend Masters sponsor
IN BRIEF:
🥇 JetBrains' recent State of Developer Ecosystem report shows that JavaScript is "the most used programming language", reports InfoWorld's Paul Krill. The report also claims "despite its gains, TypeScript will not replace JavaScript".
🇵🇱 If you're in Poland, consider heading along to the next WarsawJS meetup on January 8. Esteemed Polish computer scientist Andrzej Blikle will be speaking, amongst others.
In February, the React team posted a mega 'React Labs' update which framed the whole of React's year, explaining the goals of the React Compiler and the eventual React 19 release (which went stable this month).
Not content to merely work on an edge platform, JS runtime, and fight Oracle, Deno also unveiled JSR, a fresh attempt at providing a registry for JavaScript packages.
The OG of JavaScript libraries jQuery 4.0 went into beta too! We keep our fingers crossed for a jQuery 4.0 final release in 2025.. ;-)
🥇 Our Top Items of 2024
Next up is a walk through the top items we included in 2024, ordered by level of reader engagement. No editorial judgments here – these are the things you cared about most:
1.console.delight — By far our most popular link of the year with over 20,000 clicks(!) – but who doesn't use and love console.log? This post showed us how in the browser console it's not merely for printing plain text, but can be used to render things like SVGs and HTML.
Zach Saucier
2.JavaScript Visualized: Promise Execution — A well-diagrammed article coupled with an (optional) 8 minute video that went into how promises work under the hood. Hugely popular as most of Lydia's content tends to be.
3.Is htmx Just Another JavaScript Framework? — Despite being five years old, htmx has seen a surge in popularity in 2023 and 2024, partly due to framework fatigue, but also as its simple HTML-oriented approach to adding functionality to pages appeals to a diverse group of developers. v2.0 landed in June.
Alexander Petros
4.Ecma International Approves ECMAScript 2024: What’s New? — In June, the Ecma General Assembly approved the latest ECMAScript / JavaScript spec, officially making it a standard. As with ES2023, it was a reasonably small step forward, but Dr. Axel rounded up what was new.
6.Eloquent JavaScript: The Fourth Edition — Coming several years after the third edition, the latest version of what is, perhaps, the best ‘all rounder’ book for learning JavaScript arrived in March “adjusted to the realities of 2024 and generally touched up.”
Marijn Haverbeke
7.33 JavaScript Concepts Every Developer Should Know — A curated collection of links to tutorials on 33 different areas it’s worth understanding well, including types, closures, equality, scope, and different engines.
Leonardo Maldonado
8.How Google Handles JavaScript In Its Indexing Process — At one point if you wanted Google to index your content it needed to be directly written in HTML and not dynamically rendered with JavaScript. Things have since changed, of course, but by how much?
Hookdeck: An alternative to Amazon API Gateway + Lambda + SQS. With local dev, debugging, and observability built-in.
🤗 Many thanks for reading JavaScript Weekly in 2024, sending in your links, and generally supporting us. We look forward to seeing you again early next year. Remember, we're moving back to Fridays (long term subscribers may remember we used to go out on Fridays for the first several years) so we'll be back on Friday, January 10.
Boa v0.20: An Alternative JavaScript Compiler — Under development for several years, Boa has a few missions: be a Rust ECMAScript implementation, be easy to embed in Rust projects, and be a fast, safe JS engine overall. v0.20 sees a bump up to 89.92% compliance in the Test262 suite, improves Temporal support, adds Atomics.pause, and more. This is no toy engine.
Build with Gemini at Lightning Speeds — With the largest context window available, Google Gemini provides JavaScript developers multimodal processing of images, videos and text. Start using Google Gemini in minutes using AI Studio.
Google Gemini sponsor
IN BRIEF:
🎮 If you ever do any game development with JavaScript, it's time to take the Gamedev.JS Survey 2024. If you don't, you can head to JS13KGames and enjoy other people's creative efforts instead :-)
The State of Node.js Performance in 2024 — A thorough set of benchmarks covering recent performance advancements made in Node.js. The improvements between Node 18 and 20 up to version 22 might surprise you - it’s clear the team has put a lot of work into this area.
Gonzaga and Parody (NodeSource)
How to Reduce TTFB? — High "time to first byte" affects web vitals. Learn to identify and fix issues slowing your TTFB.
How to Build a SolidJS App with Deno — SolidJS is a declarative library for creating user interfaces that emphasizes fine-grained reactivity and minimal overhead and it plays well with Deno.
Andy Jiang
Get Cooking! Generative AI with MongoDB — See how MongoDB, the world’s most popular document database, integrates with RAG pipelines and cutting-edge AI agents.
Termo: An Easy to Use Terminal Control for Websites — If you want to offer a terminal emulator style feature on your site (maybe for advanced users, to enhance your docs, or even just as an easter egg), Termo enhances Xterm.js and presents a slick experience.
Civet 0.9: Code More with Less Using a TypeScript Superset — Two years old and well maintained, Civet offers an interesting approach. Think JavaScript but with Python style indentation, chained comparisons, built-in JSX, & more. This example alone shows off the potential for tighter, easier-to-write code.
📊 Perspective 3.2(above) – Data visualization and analytics component. The core is written in C++ and compiled to WebAssembly where it can be used from JavaScript. Their homepage shows it off well with a live example. Now supports newline delimited JSON (ndjson).
If your work leans more towards the frontend, be sure to check out the latest issue of Frontend Focus, our sister newsletter focused on all things browser-side.
🗓️ If you missed last week's issue, don't worry, it didn't exist – we took a week off for Thanksgiving! We're now back all the way through to the Christmas break :-) __ Your editor, Peter Cooper
JavaScript™ Weekly
Deno v. Oracle: Cancelling the JavaScript Trademark — Did you know Oracle formally owns the ‘JavaScript’ trademark? There have been a few efforts to change this over the years but Oracle isn’t listening, so the Deno team formally filed a petition to cancel the trademark.
🎂JavaScript Turns 29 Years Old — If you’re wondering why Oracle has the JavaScript trademark, it's because Sun owned the name and Oracle acquired Sun (which is also why it owns Java). As someone who was posting inane questions in comp.lang.javascript in 1996, this news makes me feel old – no-one could have anticipated what JavaScript would be today.
Netscape and Sun Microsystems
Add Excel-like Spreadsheet Functionality to Your JavaScript Apps — SpreadJS is the industry-leading JavaScript spreadsheet for adding advanced spreadsheet features to your enterprise apps. Build finance, analysis, budget, and other apps. Excel I/O, 500+ calc functions, tables, charts, and more. View demos now.
SpreadJS from MESCIUS inc sponsor
Astro 5.0: The Web Framework for Content-Driven Sites — Astro has taken the front-end world by storm and v5.0 keeps up its rapid pace of development. Content Layer makes it easy to load content from any source and Server Islands can combine cached, static content with dynamic content. There’s now a type-safe way to manage environment variables and Vite 6 is along for the ride too. You can play with Astro 5 using the astro.new site.
The Astro Team
Take the State of JavaScript 2024 Survey — Each year, Devographics runs a popular survey to see what JS features and tools you know about, use, and love/hate. It’s structured such that you can learn something just from taking it and the results are always interesting (see 2023’s). It’s open for a few more days, despite what the page says. (Or ▶️ watch someone else taking it?)
🤖Using Transformers.js for AI in the Browser — Transformers.js is a seriously impressive project we link from time to time that lets you run pretrained machine learning models in the browser. Here’s a practical look at actually playing with it yourself right now.
Raymond Camden
Working with JavaScript's Scheduler API — A look at an API only available in Chromium/Edge for now, but that promises a way to prioritize and control task execution in a more refined way than was possible till now.
▶ Building a Teleprompter App in 30 Minutes with AI — Building apps with AI powered tools isn’t unusual nowadays, but if you’ve never been through the process, this is a good look at how it works all the way through to deployment.
Onlook: 'Figma'-Like Design App for React — A new open source, local-first design app (for Windows, Linux & macOS) targeting React apps. Design layouts directly on a live page and instantly write your changes to code. GitHub repo.
BunBuster: A Fast Web and TCP Fuzzer for Brute Forcing Servers — As always, use these sorts of things in a responsible way, but it’s interesting to see tools like this now being built in JavaScript, thanks to Bun’s speed and ease of distributing binaries.
🦃 We're taking next week off for Thanksgiving. We don't celebrate it in our country, but we know many of you do, so it seemed a good time for a break. We'll be back on Thursday December 5. __ Your editor, Peter Cooper
JavaScript Weekly
Importing a Frontend JavaScript Library Without a Build System — Many developers prefer to eschew complex, modern build processes and use JavaScript in a more old-school way. You can definitely get by without a build system, and Julia explores some ways to import libraries in such a setup.
Julia Evans
Angular v19 Released — The latest version of the popular enterprise-scale app framework is here with a ▶️ 22 minute introductory video running through what’s changed and what’s new, including incremental hydration (in preview), two new core reactivity primitives, event replay, and the ability to specify which routes are rendered server or client side.
Minko Gechev
Ship Code Confidently When You Take Testing Fundamentals — Join Steve Kinney for this video course on test-driven development workflows and nail the testing fundamentals. You'll learn about automation, equality, mocks and spies, integration testing, the tools to help you along the way, and much more.
Bun v1.1.35 – The fast JavaScriptCore-based runtime adds native support for Musl and Alpine Linux, the Bun binary is a lot smaller, console.group and groupEnd are now supported, and fs.readFile is faster on small files.
🤞 It wasn't released by the time we hit 'send' but we suspect TypeScript 5.7 will be out later today – you can check on the TypeScript blog.
📒 Articles & Tutorials
Exploring JavaScript Symbols — Symbols were a new ‘quirky little primitive’ (as Trevor puts it) that arrived with ES6 ten years ago, but they continue to be poorly understood. Trevor boils them down really well, including a little side quest into the likely-to-be-deprecated ‘species.’
Building Self-Contained Executable Programs with Deno — One of Deno’s compelling features is its deno compile command that can turn JavaScript and TypeScript programs into single, easy to distribute cross-platform binaries. Here’s a bit more about what makes it tick.
Viselect: Let Users Visually Select DOM Elements — If you’ve got a variety of elements and you want users to be able to select them in groups, individually, or even in multiple groups, this lets you offer that functionality easily. Can be used in a vanilla fashion or with integrations for P/React or Vue.js.
Simon Reinisch
Perfectionist 4: ESLint Plugin for Sorting Things in Your Code — It doesn’t care what you want to sort (props, imports, types, decorators, modules..) but if you want to enforce something is sorted using ESLint, this is for you. It supports alphabetical and natural sorting, plus sorting by line length which results in this sort of aesthetic.
Azat S.
Your Vectors Are Too Big — Are your massive full-fidelity vectors slowing down your search? Compress, cut costs, and boost speed with MongoDB Atlas!
🤖Vercel's AI Chatbot Starter Template — An open source AI chatbot app template built using Next.js. It uses Vercel’s AI SDK and other Vercel APIs for the heavy lifting.