First establish a baseline for the page: navigation-to-interactive and largest-contentful-paint timings, JavaScript and network waterfalls, CPU and memory profiles, bundle sizes, table-render time, and scroll/input latency. Test with the real 5000-row dataset on representative hardware and network conditions. The likely bottleneck is rendering and retaining 5000 rows during initial load. Virtualize the table so only the visible viewport plus a small overscan window is mounted. Prefer a table/...
Installs into .claude/skills of the current project.
Are you the author of Common Performance Engineering?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-common-performance-engineering-705c6f25)
First establish a baseline for the page: navigation-to-interactive and largest-contentful-paint timings, JavaScript and network waterfalls, CPU and memory profiles, bundle sizes, table-render time, and scroll/input latency. Test with the real 5000-row dataset on representative hardware and network conditions.
The likely bottleneck is rendering and retaining 5000 rows during initial load. Virtualize the table so only the visible viewport plus a small overscan window is mounted. Prefer a table/grid component with row virtualization, stable row keys, and fixed or measured row heights. Paginate or incrementally fetch data when all 5000 rows are not required immediately; use compressed payloads and select only the fields needed for the first view. Split or lazy-load noncritical page code, and ensure production tree shaking removes unused dependencies.
Keep row and cell rendering cheap: memoize pure row/cell components where profiling shows repeated renders, preserve stable callbacks/inputs, and avoid expensive formatting or computation on the main thread. Move genuinely heavy transformations to a worker or precompute them server-side. Use asynchronous network and storage operations, and avoid blocking the main thread during startup.
Re-profile after each targeted change. Verify initial-load and time-to-interactive improvements, smooth scrolling and interaction under CPU throttling, bounded memory, correct sorting/filtering/selection, and behavior at 5000 rows. Add a performance test or benchmark with explicit latency and interaction SLIs/SLOs. Avoid optimizing based only on bundle size or guessing: profile first, then verify that the dominant bottleneck actually improved.