Connect components to client state, URL state, server data, mutations, optimistic updates, and error recovery. Design loading and empty states so the interface remains useful throughout an asynchronous request.