Canvas App UX Patterns: Loading Spinners, Empty States, and Skeleton Screens for Async Data | Wicked Smart Data