Performance

How the gallery stays fast: OnPush, signals, and tree-shaking.

  • OnPush change detection on every component — Angular only checks when inputs change or signals emit
  • Signals & computed — reactive state with no unnecessary re-renders
  • `NgOptimizedImage` ( ngSrc ) — automatic lazy loading, explicit dimensions prevent CLS
  • `@for` trackBy — prevents full list re-renders
  • Skeleton placeholders — perceived performance improvement
  • `sideEffects: false` in package.json — enables full tree-shaking