У всех есть JavaScript, да?

Пользователь набрал в браузере URL веб-приложения.
Страничка загрузилась?
«Ни у одного пользователя нет JS, пока не скачались скрипты» — Джейк Арчибальд
HTTP-запросы получения скриптов выполнены успешно?
Если пользователь едет в поезде и соединение пропадает до того, как загрузились скрипты, то считайте, что JavaScript у него нет.
HTTP-запросы получения скриптов завершились?
Сколько раз вы сталкивались с тем, что мобильный браузер вечно грузил страничку и загружал её мгновенно после обновления?
Корпоративный файервол не блокирует JavaScript?
Я спрашиваю об этом потому, что многие из них именно так и делают. До сих пор.
Интернет-провайдер или мобильный оператор не изменяет скачиваемый JavaScript?
Sky случайно блокировал jQuery, Comcast добавляет рекламу в скрипты, и если вы с этим не сталкивались, то поезжайте в аэропорт и попробуйте использовать там wifi.
Пользователи не отключили JavaScript?
Люди всё ещё так делают.
У пользователя нет плагинов или расширений, которые вставляют скрипты или меняют DOM там, где вы этого точно не ожидаете?
Есть тысячи браузерных расширений. Вы уверены, что они ничего не делают с вашим JS?
CDN работает?
Суть CDN именно в том, чтобы быть надежным, но минута в месяц, когда он не работает всё же оставит без скриптов тех пользователей, кто в эту минуту загружают вашу страничку.
Браузер поддерживает JavaScript который вы написали?
Воспользуйтесь Can I Use, чтобы проверить.
Такого никогда не случается?
Кто-то на медленном компьютере.
Кто-то на медленном соединении.
Кто-то на телефоне, то есть на медленном компьютере с медленным соединением.
Кто-то застрял со старым браузером на компьютере, который он не контролирует — на работе, в школе, в библиотеке и т. д.
Кто-то пытается написать небольшую программу, которая взаимодействует с вашим сайтом, у которого нет API.
Кто-то пытается загрузить копию вашего сайта, чтобы почитать в офлайне.
Кто-то — это кэш Google или Архив Интернета.
Кто-то сломал графическое окружение в Linux и пытается выяснить, как его починить, загружая статьи с вашего сайта через браузер командной строки Elinks.
Кто-то внёс изменения в ваш сайт с помощью пользовательского скрипта, и это мешает вашему собственному коду.
Кто-то использует NoScript и видит на вашем сайте только пустой экран. Он настолько раздражён, что просто уходит, а не вносит ваш сайт в белый список.
Кто-то использует NoScript и вносит в белый список вас, но не один из десятков трекеров, которые вы используете. Позже вы случайно ставите скрипт в зависимость от трекера, и он таинственным образом больше не работает для таких пользователей.
Вы даёте критически важному скрипту название, связанное с рекламой, и он не загружается у десятков миллионов пользователей с блокировщиками рекламы.
Ваш CDN упал.
У вашего CDN есть адрес IPv6, но на самом деле он не работает (да, видели такое и у компаний стоимостью в миллиард долларов, и у федерального правительства). Заходит кто-то по IPv6, страница загружается, но JS вылетает по таймауту.
Ваш деплой идёт немного неудачно, и JavaScript повреждается.
Вы случайно использовали новую функцию, которая не работает в предыдущей версии самого популярного браузера. Выводится синтаксическая ошибка, и ни один из ваших сценариев не запускается.
Вы прямо вводите синтаксическую ошибку, и никто не замечает, пока она не попадает в продакшн.

Вы на все вопросы ответили «да»?

Тогда, да, JavaScript работает. Возможно.

Прогрессивное улучшение. Потому что иногда JavaScript просто не работает.

Стоит быть к этому готовым.