IT Капибара
184 subscribers
159 photos
20 videos
5 files
754 links
Авторский блог о нелегкой жизни в айти
Download Telegram
Forwarded from Cross Join - канал о разработке (Anton Okolelov)
React Native полностью переделан

После 6 лет разработки команда React Native представила полностью переписанную архитектуру фреймворка (0.76) – самое значительное обновление с момента создания React Native. Это результат масштабной работы над улучшением производительности, стабильности и возможностей платформы.

Ключевые изменения

Новая версия обеспечивает полную поддержку современных возможностей React, включая Suspense, Transitions и автоматический батчинг. В React Native наконец появился полноценный useLayoutEffect – теперь работа с лейаутом стала синхронной и предсказуемой. Это позволяет корректно позиционировать элементы интерфейса без промежуточных состояний и визуальных артефактов.

Улучшение производительности

Мост между JavaScript и нативным кодом полностью удален. Коммуникация теперь происходит напрямую через JavaScript Interface (JSI), что существенно ускоряет работу приложения и его запуск. Новый рендерер может обрабатывать несколько деревьев компонентов одновременно в разных потоках с разными приоритетами. Это позволяет прерывать низкоприоритетные обновления для обработки пользовательского ввода, обеспечивая отзывчивость интерфейса даже при сложных вычислениях.

Технические улучшения

Система нативных модулей была полностью переработана. Теперь доступен синхронный доступ к нативным интерфейсам с полной типобезопасностью между JavaScript и нативным кодом. Появилась возможность писать кроссплатформенный код на C++, который работает на всех поддерживаемых платформах: iOS, Android, Windows и macOS. Модули загружаются лениво, что значительно сокращает время запуска приложения и потребление памяти.

View Flattening, ранее доступный только на Android, теперь работает и на iOS благодаря общему C++ рендереру. Эта оптимизация автоматически упрощает глубокие деревья компонентов, улучшая производительность рендеринга.

Проверено в продакшене

Новая архитектура уже активно используется в крупных приложениях: Facebook, Instagram, Expensify, Kraken и BlueSky. Facebook и Instagram для Meta Quest также построены на новой архитектуре. Это демонстрирует её готовность к применению в проектах любого масштаба и сложности.

Процесс миграции

Большинство приложений смогут обновиться с тем же уровнем усилий, как и при обычном релизе. Более 850 популярных библиотек уже поддерживают новую архитектуру, включая все библиотеки с более чем 200 тысячами еженедельных загрузок. Благодаря автоматическому слою совместимости со старой архитектурой, миграция может быть постепенной – нет необходимости переписывать всё приложение одновременно.

Популярные библиотеки, такие как react-native-mmkv и Reanimated, уже получили значительные улучшения от перехода на новую архитектуру. MMKV стал полностью кроссплатформенным C++ модулем с улучшенной типобезопасностью, а Reanimated 4 получил возможность управлять анимациями и лейаутом в разных потоках.

Дальнейшее развитие

В планах команды React Native – улучшение встроенных компонентов и расширение поддержки современных веб-стандартов. Event Loop теперь работает в соответствии с веб-спецификациями HTML Standard, что в будущем позволит использовать такие API как microtasks, MutationObserver и IntersectionObserver.

Практическая информация

Совместимость используемых библиотек можно проверить на reactnative.directory. Официальная документация содержит подробное руководство по миграции. При возникновении проблем всегда есть возможность отключить новую архитектуру через конфигурацию проекта.
❤3
😁13❤2🔥1
Forwarded from Легушенька ((͡° ͜ʖ ͡°) pepega salat)
😁13❤3🤯2💅2👍1🔥1🤡1
Охренеть. CSS Nesting уже нативно доступен во всех современных браузерах. Кажется, пора прощаться с препроцессорами.

Сами посмотрите: https://caniuse.com/css-nesting
Как использовать: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_nesting/Using_CSS_nesting
❤10🤡3
Если вы когда-нибудь задумывались о создании собственного языка программирования, вам предстоит изучить множество важных концепций: токенизацию, парсинг, построение абстрактного синтаксического дерева и тд.
Но эта статья может послужить хорошей отправной точкой:

https://isuckatcs.github.io/how-to-compile-your-language/parsing.html
❤9
Год назад админ выступал на #HolyJS. Это был потрясающий опыт.
В этом году тоже загляну туда😁
❤11
Как и обещал, выкладываю презенташку и кучу полезной инфы для самостоятельного изучения🧐


Дефолтные стили хрома:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/resources/html.css

Глубокая статья о процессе композиции от команды разработчиков Хрома:
https://sking7.github.io/articles/48074838.html

Статья из документации Хрома о работе компонента Chrome Compositor:
https://chromium.googlesource.com/chromium/src/+/master/docs/how_cc_works.md

Ооочень много информации о рендеринге в Хроме - отсюда рекомендую почитать Compositor Property Trees и Life of a Pixel:
https://www.chromium.org/developers/design-documents/chromium-graphics/

Как смотреть слои в DevTools:
https://dermeck.github.io/composite-layers/#:~:text=Show%20Layer%20Borders%20in%20Rendering,the%20layers%20on%20the%20screen.

Гайд по выделению анимации в отдельный слой:
https://web.dev/articles/animations-guide?hl=en
https://web.dev/articles/stick-to-compositor-only-properties-and-manage-layer-count?hl=en

Немного общих статей про CRP
https://web.dev/learn/performance/understanding-the-critical-path?hl=en
https://alistapart.com/article/from-url-to-interactive/

Этап Paint
https://www.smashingmagazine.com/2016/12/gpu-animation-doing-it-right/

Layout Tree
https://web.dev/articles/critical-rendering-path/render-tree-construction?hl=en
👍9❤4🤝1
Выступил на Саратовском IT-Митапе. Да, мы дождались возрождения Саратовских конференций!
Рассказывал о рендеринге веб-страниц на гарфической карте компьютера.
Уже запланировал второй доклад на митап 12 апреля - на этот раз расскажу про рендеринг видео в браузере.
Приходите😁

https://rutube.ru/video/b39e1ef67ab5a8fed5118081dc085189/?r=plemwd
❤13👍6❤‍🔥2
😁9❤3👍1
😭8❤3
😁7👍3👎2🤣1