React Native 0.87 та SwiftPM у 2026: Сучасний iOS Build та Питання для Співбесід

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

React Native 0.87 SwiftPM iOS Build

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.

Налаштування SwiftPM однією командою

Після деінтеграції 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 пайплайнах.

bash
# 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.

bash
# 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 впроваджує простори імен для нативних модулів. Модулі тепер повинні оголошувати унікальний простір імен для уникнення колізій між бібліотеками. Ця зміна вимагає оновлення нативного коду в існуючих модулях.

NativeModule.tstypescript
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 помилки.

typescript
// До: м'яка типізація приймала некоректні 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 тепер удвічі швидша завдяки паралельній обробці та оптимізаціям пам'яті.

metro.config.jsjavascript
module.exports = {
  transformer: {
    // Нові опції в Metro 0.87
    experimentalImportSupport: true,
    inlineRequires: true,
  },
  resolver: {
    // Швидше вирішення модулів
    unstable_enableSymlinks: true,
    unstable_enablePackageExports: true,
  },
};

Для великих проєктів ці оптимізації можуть скоротити час білду на кілька хвилин у release режимі.

Підвищені вимоги до toolchain

React Native 0.87 вимагає новіших версій інструментів:

ІнструментМінімальна версія
Node.js22.x
Kotlin2.0
Android compileSdk37
Xcode16.0
iOS Deployment Target15.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

Процес міграції вимагає врахування кількох змін:

bash
# Оновлення залежностей
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

Автор:

Anthony Fillion-Maillet

Засновник SharpSkill

Fullstack-розробник понад 10 років. Керує SharpSkill і відповідає за все, що тут публікується.

Оновлено 3 вересня 2026 р.

Теги

#react-native
#swiftpm
#ios
#typescript
#mobile

Поділитися

Пов'язані статті