The inbox that loaded 6.7 MB before showing the first message
An AI-powered outreach and customer engagement platform used by more than 165 companies. The most used screen in the product was the one that held up worst under its own success.
- Client
- Chattie
- Period

Our role: Contracted product engineering, embedded in the client's team.
Context
Chattie is an AI-powered outreach and customer engagement platform for sales teams, used by more than 165 companies. The inbox is where the user spends the day: it is where conversations arrive, get read and get answered. The more a client uses the product, the bigger that screen gets — and that is exactly what happened.
The problem
The inbox stalled. It was slow to open, and the client complained — which is the most expensive way to find a performance problem. When we measured, in August 2026, the initial load of the screen was bringing in around 6.7 MB. The pattern behind it is a familiar one: a list that fetches everything there is and renders everything it fetched. It works on the demo account and degrades precisely on the clients who use the product most.
What we did
We rebuilt the inbox on two decisions. The first: cursor pagination instead of fetching the whole collection — the server returns a window of conversations and a mark for where to continue, so the volume of data stops growing along with the client's account. The second: list virtualization, keeping only the visible rows plus a small margin in the DOM, instead of thousands of nodes nobody is looking at.
What it costs
Neither decision is free. With a cursor there is no jumping to an arbitrary page: navigation becomes sequential, and any total count needs a query of its own. With virtualization, what is not in the DOM is not found by the browser's Ctrl+F, and anchors, restored scroll and screen readers start to demand explicit care. These are predictable costs, and they were the right call for a screen where the user scrolls a lot and jumps little.
Does your product have a number like these?
If there is a bottleneck you can describe in one sentence, it can probably be measured — and measuring is where we start.
Start a project