# Widget performance

> The widget's size budgets, what loads before and after the first click, and its effect on Core Web Vitals.

Source: https://shopassist.coec.dk/docs/widget/performance · Updated 2026-10-01

|                                  | Budget                                 |
| -------------------------------- | -------------------------------------- |
| Loader                           | ≤ 6 KB gzip                            |
| Chat app (loaded on first click) | ≤ 40 KB gzip target                    |
| Styles                           | ≤ 2 KB (loader), ≤ 8 KB (app) gzip     |
| Each language pack               | ≤ 4 KB gzip                            |
| Main-thread time on page load    | ≤ 10 ms on a throttled mid-range phone |
| Layout shift                     | 0 (fixed positioning only)             |
| Click to open (cached)           | ≤ 100 ms                               |

Before the shopper interacts, the widget makes one request (its configuration, cached for 60 seconds). The chat app, styles and language pack load only when the shopper opens the chat or a proactive message is about to show. No web fonts, no polyfills, passive listeners only.

Test with Lighthouse: the widget's effect on the performance score of a typical store page is at most 3 points.
