1) State Changes
2) Parent Changes
3) Context Changes
4) Hooks Changes
Problem: Not memoized components will always rerenders when props changes
Prevent re-renders caused by context - memoize provider
Prevent re-renders caused by context -split data and API
Prevent re-renders caused by context - context selectors