4.2Kпросмотров
23 мая 2024 г.
📷 ФотоScore: 4.6K
React compiler проклинает mobx Все конечно уже успели обсудить анонс реакт-компилера, но одна вещь привлекла моё внимание: упоминание проверки на несовместимость библиотек Вернее, библиотеки При попытке поставить компилер в проект с мобиксом, react-compiler-healthcheck выдаст в cli сообщение о проблемах с пакетом. Мне стало интересно, каким образом компилер проверяет на совместимость, может находит импорты различных DON_NOT_USE_OR_YOU_WILL_BE_FIRED?
Оказалось всё гораздо проще, есть чёрный список несовместимых библиотек. Чёрный список из одного пакета. Mobx.
По моему, получить персональное проклятие от тимы реакта — это довольно почётно!
Так что же послужило причиной персональных санкций в отношении проекта? Причина в хоке observer/useObserver. Этот метод работает оборачивая компонент в магическую сущность, которая автоматически определяет, какие обсерваблы используются в компоненте и вручную вызывает ререндер при их изменении. То есть, вместо того, чтобы сделать хук в духе useStore как все остальные стейт-менеджеры, в мобиксе решили сделать рационализацию и поставить всю концепцию реакта на бок. Очевидно, что тима реакта осталась от такой идеи не в восторге. Пакет оказался достаточно популярным, а эвристики компилера достаточно слабыми, чтобы получить единственный на всю экосистему персональный бан. Можно предположить, что в дальнейшем такая участь постигнет все проекты, которые захотят оборачивать реакт-компоненты во что-то магическое: либо оптимизации от реакта, либо от библиотеки, теперь вопрос поставлен ребром.
Учитывая, что пока реакт компилер не имеет версии под swc и крупнейший проект экосистемы nextjs его использовать не будет, то есть время с этим что-то сделать Для мобикса это грозит полной сменой подхода к реакт-биндингам
Но мне если честно сложно представить, что можно сделать в такой ситуации и как они будут выбираться из персонального бана даже если всё переделают как надо