Search engines and users both reward fast pages. With Angular SSR and a few disciplined choices, hitting "good" Core Web Vitals on every build is entirely achievable.
Render on the server, hydrate incrementally
SSR gives you fast, crawlable first paint. Incremental hydration (deferring interactivity for below-the-fold blocks) keeps the initial JavaScript tiny, which protects INP.
Protect LCP
Mark the hero/LCP image as priority and preload it. Never block the LCP element behind client-only JavaScript. Self-host fonts with font-display: swap and preload the critical face.
Eliminate layout shift (CLS)
Always set explicit width and height (or aspect-ratio) on media. Reserve space for anything that loads late. Animate only transform and opacity, never properties that trigger layout.
Keep INP low
Zoneless change detection and OnPush components minimise work per interaction. Defer heavy widgets, debounce expensive handlers and keep the main thread free.
provideClientHydration(
withEventReplay(),
withIncrementalHydration(),
);Marcus Lee
Principal Architect
Designs systems that scale. Obsessed with clean architecture, performance budgets and developer experience.