i absolutely hate how the modern web just fails to load if one has javascript turned off. i, as a user, should be able to switch off javascript and have the site work exactly as it does with javascript turned on. it’s not a hard concept, people.
but you ask candidates to explain “graceful degradation” and they’ll sit and look at you with a blank stare.
i, as a user, should be able to switch off javascript
Webdevs don’t care. They were vibe coding even before AI became a thing. It’s my personal opinion that they should not deserve to be called “developers”.
I only figured this out like, a month ago! I only became a frontend dev when I got shifted into a new team at work, so I came in with zero prior knowledge and have been using exclusively React and Typescript since Day 1. Didn’t even know how to add a css class to something or what tags beside <div> html has until I started a personal project, ran into performance issues (while hosting it in a shitty aws free tier micro t2 lol) and started investigating why my code loads 3MB of Javascript every time I refresh the page.
I’m working on getting better at it in my personal project, might even try kicking React out entirely and seeing whether just Laravel Blade + Livewire already does everything I need. No way that I’m rocking the boat at work tho.
it’s not a hard concept, people.
Depends. Webapps are a thing, and without JavaScript, there isn’t much to show at all.
Websites that mostly serve static content though? Yeah. Some of them can’t even implement a basic one-line message that asks to turn on JavaScript; just a completely white page, even though the data is there. I blame the multiple “new framework every week” approach. Doubly so for sites that starts loading, actually shows the content, and then it loads some final element that just cover everything up.
It depends. Inertia.js can pre-render pages server side, so you don’t need JavaScript to see the content.
React can do SSR, too. The issue is that some sites actually means nothing if not dynamic. It makes sense to have SSR and sprinkle some JS on the client for content delivery, no issue there.
It is substantially harder to make a modern website work without JavaScript. Not impossible, but substantially harder. HTML forms are not good at doing most things. Plus, a full page refresh on nearly any button click would be a bad experience.
The web isn’t just HTML and server side scripting anymore. A modern website uses Javascript for many key essentials of the site’s operation. I’m not saying that’s always a good thing, but it is a true thing.
It is no longer a reasonable expectation that a website work with JavaScript disabled in the browser. Most of the web is now in content management systems that use JavaScript for browser support, accessibility, navigation, search, analytics and many aspects of page rendering and refreshing.
The web isn’t just HTML and server side scripting anymore. A modern website uses Javascript for many key essentials of the site’s operation.
which is why the modern web is garbage
Graceful degradation - pfft.
Progressive enhancement - yeah!
this is the way
Graceful degradation is for people that are angry about the future. Progressive enhancement is for people that respect the past. And it’s stupid to not hire someone only because they don’t know a term that you know.
Are you lost? I didn’t talk about hiring practices.
Love it when a page loads, and it’s just a white blank. Like, you didn’t even try. Do I want to turn JS on or close the tab? Usually, I just close the tab and move on. Nothing I need to see here.
React tutorial are like that. You create a simple HTML page with a script and the script generates everything.
I had to do a simple webpage for an embedded webserver and the provider of the library recommended preact, the lightweight version of react. Having no webdev experience, I used preact as recommended and it is a nightmare to use and debug.
Developers are still familiar with the concept, there are even ideas like server side rendering in react to make sites more SEO friendly.
I think the biggest issue is that there is very little business reason to support these users. Sites can be sued over a lack of accessibility and they can lose business from bad ux, so they are going to focus in those two areas ten times out of ten before focusing on noscript and lynx users. SEO might be a compelling reason to support it, but only companies that really have their house in order focus in those concerns.
Ibuild pretty feature heavy CMS type sites, and though I always try to go HTML only first (I’m quite old school still), it’s almost impossible to escape JavaScript
Having said that, the entire “my website won’t even show anything on the landing page without JavaScript” should die a quick death already
Yeah, it should also work without browser exactly as it does with a browser
I don’t know how you’re gonna get everything to work without JavaScript. You can’t do a lot of interactivity stuff without it.
I’ve had news articles not work without javascript. (unpaywalled as well).
Do “the stuff” on the server, only serve HTML. In my first job we build a whole webshop with very complex product configurators that would today even run perfectly fine in dillo.
It’s also pleasant for the brain, to think of a website in terms of resources/locations and variables. Only what a GET request needs.
All those complaints - they are in essence about herds of web developers who get paid to do roughly the same work again and again, and use frameworks upon frameworks to not get depressed from that. And complain that if they’d do that stupid work thoroughly, they’d kill themselves.
Gemini protocol taken as it is probably isn’t enough for commercial purposes, but the part about simple markdown-like pages and only determining semantics of style by the page creator, not how it will be displayed, - it’s correct IMHO. Let the user pick the theme or the CSS stylesheet they prefer to display text, like with e-books. Let the service present structure.
(Except I think gemtext not allowing tables is a mistake.)
That also means that all kinds of validation and blinking buttons and such won’t have to be implemented by web developers.
It’s worse than this even. I have an old Raspberry Pi 3B+ (1G) that I got in 2018. I hooked it up the other day to mess around with it, it’s been maybe 2 years since I did anything with it, ever since I got a Pi 4 (4G). 1 gigabyte of RAM is now insufficient to browse the web. The machine freezes when loading any type of interactive site. Web dev is now frameworks piled on frameworks with zero consideration for overhead and it’s pure shit. Outrageous.
its also cdn on cdn nobody does local libraries anymore
You want to see terrible try looking at the network tab in inspect element
“Modern” pages load hundreds of large assets instead of keeping it smaller and clean.
It’s encouraged to use things with a supply chain easily poisoned.
There’s the issue of a Heisenberg effect here - when a spectator is present, like a huge audit of something, nothing happens, and when a spectator isn’t present, there’s nobody to look every day in piles of constantly changed crap to detect if something happens.
Also not even easily poisoned, but easily denied. It’s about control. The militaries and producers of complex industrial equipment were the first to start doing this, however nuts that may seem. It’s useful to sell your allies a system they can use, but only when allowed. Or sell industrial equipment that can’t be smuggled to a third country without your permission.
These things - they are legal even morally, but at some point in discussion of them common good might arise as a thing in itself, separate from morality. For the common good such systems of control are clear poison.
Nonono, the JS does the money thing before you get your content fix. It’s by design.
This is correct. Web dev is told to make sure ads load before content. They don’t want users that don’t generate profits.
So in this example, what’s the underling issue, shitty business requirements or JavaScript?
Yes.
You understand if most people stopped using JavaScript they would just find other ways to serve you ads, right? You can already be tracked without JavaScript.
Just because there are other ways to serve you ads does not at all mean we should not be able to not only stop at least one, but also the one which is most dangerous since it literally allows for RCE on all clients. by design.
The browser is supposed to be a sandbox environment for RCE. That’s why the sandbox part is important. Maybe instead of removing the RCE, we can lock down the sandbox better and reduce the amount of information advertisers can collect.
If you remove code execution in the browser, then many websites will need to ship desktop apps instead. So now you’ve bypassed the browser sandbox altogether and that application can do much more damage.
I’m not arguing that all websites need to execute in the browser, but without code execution in the browser, you remove a whole class of apps and the web becomes much less useful.
Edit: calling it RCE is also kinda obnoxious because at that point you might as well call everything RCE. By that definition, if I push a docker image update, do I have RCE inside any container pulling that image? If there’s a way to break out of docker or web browser sandboxing, by all means call it RCE, but this is not that.
Maybe instead of removing the RCE, we can lock down the sandbox better and reduce the amount of information advertisers can collect.
By all means but then someone do it, because it’s 2025 and even Firefox sends all this information that is absolutely not needed to show a webpage. It’s at least 25 years late by this point.
If you remove code execution in the browser, then many websites will need to ship desktop apps instead.
Which in quite more than just some cases would be good, precisely because some things should be native programs instead of requiring that the web browser basically provides all the tasks of the OS.
Blame the ui frameworks like react for this. It’s normalized a large cross-section of devs not learning anything about how a server works. They’ve essentially grown up with a calculator without ever having to learn long division.
PE from server rendering only to a full interactive SPA in the browser is really not trivial both for frameworks and app devs
there are a handful of frameworks that support it fairly ergonomically now but it’s a discipline that takes time and effort
also disabling javascript is a tiny minority use case
Not all frameworks are bad
The problem is the devs/owners not understanding basic fundamentals. They could see a major financial benefit if they make the page snappy and light but apparently no one at these companies realizes that.
I, as a user, should be able to switch off javascript and have the site work exactly as it does with javascript turned on.
I mean… many websites rely on JavaScript, so it’s kind of obvious that they don’t work without it. If it would work without JS in the first place, the website wouldn’t need to embed any JS code.
website wouldn’t need to embed any JS code.
other than the 20 trackers and ad scripts.
so it’s kind of obvious that they don’t work without it.
Uhm, the web is to share content, not to play JS. That’s what graceful degradation is for: the primary usecase should still work, even if the secondary or tertiary doesn’t.
Uhm, the web is to share content, not to play JS
The web doesn’t have a single unified purpose. Even if I hate it as a programming language, JavaScript if the basis almost all client-side browser operations build upon.
Sure, a simple website which just contains information works without it, but if you design a website in which the client does anything interactively and not everything should be processed server-side, it’s not really possible. No matter if you’re talking about a web game, something like Google Earth or an in-browser editor.
All examples that work worse than a native software.
many websites rely on JavaScript,
which is the problem that most people don’t understand the concept of graceful degradation
There’s a difference between “wouldn’t work” and “wouldn’t work as nicely”. That’s what this post is about :D Most websites would still work in the same basic way without js.
Why would someone spend tons of time on something that isn’t needed? Only a few people even know how to turn off JavaScript and chances are they will just turn it back on since nothing works.
OP really muddled the waters by writing:
exactly as it does with javascript turned on
That’s obviously impossible and wouldn’t be degraded.
exactly as it does aka forms submit, logging on works, you can achieve the same thing
It’s either exactly the same, or it’s gracefully degraded. You’re asking for two opposite things at once.
For what it’s worth I support the notion that fundamental functionality should be supported without Javascript, with good old form submissions.
But I also recognise that you can’t get the exact same behaviour without javascript initiated background GETs and POSTs. Easy example: A scrollable map that streams in chunks as you move it.
form validation is dogshit without js
Most websites out there could work fine without JavaScript. They rely on it because they can’t be bothered to be better.
What would they do instead?
https://developer.mozilla.org/en-US/docs/Glossary/Graceful_degradation
But honestly, all i ask is that buttons still work, forms get sent, if you use a more basic browser.
It is a lot simpler to just require JavaScript. It is widely supported and is default enabled on all platforms and browsers.
Sending forms is a built-in functionality and you say it’s simpler to hack your way around it.
I mean, sure, if your framework does it this way. But it shouldn’t. Note that as a bug.
When I ask a server for a page, it should give me content, not a shitty script and a note that says “here, you do it.”
That isn’t how it works
You are viewing a product
Sorry about your stroke
How about serving a proper HTML that contains the data they want to display? Instead of an empty page that tries to load the data via JavaScript.
I miss when JS was just a silly thing you could use to add trails to the mouse cursor to impress anyone who stumbled onto your geocities page
They could just add a text box that says please enable JavaScript.
Have you ever tried building a modern page without JavaScript.
You can do a lot of things with HTML5 and CSS. It just is very complicated and painful. It isn’t intuitive and the behavior will vary across browsers. What could be a little JavaScript turns into a ton of write only CSS.
Yes, that’s my job.
The point isn’t to emulate the JavaScript functionality somehow. The point is to simply fetch the desired information as a new page load when necessary. The page should work in lynx.
the website wouldn’t need to embed any JS code.
That’s the point.














