Странные API, которые построили интернет: уроки для разработчиков

Странные API, которые построили интернет: уроки для разработчиков

Июн 25, 2026 web-development browser-apis history-api frontend-development backward-compatibility single-page-applications javascript web-standards developer-experience

Странные API браузера: почему pushState принимает лишний параметр

Поиграем? Назовите самое странное API браузера.

Если вы фронтендер, скорее всего вспомнили canPlayType(). Этот метод возвращает три значения: пустую строку («не поддерживается»), «вероятно» или «возможно». Какое-то вероятностное гадание, честно говоря.

Но есть кое-что ещё более показательное. Встречайте History.pushState() — настоящий памятник вебу, который не ломает старый код.

Вызывается он с тремя параметрами: state, title и url. State-объект понятен — хранит данные для восстановления при нажатии «назад». URL обновляет адресную строку без перезагрузки страницы.

А вот параметр title? Его просто игнорируют. Все браузеры без исключений отправляют его в /dev/null.

Так зачем он вообще нужен?

В 2008 году, когда API только появилось, кто-то решил: пусть приложения ставят свой заголовок для каждой записи в истории. Типа, SPA показывает «Панель управления», а в истории браузера лежит «Аналитика». Звучало логично.

Но разработчики браузеров быстро смекнули: будет путаница. Пользователь добавит страницу в закладки, а потом браузерные вкладки показывают одно, а закладка — другое. Разбираться с этим никто не хотел.

И они просто перестали использовать параметр. Но проблема: тысячи сайтов уже написали код с тремя аргументами. Убрать параметр — сломать прод. Сделать необязательным — сломать существующие вызовы pushState(state, url).

Поэтому в спецификации поступили изящно: параметр переименовали в unused и написали в документации, что он ни на что не влияет.

Вот она, изнанка веба. Обратная совместимость важнее почти всего. Веб будет выворачиваться наизнанку, лишь бы код 2008 года работал в современных браузерах.

Именно эта философия — почему мы в NameOcean продвигаем статические сайты и проверенные технологии. Когда вы делаете что-то долговечное — медиаархивы, документацию, лендинги — стабильность ванильных веб-технологий это не ограничение, а преимущество.

То же самое касается выбора регистратора доменов или хостинга. Хочется компании, которая понимает долгосрочную игру. Веб никуда не денется, и технологии, на которых вы строите сегодня, должны работать через десять лет.

Урок для разработчиков и стартаперов: иногда «неправильное» решение становится постоянным не потому, что оно верное, а потому что слишком много чего от него зависит. Это не баг веба — это фича, благодаря которой миллионы сайтов работают без сбоев.

В следующий раз, когда встретите странное API или deprecated-параметр, вспомните: кто-то когда-то принял решение, и теперь оно вмуровано в фундамент веба. Уважайте эту странность. Она держит всё в рабочем состоянии.

Read in other languages:

BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN