- loading and error states
- form validation/errors + dirty/invalid states
- empty states
- pagination and/or virtualization/windowing of large lists
- normalizing state to ensure consistency
- caching requests / cache invalidation
- immediate feedback: optimistic updates and/or loading states
- blocking duplicate actions (loading/dirty states for SPA, POST/redirect/GET for non-SPA)
- cancelling pending requests when making an updated request (e.x. typeahead), or when navigating away from the screen that depends on it
- keyboard/mouse events:
- "return" to submit forms
- "escape" to close modals/popovers
- clicking outside modals/popovers to close
- preserving command-click to opening links in new tab behavior
- prefetching images and other content
- avoid moving content when new data is loaded unless expected
- transitions
- avoid clipped or improperly stacked popovers/modals
- block text selection in UI components, but not "content"
- toast notifications, with undo for undoable actions
- accessibility
- mobile-friendly
- offline-friedly
Source: https://twitter.com/tlrobinson/status/1101202128381472770 (and replies)