React Native 0.87 та SwiftPM у 2026: Сучасний iOS Build та Питання для Співбесід
React Native 0.87 впроваджує експериментальну підтримку Swift Package Manager, усуваючи потребу в CocoaPods. Дізнайтеся про налаштування SwiftPM, автолінкування та підготовку до співбесід.

React Native 0.87, випущений 11 серпня 2026 року, впроваджує експериментальну підтримку Swift Package Manager (SwiftPM) для iOS білдів, що є першим кроком до усунення CocoaPods з проєктів React Native. Цей реліз також робить Strict TypeScript API стандартом за замовчуванням, постачає Metro 0.87 з удвічі швидшою генерацією source map та підвищує мінімальні вимоги до інструментарію до Node.js 22, Kotlin 2.0 та Android compileSdk 37.
Після деінтеграції CocoaPods виконайте npx react-native spm --deintegrate один раз. Проєкт потім автоматично перелінковує нативні залежності при кожному білді без необхідності виконувати pod install.
Swift Package Manager замінює CocoaPods для iOS залежностей
Підтримка SwiftPM у React Native 0.87 є опціональною та експериментальною. CocoaPods залишається менеджером залежностей за замовчуванням для production додатків. Шлях SwiftPM використовує ті самі попередньо скомпільовані XCFrameworks, які React Native вже публікує, тому додаткові завантаження бінарних файлів не потрібні.
Ключова перевага: проєкт на базі SwiftPM вимагає лише Xcode. Ruby, Bundler та CocoaPods більше не потрібні на машинах розробників або в CI пайплайнах.
# ios-swiftpm-setup.sh
# Крок 1: Перейдіть до директорії iOS
cd ios
# Крок 2: Деінтегруйте CocoaPods та згенеруйте посилання SwiftPM
npx react-native spm --deintegrate
# Крок 3: Відкрийте проєкт у Xcode та зберіть
open MyApp.xcworkspaceКоманда spm --deintegrate впроваджує посилання на Swift пакети в існуючий .xcodeproj замість заміни файлу проєкту. Налаштування підпису коду, фази білду та capabilities залишаються незмінними. Щоб скасувати зміну, виконайте npx react-native spm deinit.
Як працює автолінкування SwiftPM без pod install
Після початкового налаштування зміни залежностей запускають автоматичне перелінкування. Встановіть або видаліть нативний пакет за допомогою npm або yarn, потім зберіть. Проєкт виявляє зміни та повторно запускає автолінкування під час фази білду Xcode.
# dependency-workflow.sh
# Встановіть нативну залежність
npm install react-native-reanimated
# Білд запускає автоматичне перелінкування
npx react-native run-ios
# Не потребує pod installДля свіжих клонів та CI середовищ виконайте npx react-native spm один раз перед першим білдом. Це генерує файл Package.swift та вирішує залежності Swift пакетів.
Обмеження SwiftPM та готовність до production
Підтримка SwiftPM у версії 0.87 має важливі обмеження, що впливають на рішення про впровадження:
| Обмеження | Вплив |
|---|---|
| Підтримка бібліотек спільноти | Кожна бібліотека повинна надавати файл Package.swift |
| Стабільність команд | Прапори та згенерована структура можуть змінитися в 0.88+ |
| Конфігурація CI | Вимагає кроку npx react-native spm перед білдами |
| Документація | Обмежені ресурси для вирішення проблем |
Для production додатків CocoaPods залишається рекомендованим шляхом. Команди, що оцінюють SwiftPM, повинні створити прототип на окремій гілці та протестувати повне дерево залежностей перед прийняттям рішення про міграцію.
Готовий до співбесід з React Native?
Практикуйся з нашими інтерактивними симуляторами, flashcards та технічними тестами.
Breaking Change: Простори імен у Native Modules
React Native 0.87 впроваджує простори імен для нативних модулів. Модулі тепер повинні оголошувати унікальний простір імен для уникнення колізій між бібліотеками. Ця зміна вимагає оновлення нативного коду в існуючих модулях.
import { TurboModuleRegistry } from 'react-native';
import type { TurboModule } from 'react-native';
export interface Spec extends TurboModule {
multiply(a: number, b: number): number;
}
// Новий синтаксис з namespace у 0.87
export default TurboModuleRegistry.getEnforcing<Spec>(
'com.myapp.MathModule'
);Формат простору імен слідує конвенції зворотного домену (com.company.ModuleName). Існуючі модулі без простору імен продовжують працювати, але генерують попередження про застарілість.
Strict TypeScript API як стандарт за замовчуванням
Strict TypeScript API, впроваджений як опціональний у 0.86, стає стандартом за замовчуванням у 0.87. Ця зміна вимагає коректної типізації нативних модулів та компонентів, усуваючи поширені runtime помилки.
// До: м'яка типізація приймала некоректні props
<View style={{ backgroundColor: 123 }} />
// Після: Strict API вимагає коректних типів
<View style={{ backgroundColor: '#fff' }} />Проєкти, що мігрують з попередніх версій, можуть зіткнутися з помилками TypeScript. Більшість можна виправити, оновивши props до коректних типів або додавши explicit type assertions.
Metro 0.87: Удвічі швидші Source Maps
Metro bundler у версії 0.87 приносить значні покращення продуктивності. Генерація source map тепер удвічі швидша завдяки паралельній обробці та оптимізаціям пам'яті.
module.exports = {
transformer: {
// Нові опції в Metro 0.87
experimentalImportSupport: true,
inlineRequires: true,
},
resolver: {
// Швидше вирішення модулів
unstable_enableSymlinks: true,
unstable_enablePackageExports: true,
},
};Для великих проєктів ці оптимізації можуть скоротити час білду на кілька хвилин у release режимі.
Підвищені вимоги до toolchain
React Native 0.87 вимагає новіших версій інструментів:
| Інструмент | Мінімальна версія |
|---|---|
| Node.js | 22.x |
| Kotlin | 2.0 |
| Android compileSdk | 37 |
| Xcode | 16.0 |
| iOS Deployment Target | 15.1 |
Перед оновленням необхідно перевірити сумісність CI середовища та машин розробників.
Питання для співбесід: React Native 0.87 та SwiftPM
Наступні питання допомагають у підготовці до співбесід щодо найновіших функцій React Native.
Питання 1: Які основні переваги переходу на SwiftPM у React Native?
Зразкова відповідь: Основні переваги включають усунення залежності від Ruby та CocoaPods у середовищі розробки та CI пайплайнах. Проєкт на базі SwiftPM вимагає лише Xcode для збірки. Крім того, SwiftPM є вбудованим менеджером пакетів Apple, що означає кращу інтеграцію з екосистемою iOS та потенційно швидші часи вирішення залежностей.
Питання 2: Чому SwiftPM все ще експериментальний у 0.87?
Зразкова відповідь: Експериментальний статус пояснюється трьома основними обмеженнями: не всі бібліотеки спільноти ще надають файли Package.swift, API команд може змінитися в майбутніх версіях, а документація та ресурси для вирішення проблем обмежені. React Native Team рекомендує CocoaPods для production додатків до стабілізації підтримки SwiftPM.
Питання 3: Як працює автолінкування у SwiftPM порівняно з CocoaPods?
Зразкова відповідь: У моделі CocoaPods автолінкування вимагає виконання pod install після кожної зміни залежностей. У моделі SwiftPM автолінкування інтегровано у фазу білду Xcode — зміна залежностей npm/yarn автоматично запускає перелінкування під час наступного білду без додаткових команд. Виняток становлять свіжі клони та CI, де потрібно один раз виконати npx react-native spm.
Питання 4: Що означає Strict TypeScript API для існуючих проєктів?
Зразкова відповідь: Strict TypeScript API вимагає коректної типізації props компонентів та параметрів нативних модулів. Для існуючих проєктів це означає потенційні помилки компіляції TypeScript, які виявляють раніше приховані проблеми типізації. Більшість помилок можна виправити, оновивши некоректні типи або додавши explicit assertions. Це breaking change, але вона покращує якість коду та зменшує runtime помилки.
Питання 5: Як простори імен впливають на створення нативних модулів?
Зразкова відповідь: Починаючи з версії 0.87, нативні модулі повинні оголошувати унікальний простір імен у форматі зворотного домену, наприклад com.myapp.ModuleName. Ця зміна запобігає колізіям імен між різними бібліотеками, які можуть визначати модулі з однаковими назвами. Існуючі модулі без простору імен продовжують працювати, але генерують попередження про застарілість і повинні бути оновлені до наступного major релізу.
Міграція з 0.86 на 0.87
Процес міграції вимагає врахування кількох змін:
# Оновлення залежностей
npm install react-native@0.87.0
# Оновлення нативних проєктів
npx react-native upgrade
# Перевірка сумісності TypeScript
npm run type-checkНайпоширеніші проблеми міграції включають помилки TypeScript, пов'язані зі Strict API, та необхідність оновлення нативних бібліотек до версій, що підтримують новий простір імен.
Підсумок
React Native 0.87 є важливим кроком у модернізації екосистеми iOS. Експериментальна підтримка SwiftPM відкриває шлях до спрощення toolchain, усуваючи залежності від Ruby та CocoaPods. Strict TypeScript API покращує якість коду та безпеку типів. Покращення Metro прискорюють процес збірки.
Для команд, що планують впровадження, рекомендується залишатися на CocoaPods у production проєктах, одночасно тестуючи SwiftPM на окремих гілках. Підготовка до співбесід повинна включати розуміння відмінностей між моделями управління залежностями та практичний досвід роботи з новими функціями TypeScript.
Чи знайдеш ти помилку в React Native?
Справжній фрагмент коду, прихована помилка, одна спроба на день. Щоб спробувати, акаунт не потрібен.

Автор:
Anthony Fillion-MailletЗасновник SharpSkill
Fullstack-розробник понад 10 років. Керує SharpSkill і відповідає за все, що тут публікується.
Оновлено 3 вересня 2026 р.
Теги
Поділитися
Пов'язані статті

React Native 0.86 у 2026: Edge-to-Edge на Android, DevTools та Питання для Співбесіди
Повний гід по React Native 0.86 з підтримкою edge-to-edge для Android 15+, виправленнями KeyboardAvoidingView, новими DevTools та питаннями для технічної співбесіди.

React Native та TypeScript у 2026: Типобезпечна архітектура та питання співбесіди
Створення типобезпечних React Native додатків з TypeScript, Codegen, TurboModules та Strict TypeScript API. Охоплює патерни архітектури, типізовану навігацію, вимоги toolchain для 0.87 та питання співбесіди.

React Native 0.85 у 2026: Новий Backend Анімацій, Строгий TypeScript API та Питання для Співбесід
React Native 0.85 представляє Shared Animation Backend, архітектуру post-bridge та Metro TLS. Детальний огляд з прикладами коду та питаннями для співбесід.