Performance: Virtual scrolling for large lists
HIGH IMPACT
Virtual scrolling improves page load speed and rendering performance by only rendering visible list items instead of the entire large list.
import { Component } from '@angular/core'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; @Component({ selector: 'app-virtual-list', template: `<cdk-virtual-scroll-viewport itemSize="40" style="height:400px;"> <div *cdkVirtualFor="let item of items">{{item}}</div> </cdk-virtual-scroll-viewport>` }) export class VirtualListComponent { items = Array.from({length: 10000}, (_, i) => `Item ${i + 1}`); }
import { Component } from '@angular/core'; @Component({ selector: 'app-large-list', template: `<div style='height:400px; overflow:auto;'> <div *ngFor='let item of items'>{{item}}</div> </div>` }) export class LargeListComponent { items = Array.from({length: 10000}, (_, i) => `Item ${i + 1}`); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Rendering full list | 10,000 nodes created | 10,000 reflows | High paint cost | [X] Bad |
| Virtual scrolling | 20-30 nodes created | 20 reflows | Low paint cost | [OK] Good |