Sebastian Tirelli
Coming soon Chrome extension · Reliability · DOM Draft

Why I built ChatGPT LightSession

Long ChatGPT threads slow down because the page keeps every message in the DOM. One small extension, trimming to the last N messages along the active path, has kept sixty thousand sessions responsive without touching a single server.

Draft in progress. This post is staged so the link goes somewhere deliberate rather than 404. Full writeup lands shortly. Until then, the extension and its source are both public.

The problem in one paragraph

ChatGPT conversations that cross a few hundred messages get noticeably laggy. Scrolling stutters, the input field hesitates, and rendering each new message takes longer than the one before it. The cause is unremarkable: every message stays in the DOM forever. There is no virtualization. A thirty-message thread and a three-thousand-message thread share the same code path, and the browser notices.

What the extension does

ChatGPT LightSession trims the rendered DOM to only the last N messages along the active conversation path, configurable from the popup. The underlying data remains untouched. The extension never talks to any server. It never reads the content of conversations for anything other than layout. When you scroll up past the limit, older messages are lazy-rendered back in view.

That is the whole product. A small DOM pruner, a popup to set the window size, and a toggle to turn it off when the user wants the full thread.

Distribution and what I learned

As of this writing the extension has sixty thousand active users and a 4.8-star rating. It got there via word of mouth on X and Reddit, without any paid promotion. Three things I learned from shipping it:

Extension link

The extension is free and stays free: ChatGPT LightSession on the Chrome Web Store. Full writeup with code snippets, DOM structure diagrams, and the two UI-change compatibility stories lands when I find an afternoon for it.

← All writing Next: LlamaIndex two bugs →