# Performance

> Runtime, memory & payload

Runtime problems that make an AI-built page slow, janky, or heavy — DOM bloat, memory leaks, layout shift, long tasks, oversized images and bundles. Each one is caught live by a VibeCheck detector as it happens in the browser.

Caught by the dom-bloat, memory-leak, layout-thrashing, long-task, image, resource and heavy-library detectors.

## Problems in this category

- [Excessive DOM size](https://vibecheck.wcgw.fun/fix/excessive-dom-size.md): A huge DOM slows style, layout and memory on every frame. Virtualize long lists and flatten wrappers to get node count back under control.
- [JavaScript memory leak](https://vibecheck.wcgw.fun/fix/memory-leak.md): A leaking heap grows until the tab janks or crashes. Find the listeners, timers and subscriptions that are never cleaned up and release them.
- [Cumulative layout shift (CLS)](https://vibecheck.wcgw.fun/fix/cumulative-layout-shift.md): Content that jumps as the page loads fails Core Web Vitals and mis-taps users. Reserve space for images, ads and late content to stop the shift.
- [Long tasks blocking the main thread](https://vibecheck.wcgw.fun/fix/long-tasks.md): Long tasks freeze the page and wreck INP. Break up heavy work, defer it, or move it to a worker so the main thread stays responsive to input.
- [Console.log spam](https://vibecheck.wcgw.fun/fix/console-log-spam.md): Debug logs left in production leak internals, slow hot paths, and bury real errors. Strip them at build time and add a no-console lint rule.
- [Duplicate network requests](https://vibecheck.wcgw.fun/fix/duplicate-network-requests.md): The same endpoint fetched several times wastes bandwidth and risks race conditions. Deduplicate with a query cache or a shared in-flight request.
- [Unoptimized images](https://vibecheck.wcgw.fun/fix/unoptimized-images.md): Images without dimensions shift layout; oversized ones waste bandwidth. Add width/height, lazy-load below the fold, and serve the right size.
- [Large image files](https://vibecheck.wcgw.fun/fix/large-image-files.md): Multi-hundred-KB images blow your LCP and mobile data budget. Compress to WebP/AVIF, resize to display size, and serve from an image CDN.
- [Large JavaScript bundles](https://vibecheck.wcgw.fun/fix/large-javascript-bundles.md): Oversized JS bundles delay interactivity and waste mobile data. Code-split by route, tree-shake imports, and lazy-load heavy components.
- [Heavy dependencies](https://vibecheck.wcgw.fun/fix/heavy-dependencies.md): Heavy libraries add weight and known pitfalls. Lazy-load them, import a lighter subset, or swap for a native API to cut bundle size and jank.

---

Category index from VibeCheck — https://vibecheck.wcgw.fun/fix/performance. Full site index for LLMs: https://vibecheck.wcgw.fun/llms.txt
