История про баг в Safari
Недавно решил поправить
Прописываю
Долго ищу как запустить Safari 15. Проблемное место нахожу достаточно быстро — это описанные через
Ищу дальше. Да, в Safari 15 есть такой баг! https://bugs.webkit.org/show_bug.cgi?id=236843 Поля классов в нём поддерживаются, но иногда не работают.
Остаётся понять последнее, почему
Мораль тут такая, что спецификации спецификациями, но тестировать надо на реальных браузерах.
Недавно решил поправить
browserslist
в проекте и оторвал правило Chrome >= 72
как явно для нас устаревшее. После релиза получаю всплеск жалоб от пользователей Safari 15 (их много!). Бегу проверять, вижу ошибку (самое смешное, что ошибка не проявляется при включенных девтулз), откатываюсь. Дальше мучительный поиск проблемы. Прописываю
Chrome >= 74
— бага есть. Chrome >= 73
— баги нет. Ясно, дело в полях классов. Начиная с Chrome 74
у нас есть полная поддержка публичных и статических полей классов, полифилл больше не нужен. Но в Safari 15
тоже полная поддержка! Can I Use врать не будет же. Где же баг и почему его не лечит правило Safari >= 15
?Долго ищу как запустить Safari 15. Проблемное место нахожу достаточно быстро — это описанные через
static
propTypes, в которые прилетает внешнее значение/ссылка. Вот это место Ищу дальше. Да, в Safari 15 есть такой баг! https://bugs.webkit.org/show_bug.cgi?id=236843 Поля классов в нём поддерживаются, но иногда не работают.
Остаётся понять последнее, почему
preset-env
не помогает? Ищем дальше. А вот оно как, в Babel заведена ишью уже больше года как. В комментах и @valya_reads_issue отметился. Как же лечить? Вот, например, так, как сделали в Графане. Прописать @babel/plugin-transform-class-properties
в плагины.Мораль тут такая, что спецификации спецификациями, но тестировать надо на реальных браузерах.