Почему сайт работает в Chrome, но не в Safari — и почему Chrome на iPhone тоже Safari

Сначала одна неожиданная вещь, которая сэкономит тебе час. Если баг есть у друга в Chrome на iPhone, но нет у тебя в Chrome на ноутбуке — это всё равно баг Safari.
На iPhone почти все браузеры работают на движке Safari — WebKit. Так устроены правила Apple: Chrome, Firefox и Яндекс Браузер на iOS — это свой интерфейс поверх того же движка. Исключение появилось только в ЕС, и большинство браузеров им пока не пользуются.
Значит, тестировать «на айфоне» — это тестировать WebKit. Дальше — три причины, на которые новички натыкаются чаще всего. Начнём с самой частой.
Причина 1. В Safari ещё нет этой функции
Симптом: в консоли TypeError: ... is not a function или undefined is not an object. На новом Mac всё работает, а у части пользователей — нет.
Safari обновляется вместе с операционной системой. Кто не обновил iOS, сидит со старым Safari. А ИИ охотно пишет код на самых свежих функциях — тех, что в Chrome появились недавно.
Как проверить. Возьми название функции из ошибки и найди его на caniuse.com или на MDN. Смотри строку Safari и Safari on iOS. Если там версия новее, чем у пострадавшего, — нашёл.
Как починить.
- Если функция почти везде есть — добавь проверку и запасной путь:
if ("share" in navigator) { ... }. - Если без неё никак — подключи полифил пакетом из npm.
- Если ошибка не
is not a function, аSyntaxError— это новый синтаксис. Тогда нужен не полифил, а настройка сборщика: в Vite этоbuild.target.
Причина 2. Safari стёр данные пользователя через неделю
Симптом: «меня разлогинило», «сбросились настройки», «пропала корзина». Только у пользователей Safari и только у тех, кто давно не заходил.
Это не баг, а защита приватности Safari — Intelligent Tracking Prevention. Если человек 7 дней пользуется браузером, но не заходит на твой сайт, Safari удаляет всё, что сайт записал из JavaScript. Это localStorage, IndexedDB и cookie, созданные через document.cookie. А такие cookie живут максимум 7 дней, даже если ты поставил срок в год.
Как проверить. Посмотри, где хранится токен входа или корзина. Если пишешь их через localStorage.setItem или document.cookie — это оно.
Как починить.
- Вход храни в cookie, которую ставит сервер заголовком
Set-Cookie, с флагамиHttpOnlyиSecure. На такие cookie недельный лимит не действует. - Важные данные — корзину, черновики, настройки — сохраняй на сервере, а в браузере держи только копию для скорости.
- Исключение: если человек добавил твой сайт на экран «Домой», данные живут дольше.
Причина 3. Дата в «неправильном» формате
Симптом: вместо даты Invalid Date или NaN, сортировка по дате сломана. В Chrome всё нормально.
Чаще всего виноват такой код:
new Date("2026-11-01 10:00:00") // формат с пробелом
Стандарт JavaScript обязывает браузеры понимать только строгий формат ISO. Всё остальное — на усмотрение браузера. Chrome щедрый и понимает почти всё. Safari исторически отвечал на такое Invalid Date. Полагаться на щедрость нельзя.
Как проверить. Найди в коде new Date("...") и Date.parse со строками. Есть пробел вместо T, точки или слэши — подозреваемый.
Как починить. Приводи строку к ISO с буквой T: "2026-11-01T10:00:00". А ещё лучше — получай с сервера сразу ISO-строку с часовым поясом в конце, например Z.
Мелочи, которые выглядят как поломка
Отдельный класс — не ошибки в консоли, а «вёрстка съехала только на айфоне». У нас есть разборы самых частых случаев:
- полный экран 100vh вылезает за край;
- поле ввода само увеличивает страницу;
- контент залезает под «чёлку» — тогда смотри про безопасную зону.
Как тестировать Safari без Mac
Тебе не нужен Mac, чтобы поймать большинство таких багов. Playwright умеет запускать движок WebKit на Windows и Linux:
pnpm dlx playwright install webkit
pnpm dlx playwright open -b webkit https://твой-сайт.com
Откроется окно на том же движке, что и Safari, с консолью. Это не идеальная копия айфона, но причины 1 и 3 он ловит. Для настоящего iPhone пригодится друг с телефоном или облачные сервисы с реальными устройствами.
Почему Apple так делает?
Единый движок на iOS — правило App Store. А удаление данных — защита от слежки рекламных скриптов, которые тоже хранят метки в localStorage. Под раздачу попадают и честные сайты.
Как увидеть консоль Safari на iPhone?
Нужен Mac: включи на iPhone «Веб-инспектор» в настройках Safari, подключи кабелем и открой меню «Разработка» в Safari на Mac. Без Mac — используй WebKit через Playwright из примера выше.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





