My (seemingly successful?) attempt to root-cause the severe CPU/RAM usage issues and multi-second jankiness for GitHub.com on Firefox. A developer investigating severe CPU and memory problems on GitHub.com in Firefox traced the runaway memory growth and multi-second jank primarily to GitHub's DataDog real-user-monitoring script, with global keybindings contributing to a lesser degree. Profiling on Firefox 158.0.1 under Fedora 44 showed long sessions with roughly 50 tabs reaching tens of gigabytes of memory and pinning processes near 100% CPU, sometimes ending in out-of-memory crashes; an attempt to have Claude analyze the profiler and GC logs was inconclusive due to log volume and lack of a reliable reproduction. The developer published TamperMonkey user scripts intended to mitigate the issue. Note: I didn't use AI to write this. I originally had it try to analyze the profiler GC logs, but there wasn't enough information for it to be conclusive see below . This information is accurate as of 2026-10-29 on Firefox 158.0.1, Fedora 44. I didn't test this on Chrome. TLDR: I'm pretty sure it's their DataDog RUM, plus, to a much lesser degree, global keybindings. See below neutering-it for some TamperMonkey user scripts you can try. For the last little while at least a few weeks, at most a year, don't remember exactly when it got this bad , I've been having performance issues on GitHub. It's been stuttery in general, with multi-second periods of jank every now and then, and with memory usage steadily increasing over time. With long-running sessions and ~50 tabs, I've seen it go into tens of gigabytes of memory usage, while pinning the corresponding process at 100% CPU or close for extended periods of time. A few times, I've even had it get so out of hand that the GC couldn't keep up and it ended up OOMing. I finally ended up running the profiler to try and track it down... This screenshot is just one example from today, a few minutes after opening a GitHub page, of runaway memory and GC jank on a GitHub page while doing nothing but scrolling around on it. Before I did this investigation, I had half-heartedly searched for causes. I suspected it was Bitwarden at first given its history of causing performance issues in pages t still does, it's just nothing compared to this . For example, as of the current version of the Bitwarden extension 2026.10.0 , even when autofill is off, it scans the entire page multiple times in quite an inefficient manner it keeps re-querying backwards to find headers on elements rather than doing it all in a few passes . But, after disabling Bitwarden, I realized that it's an issue with GitHub or Firefox. I then suspected it may be changes in Firefox 157/158 given that there was anecdotal evidence of this on various Reddit threads, but everyone attributed it to a different cause and different fix 1 https://www.reddit.com/r/firefox/comments/1wwdup4/i updated to 157 and i have severe performance/ , 2 https://www.reddit.com/r/firefox/comments/1wwzwdq/firefox 1570 has some serious memory leaks/ ... and, of the people who provided more detail, GitHub was a common factor. Looking specifically at GitHub and Firefox, I found a few threads 1 https://connect.mozilla.org/t5/discussions/firefox-feels-slower-overall-especially-on-github/m-p/143093 , 2 https://github.com/orgs/community/discussions/27334 , etc and some stuff on bugzilla 1 https://bugzilla.mozilla.org/show bug.cgi?id=2060501 , 2 https://bugzilla.mozilla.org/show bug.cgi?id=2059903 . The second bugzilla bug claimed it was a GitHub issue with selectionchange , which was claimed to have later been fixed, but it definitely isn't the only thing. I tried passing Claude the performance profile I captured, and GC/CC logs from about:memory , but there wasn't enough information for it to be conclusive. This was partly caused by Firefox dropping stuff due to the sheer volume one of the concise CC logs for a single process was already multiple gigabytes, and each GC was collecting millions of objects , but also because I hadn't found a reliable way to reproduce it on-demand. I abandoned this approach after a bit. I ultimately ended up making educated guesses myself based on the JS traces during the periods of increasing memory and jank, then trying them out. I started with two obvious things which stood out in the JS allocation flame graph during an extended period of jank and memory usage increase this particular one was while typing out the body of a GitHub release : global keybindings, and the DataDog RUM. I also suspect this may be related to or exacerbated by the client-side navigation keeping objects elements, event handlers, closures, etc alive. I decided to start digging into the referenced JS chunks to determine the plausiblity of these theories. TLDR: Even if you have "Character keys" disabled, every keypress including in text fields results in rebuilding the keybinding map from scratch, and triggering multple page layouts while searching for modals. GlobalCommands is in chunk gw-4bf343b417f9ec19.js ... this is the relevant snippet with a few additional comments : js const GlobalCommands = { commands } = { const ref = useRef null const onTrigger = useEffectEvent handleTriggerEvent // k const handle = useKeybindingHandler runGlobalCommand // mF.r h const onKeyDown = useEffectEvent e = { const modal = topmostModalCached e // rG.ck, cached per event if modal && modal.contains ref.current || alreadySeen e return handle e, getKeybindingMap globalCommandIds // RIB.fg lS.hd } useKeybindingConflictWarnings "global", commands // gt.A useRegisterCommands "global", commands // lS.JT useEffect = { const ac = new AbortController document.addEventListener "keydown", onKeyDown, { signal: ac.signal } document.addEventListener "ui-command-trigger", onTrigger, { signal: ac.signal } return = ac.abort }, return