AfterRenderEffect

Angular 19 • Doron Azulay

From Lifecycle to Reactivity

 

  • Lifecycle hooks are being replaced by signal-based APIs.
  • Angular 19 introduces afterRenderEffect() for post-render work.

Lifecycle Hooks

 

  • OnInit
  • OnDestroy
  • DoCheck
  • OnChanges
  • AfterContentInit / AfterContentChecked
  • AfterViewInit / AfterViewChecked

Constructor / OnInit

Components should be cheap and safe to constructor.

ngOnInit() is a better place for a component to handle initial data.

OnInit Replacements

 

  • computed() - derived values
  • linkedSignal() - connect signals to inputs
  • resource() - async data loading
  • httpResource() -data fetching
  • effect() - reactive logic execution
  • toObservable() - bridges to RxJS (effect under the hood)

OnDestroy → DestroyRef

OnChanges → effect() / computed() / linkedSignal()

The end of hooks?

AfterContentInit / AfterContentChecked

AfterViewInit / AfterViewChecked

The "After" Hooks

Run just once!

Run every CD cycle

💡 These new “After” hooks help to replace the old lifecycle hooks for DOM rendering,
but they’re not reactive - they don’t depend on signals or track reactive changes.

afterRenderEffect()

 

Live Coding

afterRenderEffect()

 

  • Precise timing after Angular finishes rendering.
  • Ideal for DOM measurements, animations, or external lib.
  • Signals propagate between phases.
  • Helps prevent layout thrashing by separating DOM reads and writes.
  • Browser-only (no SSR).
  • onCleanup()  - runs cleanup logic when the effect re-runs or the component is destroyed.

Phase Rules

effect() vs afterRenderEffect()

 

...

deck

By Doron Azulay

deck

  • 14