The Problem with Loading Spinners In traditional web development, the user interaction loop is highly synchronous: the user clicks a button, a loading spinner appears, the browser makes an HTTP request to the API, and only when a successful response returns does the UI update. For a heavy form submission, a loading state is necessary. But for micro-interactions—like starring a repository, checking