LoaderShip – CSS-Only Loaders
loadership.com
loadership.com
One of the things I notice with SPAs is that since the browser navigation does not occur normally, I get no indication from my browser that a link is loading, so the app is completely responsible of adding their own navigation indicators (which is uncommon to see in the wild).
Also sort of unrelated, I constantly see search forms that are "real time" but do not even abort previous requests, so to me it appears as no feed back, then once I finish typing I get a new set of results every second or so until it completes, making it extremely frustrating.
It isn't super-hard to fix this, but does take effort/time/money. For example, test on slow devices on slow connections. There are proxies that can throttle and introduce latency, or even let random connections timeout.
There's a catch-22 here though: doing this early in a product's life probably doesn't make sense as it's almost certainly better to focus your efforts on creating the product. But the longer you wait, the harder (== more time-consuming == more expensive) it is -- there's more architecture to change, there's complex page logic that eg didn't account for potential timeouts while doing a callback to validate something entered in a text box is unique, etc.
Another thing I've noticed a lot of sites are very poorly optimised for is latency. HTTP 1.1 is already poor in this regard due to the number of round trips required for setup, and when you start chaining these together latency becomes highly magnified, especially if they aren't on the same domain and you need a whole new HTTP setup for each step in the chain. Even with HTTP 1.1 this can be minimised by looking at the chain of requests and reorganising them to be less dependent on each other.
When your latency is in the single digits and it get's multiplied by 10, that's at most 100ms, now go to mobile and it's 400ms, now in the worst case a low bandwidth connection like ADSL (which will affect latency when the weight of each request is high) or a distant connection on a different continent and you can easily get into 10s of seconds.
I find this one the most annoying because the fundamental problem is poor utilisation of the connection, they don't even need to change the size of the payload, there are simply long periods when the browser is waiting to find out what to do next and the connection is mostly idle.
Do people even do that nowadays?
It's not even a problem with the concept itself (binary is/isn't loading), it's just bad implementations that have ruined it for me subconsciously.
loading = true
try {
await fetch(…)
} finally {
loading = false
}
…while the error bubbles up to some global handler. This is such a low hanging fruit for the user experience…These days, cutting edge loading UX means placeholders: https://uxdesign.cc/stop-using-a-loading-spinner-theres-some...
So often, I look at a loader and think "How long will it take? Is it actually still doing something? Or should I try to reload the page?".
Also, I often wonder why developers put tools like this on an extra domain instead of just putting it on a page or subdomain on their personal domain. Is there a reason for this that I am missing?
2. I think it makes it easier to get to your website without having to use search and it is easy to share like are we web yet dot org
It is worse than the other common problem of showing "no results" until the actual results load in.
Pretty sure this is a problem across many other development platforms. Odd that you singled out aspdotnet programmers.
I was talking about myself but didn't want to admit I am the problem. (:
Don't be so hard on yourself, even after 20+ years of .NET dev there are still things I can be a bit forgetful about, such as this UI annoyance.
Often there isn't much feedback that it is easy for the client-side to give, it doesn't get any feedback until the first byte arrives in response and the time between request and first byte is far more significant than the rest of the transfer.
For things like file uploads/downloads proper progress is very useful and it is irritating when that isn't present (uploading photos to facebook on a slow connection for one example). Client-side things like number crunching too.
One problem you see sometimes where things can be easily monitored and the user informed, is that developers neglect to test in less than ideal conditions. The process works within a second on their devices and connections so they don't think to include a progress indicator, it is only when someone tried the result on something slower (an old slow CPU over a patchy mobile connection) that this becomes apparent. Also more detailed progress information is on the “nice to have” list so gets passed over in favour of bug fixes and other feature updates.
> I often wonder why developers put tools like this on an extra domain instead of
I think just fashion/appearances. It may also be an SEO thing (short URLs doing better there?).
I agree generally but things like "How long should it take?" is more about your internet speeds / consistency, or very odd unforeseen issues on the back end, and frankly there's no amount of goofing around with even more code on your computer to determine local internet issues ... will tell me any number that makes sense.
The only time calculating "how long" is under ideal circumstances (and at that point nobody cares) or say very predictable large back end workloads. As soon as things get variable, I can't give you a reasonable number.
Sorry if that is a bit of a jumble of words and ideas there, I'm actually taking a break from troubleshooting this exact kind of issue. Customer has varying weird internet issues, wants to know "how long" ... bro wat?
Will give these a try for my next project
<progress></progress>
Works in every browser, and out-of-the-box is visually consistent with the rest of the system.[1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pr...
Windows, in the glassy Vista era, had a green one that would shimmer & slide a small faded green blob (for lack of a better word) across the bar.
(IMO better than what Explorer did for years, which was to show a definite progress bar, i.e., one with a shaded portion indicating some % completion … and then just lie about it. It would just fill the bar up with an exponential decay towards 100%, but never actually get there … and was really just an animation.)
Also awkward to use as a horizontal bar to show progress has to be somewhat wide, usually way wider than a spinner.
The lying thing is an issue, but I don't see much difference between a bar lying and a bar that ... by design is not a progress bar / not telling the truth?
In Chrome on Windows it shows a back-and-forth bouncing progressbar that is not at all similar to the system's indeterminate progress bar styling. I've never seen this used elsewhere, other than here in this Chromium implementation of <progress>. It's (mostly*) not objectionable but it definitely doesn't blend in.
* Suffers from a newbie trap: if you're going to bounce back and forth, you need to make sure there's a frame where the bouncer is all the way at the end of the control before the direction switches. This implementation doesn't, so sometimes the moment when it hits the edge of the progressbar happens between frames, so you miss the actual bump which looks disconcerting.
Probably because I’ve had such headaches with webpack within rails and would love something to make it disappear (yes I know there are newer solutions but each one breaks things in new and unique ways).
I've never heard the term "loader" being used here. Since a loader would be something that loads. These don't load anything, they just indicate that loading us happening. I typically call these "spinners" or sometimes "throbers" as that is what they do.
I would strongly recommend write "loading spinners" into one of the first sentences on the page.
I associated 'css-loader' with a Webpack loader for css: https://webpack.js.org/loaders/#styling
A lot of these terms are overloaded already. Android made it esp. bad by using "spinner" for a dropdown box, and then they used progress indicator for things that normally you'd use "spinner" for.
Ultimately a "spinner" isn't really a good term since not all loading indicators spin.
I might remember seeing the term "loader" in the jQuery days, but I haven't seen it used that way for a while.
Now if only there were a website for 'Oops', 'Something went wrong', 'Uh oh' and similar messages instead for (God forbid) actual informative error messages.
https://www.loadership.com/loaders/dot_circular_scale
Thanks for sharing!
I couldn't make the square go from bottom to top, or right to left, only top down or left to right:
https://www.loadership.com/loaders/block_grid_scale
270 degrees or 180 should achieve this effect but seem to be aliased instead...
Maybe load in the background or show some other content while a long operation is taking place?