Performance and empty states: lazy-loaded content that fails should show an intentional empty state, not a broken layout.

If your skeleton screen never resolves because an API call timed out, the user sees a loading shimmer forever.

Design a 'load failed' empty state alongside your 'no data' empty state. They're different moments that need different messaging.

GrowthSite Lab designs for failure states, not just happy paths. #UXDesign #EmptyStates #WebDev