As we move more and more into either a SPA world or islands of AJAX (remember that word?) loaded content, developers (me too? maybe) are doing a horrendous job of letting users know something is happening.
Tell Them!
tl;dr; Let them know something is happening if there's any delay in something happening (usually there is.
This is not about how to do it, but the fact that you're not even considering the users. Have you not been there?
When I mentor new developers getting into programming, especially on the front-end, I always say: “Pretend you are them. What would you like?” For example, if you have a page that shows notes. But when there aren't any notes, you do something like:
You might as well say:
Which may be obvious. Or maybe not. Users are terrible at figuring things out. So, instead do this:
Help them out. But back to what's going on…
So, if I click a button, tell me I clicked it - let me know. Disable it. Change the text. Add a spinner. Do something! So, I am not wondering: did I miss? Is the site dumb (yes, obvs)? Should I do it again? (don't refresh or we'll ship you two items is a crazy message)
If your page loads instantly - YAY SEO & GOOGLE SCORE🤜🤛!!! but now you go get the content, let me know you're getting it. Pager actions, loading page 2? Clear the items so I don't think these are the items for page 2 that look an awful lot like page 1…oh, wait there's page 2 💩.
Let your users know
Just let them know you're doing something. Be nice. If you're afraid of flashes of changes because your site is fucking fast and latency would never exist (you're wrong), then add a 2 second delay to start the animation or messaging or whatever you go with. Locally, when using Blazor (you know, the internet trolls' beat up doll for a latency laden lackey) it is so fast that swaps can be jarring. So, do some CSS animation with a delay to start. CSS is so good these days. Wait 1 second and you finish before that, it never happened.