- A browser extension has interfered with the site
- A spotty connection hasn’t loaded the dependencies correctly
- Internal IT policy has blocked dependencies
- WIFI network has blocked certain CDNs
- A user is viewing your site on a train which has just gone into a tunnel
- A device doesn’t have enough memory available
- There’s an error in your JavaScript
- An
async
fetch request wasn’t fenced off in atry
catch
and has failed - A user has a JavaScript toggle accidentally turned off
- A user uses a JavaScript toggle to prevent ads loading
- An ad blocker has blocked your JavaScript from loading
- A user is using Opera Mini
- A user has data saving turned on
- Rogue, interfering scripts have been added by Google Tag manager
- The browser has locked up trying to parse your JS bundle
That’s just a quick list of things I thought of on the top of my head. I could probably list off a bunch of others, but 15 items shows you how likely it is JavaScript will not be available, or available in a limited fashion.
Makes sense to build with progressive enhancement, right?
Stuart Langridge made this really handy flow that does a great job of visualising all the problems that will happen.