V-Build: Рішення для побудови та розгортання вашого React-проекту в один крок

Квітень 2025 — команда React Native випустила нову версію 0.79, яка приносить значні покращення продуктивності, модернізовані інструменти та вдосконалення, що роблять життя розробників простішим. Якщо ви працюєте з кросплатформенними додатками для iOS, Android або інших платформ, React Native 0.79 привносить важливі оновлення, що спрощують розробку і покращують продуктивність додатків. Давайте детальніше розглянемо нововведення та чому вони важливі.

Metro отримує суттєвий приріст швидкості

Одним з головних покращень у React Native 0.79 є оновлення до Metro 0.82, JavaScript бандлера для React Native проектів. Metro тепер використовує відкладене хешування, що дозволяє зменшити час холодного старту до 3x, особливо для великих проектів і монорепозиторіїв. Якщо ви колись чекали, поки команда yarn start запустить проект, це оновлення значно полегшить ваше щоденне використання і CI-пайплайни.

Metro 0.82 також стабілізує підтримку полів exports і imports у файлі package.json, що забезпечує чистіше і стандартизоване вирішення модулів. Це полегшує інтеграцію сучасних npm-пакетів і робить React Native більш сумісним з екосистемою JavaScript.

Чому це важливо: Швидший запуск Metro дозволяє зекономити час і зосередитись на кодінгу, що особливо важливо для команд з великими кодовими базами, оскільки це дає значні прирости продуктивності.

Час запуску Android скорочено

React Native 0.79 вносить оптимізацію для Android-додатків — непаковані JavaScript-бандли всередині APK. Раніше розпакування бандлів при запуску додатку створювало затримки. Тепер, завдяки непакованим бандлам, React Native 0.79 зменшує час time-to-interactive (TTI) на 400 мс (12% покращення) на пристроях середнього класу, таких як Samsung A14.

Хоча це трохи збільшує використання пам'яті на пристрої, розмір APK залишається незмінним, оскільки файли стискаються під час передачі. Розробники можуть налаштувати це за допомогою app/build.gradle, щоб збалансувати пам'ять та продуктивність:

react {
enableBundleCompression = true // Менше пам'яті, повільніший старт
enableBundleCompression = false // За замовчуванням, швидший старт, більше пам'яті
}

Чому це важливо: Швидший запуск додатків покращує досвід користувачів, особливо на бюджетних пристроях, де кожна мілісекунда має значення.

JavaScriptCore переходить до спільноти

React Native 0.79 розпочинає переведення JavaScriptCore (JSC) на підтримуваний спільнотою пакет @react-native-community/javascriptcore. Це дозволяє відокремити оновлення JSC від циклу релізів React Native, що дає змогу впроваджувати нові оновлення швидше, а також надає доступ до новітніх функцій JavaScript і зменшує розмір основного фреймворку.

Вбудований JSC залишається доступним у 0.79, але планується його поступове видалення в майбутніх версіях. Розробники можуть вже зараз перейти на спільноту, слідуючи інструкціям у README.

Чому це важливо: Підтримка JavaScriptCore спільнотою означає частіші оновлення і більшу гнучкість, що дозволяє підтримувати додатки React Native на передовій лінії у галузі продуктивності JavaScript.

iOS Native Modules отримують оновлення на Swift

React Native 0.79 покращує реєстрацію Native Modules на iOS, вводячи підхід, сумісний із Swift, що робить реєстрацію простішою та потужнішою.

Прощавай, Remote JS Debugging

React Native 0.79 офіційно відмовляється від Remote JS Debugging через Chrome, функції, яка була виведена з використання з версії 0.73. Замість цього команда рекомендує використовувати React Native DevTools або Expo DevTools Plugins для сучасного і надійного налагодження. Ці інструменти краще інтегровані з новою архітектурою і надають можливості для перевірки компонентів, профілювання та стабільних брейкпоінтів.

Чому це важливо: Відмова від застарілих методів налагодження зменшує навантаження на підтримку та забезпечує стабільний досвід для розробників.

Внесок спільноти

React Native 0.79 включає понад 944 коміти від 100 учасників, що свідчить про силу відкритої спільноти. Окремі подяки заслуговують:

  • Marc Rousavy за покращення продуктивності запуску Android.
  • Kudo Chien та Oskar Kwaśniewski за роботу над пакетом JSC для спільноти.
  • James Lawson за поліпшення вирішення імпортів у Metro.
  • Rob Hogan, Alex Hunt та Riccardo Cipolleschi за їх роботу з Metro, налагодженням і реєстрацією iOS-модулів.

Чому це важливо: Жива спільнота означає, що React Native розвивається відповідно до потреб реальних розробників, а не теоретичних ідеалів.

Інші помітні оновлення

  • LogBox: Покращено підтримку стеку власника і відображення кодових фреймів для зручнішого налагодження помилок.
  • TextInput: Тепер підтримує властивість numberOfLines та виправляє аварії на Mac з Apple Silicon при запуску iOS-додатків.
  • Gradle: Додає підтримку кешування конфігурацій, що прискорює нативні побудови.
  • DevTools: Оновлено до React DevTools 6.1.1 для покращеної перевірки компонентів.

Для повного списку змін перевірте github.

Оновлення до React Native 0.79

Готові до оновлення? Використовуйте React Native Upgrade Helper, щоб порівняти зміни коду між версіями та полегшити міграцію. Якщо ви використовуєте Expo, майте на увазі, що SDK 53 (очікується навесні) ймовірно включатиме повну підтримку 0.79, але ви можете спробувати зараз через канарейкові релізи.

Будьте уважні до зламаних змін, особливо щодо налагодження та JSC. Тестуйте ретельно, особливо якщо ваш додаток залежить від власних Native Modules або сторонніх бібліотек.

Що далі для React Native?

React Native 0.79 будує на успіху попередніх релізів, таких як підтримка React 19 у 0.78 та нова архітектура за замовчуванням у 0.76. У майбутньому очікується, що команда зосередиться на:

  • Веб-узгодженості: Подальше поєднання React Native зі стандартами вебу.
  • Легший фреймворк: Продовження зусиль з модульності та оптимізації.
  • Частіші релізи: Менші, більш стабільні оновлення для полегшення оновлень.

З новою архітектурою, що тепер стабільна, спільнота також досліджує, що буде далі — можливо, глибша крос-платформенна узгодженість або нові основні компоненти.

Перекладено з: V-Build: One-Step Build and Deploy Solution for Your React Projects