---
title: "The tale of a bizarre bug encountered in Google Docs"
publication: "JavaScript Weekly"
issue: 729
published_at: "2025-03-28"
canonical_url: "https://javascriptweekly.com/issues/729"
---

Plus Babylon.js 8.0, a fantastic look at the state of Vue.js in 2025, and one team's tale of leaving jQuery behind. |        

#​729 — March 28, 2025 

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

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/dev-tools-v4/?utm_source=email&utm_medium=javascriptweekly&utm_content=devtoolsv4)   

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zzc1abyhqafbilwcbga2.jpg)](https://www.monterail.com/stateofvue)  

⭐ [The State of Vue.js Report 2025](https://www.monterail.com/stateofvue) — Created with the support of the Vue and Nuxt teams, this is no mere collection of statistics and charts (though there’s plenty of both) but a thorough update on the state of both projects and an interview with Evan You on Vue (and Vite's) latest developments. Essential reading for any Vue, Vite, or Nuxt user and a one-stop shop for understanding Vue and Nuxt as they stand right now. 

Monterail   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/4f0c55c9.png)](https://frontendmasters.com/courses/dev-tools-v4/?utm_source=email&utm_medium=javascriptweekly&utm_content=devtoolsv4) 

[Master Chrome's DevTools](https://frontendmasters.com/courses/dev-tools-v4/?utm_source=email&utm_medium=javascriptweekly&utm_content=devtoolsv4) — Join Jon Kuperman for this video course diving into Chrome's DevTools. You'll go beyond console.log(), learning how to inspect, debug, and audit your web apps — tracking performance, identifying bottlenecks, making performance gains, and more. [Level up your DevTools skills](https://frontendmasters.com/courses/dev-tools-v4/?utm_source=email&utm_medium=javascriptweekly&utm_content=devtoolsv4). 

Frontend Masters sponsor   

[War Story: The Hardest Bug I Ever Debugged](https://www.clientserver.dev/p/war-story-the-hardest-bug-i-ever) — A former engineer on the Google Docs team tells the tale of a bizarre error that afflicted Google Docs out of the blue about ten years ago. It’s a gnarly one and was only solved due to his swift access to V8’s engineers. If you’ve ever spent hours digging into a bug, you’ll feel glad you weren’t dealing with this one! 

Jacob Voytko   

[Next.js's Recent Middleware Security Woes](https://socket.dev/blog/next-js-patches-critical-middleware-vulnerability) — Last weekend, a new version of Next.js landed to resolve a security vulnerability that could allow middleware to be bypassed. Self-hosted Next.js deployments need to be upgraded _immediately_. The news led to many responses including [deep dives into the vulnerability](https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware) and [criticism of how it was all handled.](https://sxlijin.github.io/2025-03-23-next-js-and-coordinated-disclosure) 

Lee Robinson (Vercel)   

**IN BRIEF:** 

- Cloudflare has done some work to [bring the `URLPattern` URL matching API to Node.js and Cloudflare Workers.](https://blog.cloudflare.com/improving-web-standards-urlpattern/)
- 🤖 If you haven't checked out [Google's _Gemini_ AI tool](https://gemini.google.com/app) recently (or ever), it now supports generating HTML, JavaScript, and React code in a 'canvas' mode for building components on the fly.
- 🤖 [MCP Node.js Debugger](https://github.com/hyperdrive-eng/mcp-nodejs-debugger) is an attempt to make Node's debugger more accessible to third-party AI coding tools (such as Cursor or Claude Code).
- 📊 [Is Vite faster than Turbopack?](https://www.kylegill.com/essays/vite-vs-turbopack/) _"Well, it depends."_   

**RELEASES:** 

- [Bun v1.2.7](https://bun.sh/blog/bun-v1.2.7) – Bun's HTTP server now has built-in support for reading and writing cookies using a Map-like API.
- [Node v18.20.8 (LTS)](https://nodejs.org/en/blog/release/v18.20.8) – Note that Node 18 reaches 'end-of-life' next month.
- [Sinon 20.0](https://sinonjs.org/) – Test spies, stubs and mocks library.
- [pnpm 10.7](https://github.com/pnpm/pnpm/releases/tag/v10.7.0), [Babel 7.27.0](https://babeljs.io/blog/2025/03/24/7.27.0), [ESLint 9.23.0](https://eslint.org/blog/2025/03/eslint-v9.23.0-released/), [Neutralinojs 6.0](https://neutralino.js.org/docs/release-notes/framework/#v600), [Material UI v7](https://mui.com/blog/material-ui-v7-is-here/)  

📒 Articles & Tutorials 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ela5dydqhlmggsjleaju.jpg)](https://blog.julik.nl/2025/03/a-tiny-undo-stack)  

[Writing a Tiny Undo/Redo Stack in JavaScript](https://blog.julik.nl/2025/03/a-tiny-undo-stack) — You might prefer to lean upon an established approach (using [Immer patches](https://immerjs.github.io/immer/patches/) perhaps), but if you want to implement something small yourself, this might help. 

Julik Tarkhanov   

[Land Ahoy: Leaving the Sea of Nodes](https://v8.dev/blog/leaving-the-sea-of-nodes) — A deeply technical post from a core member of the V8 JavaScript engine team that explains the limitations of Turbofan, one of V8’s optimizing compilers. If you don’t care for the internals of how your JavaScript is compiled and run, just be assured the V8 team is working to make it run even faster. 

Darius Mercadier (V8)   

[Which AI Model Is Best for Fixing Unit Test Errors? Claude, O3-Mini, GPT-4o?](https://wallabyjs.com/blog/wallaby-ai.html?utm_source=cooperpress&utm_medium=javascriptweekly&utm_content=javascriptweekly) — Better context wins every time. Wallaby provides AI with test coverage and runtime values to debug smarter. MCP support coming soon. 

Wallaby Team sponsor   

[Mission jQuery Zero: How FreeAgent Removed jQuery From Its App](https://engineering.freeagent.com/2025/03/24/mission-jquery-zero-how-freeagent-removed-jquery-from-our-application/) — Despite popular developer sentiment, jQuery’s prevalence on the Web continues to be significant but _“sometimes legends need to retire”._ 

Colin Gemmell   

▶[React Query API Design: Lessons Learned](https://www.youtube.com/watch?v=l3PxErcKeAI) — You might know Dominik for all his work on React Query, TanStack Router, and his epic [React Query - The Bad Parts](https://tkdodo.eu/blog/react-query-the-bad-parts) series. Here, he walks us through the design choices made while building React Query and shares lessons and mistakes valuable to anyone building their own libraries. _(30 minutes.)_ 

Dominik Dorfmeister (TkDodo)   

[Deploying a Next.js App to Production on Any Server](https://www.saybackend.com/blog/04-deploy-nextjs-to-production-without-vercel) — A popular article from last year that’s been updated for 2025 and Next.js 15. 

Kamrannetic   

[🔒 Protect Against AI Bots, Fraud, and Abuse in Real Time](https://workos.com/radar?utm_source=cpjs&utm_medium=newsletter&utm_campaign=q12025) — WorkOS Radar protects your app with advanced device fingerprinting — stop fake signups, free tier abuse, bot attacks and brute force attempts today. 

WorkOS sponsor   

📄 [Expressing Japanese Grammar in the TypeScript Type System](https://github.com/typedgrammar/typed-japanese/blob/main/blog.md) – A curious project out of left field. Yifeng Wang 

📄 [Directives: A Core Feature of the Angular Toolkit](https://medium.com/coreteq/directives-a-core-feature-of-the-angular-toolkit-34ccec531e19) Vyacheslav Borodin 

📄 [You Should Know This Before Choosing Next.js](https://eduardoboucas.com/posts/2025-03-25-you-should-know-this-before-choosing-nextjs/) Eduardo Bouças  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/iwy5nu8kkpvcwitzirnv.jpg)](https://blogs.windows.com/windowsdeveloper/2025/03/27/announcing-babylon-js-8-0/)  

[Babylon.js 8.0: Microsoft's JavaScript 3D Engine](https://blogs.windows.com/windowsdeveloper/2025/03/27/announcing-babylon-js-8-0/) — 8.0 adds support for improved ‘image based lighting’ and ‘area lights’ for environmental lighting and shadows, extra control of the render pipeline, and a new lightweight viewer. And, as always, they have [▶️ a short video](https://www.youtube.com/watch?v=kKaomUggipQ) showing it all off. 

Microsoft   

🤖 [An MCP Server for Playwright and Browser Automation](https://github.com/microsoft/playwright-mcp) — MCP (Model Context Protocol) servers enable certain LLM-based agents (such as Claude, Claude Code, and Cursor) to perform actions on a system outside of their usual sandbox. This new project from Microsoft enables such LLMs to interact with browsers via Playwright. 

Microsoft   

[Lexical 0.29: An Easy-to-Extend Text Editor Framework from Meta](https://lexical.dev/) — A text editor framework built by Meta with extensibility, accessibility, and cross platform support in mind (there’s even a Swift variant for iOS). There’s [a live playground](https://playground.lexical.dev/) if you want to give it a try. 

Meta / Facebook   

🔎 [Fuzzball: Fuzzy String Matching Library](https://github.com/nol13/fuzzball.js) — To tackle those cases where what’s typed isn’t _quite_ what’s wanted. There’s a neat tree-themed [Web-based demo.](https://nol13.github.io/fuzzball.js/) 

Nolan   

- [Axios 0.30](https://github.com/axios/axios/releases/tag/v0.30.0) – Long-standing, promise-based isomorphic HTTP client.
- [Solito 4.4](https://github.com/nandorojo/solito/releases/tag/v4.4.0) – React Native + Next.js. Now supporting Next.js 15.
- [InversifyJS 7.2](https://github.com/inversify/InversifyJS) – Inversion of control container for JavaScript.
- [jscodeshift 17.3](https://github.com/facebook/jscodeshift) – JavaScript codemod toolkit from Facebook.
- [Verdaccio 6.1](https://github.com/verdaccio/verdaccio) – Lightweight Node.js private proxy registry.      

📰 Classifieds   

[Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort](https://www.meticulous.ai?utm_source=javascript_weekly&utm_campaign=march28th). Relied on by 1000s of orgs, including Dropbox, Lattice, Bilt Rewards and many more. 

--- 

📊 [Jspreadsheet](https://jspreadsheet.com?utm_source=newsletter&utm_medium=classified&utm_campaign=JavaScriptWeekly) – Lightweight JS data grid with Excel-like controls. Create rich web spreadsheets fast. [Try it now](https://jspreadsheet.com?utm_source=newsletter&utm_medium=classified&utm_campaign=JavaScriptWeekly).     

📢 Elsewhere  

A quick roundup of other interesting updates and useful resources from across the broader developer landscape: 

- `<select>` elements have always been notoriously tricky to style with CSS but [there's a new standardized approach beginning to become available.](https://developer.chrome.com/blog/a-customizable-select?hl=en)
- [ls-lint](https://ls-lint.org/blog/announcements/v2.3.0.html) is a mature tool for linting file and directory names.
- Someone's managed to get [Go code to compile and run on the PlayStation 2.](https://rgsilva.com/blog/ps2-go-part-1/)
- 👑 People's experiments with TypeScript's type system continue with the latest creation being [a chess engine built from TypeScript types.](https://github.com/scottbedard/chess-types)
- LLM wrangler Simon Willison was getting annoyed at being unable to easily visualize incomplete JSON documents so [he built an 'incomplete JSON' pretty printer.](https://simonwillison.net/2025/Mar/28/incomplete-json-pretty-printer/)         

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
