# React Native 0.87 en SwiftPM in 2026: Modern iOS Build Systeem en Sollicitatievragen > React Native 0.87 introduceert experimentele Swift Package Manager ondersteuning voor iOS builds. Deze gids behandelt SwiftPM configuratie, de Strict TypeScript API, Metro 0.87 optimalisaties en sollicitatievragen voor senior mobile developers. - Published: 2026-09-03 - Updated: 2026-09-03 - Author: Anthony Fillion-Maillet - Tags: react-native, ios, swiftpm, typescript, mobile-development - Reading time: 9 min --- React Native 0.87, uitgebracht op 11 augustus 2026, introduceert experimentele Swift Package Manager (SwiftPM) ondersteuning voor iOS builds, wat de eerste stap markeert naar het elimineren van CocoaPods uit React Native projecten. Deze release maakt de Strict TypeScript API de standaard, levert Metro 0.87 met 2x snellere source map generatie en verhoogt de minimale toolchain vereisten naar Node.js 22, Kotlin 2.0 en Android compileSdk 37. > **SwiftPM Setup in Één Commando** > > Na het deïntegreren van CocoaPods, voer eenmalig `npx react-native spm --deintegrate` uit. Het project herlinkt dan automatisch native dependencies bij elke build zonder `pod install`. ## Swift Package Manager Vervangt CocoaPods voor iOS Dependencies SwiftPM ondersteuning in React Native 0.87 is opt-in en experimenteel. CocoaPods blijft de standaard dependency manager voor productie-applicaties. Het SwiftPM pad gebruikt dezelfde voorgebouwde XCFrameworks die React Native al publiceert, dus er zijn geen extra binaire downloads nodig. Het belangrijkste voordeel: een SwiftPM-gebaseerd project heeft alleen Xcode nodig. Ruby, Bundler en CocoaPods zijn niet langer vereist op developer machines of in CI pipelines. ```bash # ios-swiftpm-setup.sh # Stap 1: Navigeer naar de iOS directory cd ios # Stap 2: Deïntegreer CocoaPods en genereer SwiftPM referenties npx react-native spm --deintegrate # Stap 3: Open project in Xcode en bouw open MyApp.xcworkspace ``` Het `spm --deintegrate` commando injecteert Swift package referenties in het bestaande `.xcodeproj` in plaats van het projectbestand te vervangen. Code signing instellingen, build phases en capabilities blijven onaangeroerd. Om de wijziging ongedaan te maken, kan `npx react-native spm deinit` uitgevoerd worden. ## Hoe SwiftPM Autolinking Werkt Zonder pod install Na de initiële setup triggeren dependency wijzigingen automatisch relinking. Installeer of verwijder een native package met npm of yarn, dan build. Het project detecteert wijzigingen en voert autolinking opnieuw uit tijdens de Xcode build fase. ```bash # dependency-workflow.sh # Installeer een native dependency npm install react-native-reanimated # Build triggert automatisch relinking npx react-native run-ios # Geen pod install vereist ``` Voor verse clones en CI omgevingen moet `npx react-native spm` eenmaal uitgevoerd worden voor de eerste build. Dit genereert het `Package.swift` bestand en resolveert Swift package dependencies. ## SwiftPM Beperkingen en Productie-gereedheid SwiftPM ondersteuning in 0.87 heeft belangrijke beperkingen die adoptie beslissingen beïnvloeden: | Beperking | Impact | |-----------|--------| | Community library ondersteuning | Elke library moet een `Package.swift` bestand meenemen | | Commando stabiliteit | Flags en gegenereerde layout kunnen veranderen in 0.88+ | | CI configuratie | Vereist `npx react-native spm` stap voor builds | | Documentatie | Beperkte troubleshooting resources beschikbaar | Voor productie-applicaties blijft CocoaPods het aanbevolen pad. Teams die SwiftPM evalueren moeten prototypen op een branch en hun volledige dependency tree testen voordat ze zich committeren aan migratie. ## Breaking Change: Namespaced iOS Header Imports React Native 0.87 levert nieuwe XCFrameworks: `ReactNativeHeaders.xcframework` en `ReactNativeDependenciesHeaders.xcframework`. Native modules die bare-form angle includes gebruiken moeten het `React/` namespace prefix toevoegen. ```objective-c // AppDelegate.m // Voor 0.87 - bare include #import #import #import // Na 0.87 - namespaced include #import #import #import ``` Deze wijziging is van toepassing op zowel CocoaPods als SwiftPM builds. Projecten met custom native modules moeten alle header imports updaten voor de upgrade. ## Strict TypeScript API: De Nieuwe Standaard JavaScript Interface De Strict TypeScript API, gepreviewd in 0.80, wordt de standaard in 0.87. Types worden nu direct gegenereerd uit de React Native broncode, waardoor drift tussen de TypeScript definities en het werkelijke runtime gedrag geëlimineerd wordt. ```typescript // component-refs.tsx import { useRef } from 'react'; import { View, TextInput, ViewInstance, TextInputInstance } from 'react-native'; export function FormComponent() { // Nieuwe dedicated ref types vervangen generieke RefObject const containerRef = useRef(null); const inputRef = useRef(null); const focusInput = () => { // Type-safe method toegang inputRef.current?.focus(); }; return ( ); } ``` Drie breaking type wijzigingen vereisen aandacht tijdens migratie: 1. **Deep imports geblokkeerd**: `react-native/Libraries/*` paden produceren nu type errors. Alle exports moeten komen van het root `react-native` package. 2. **Ref type updates**: `ViewInstance` en `TextInputInstance` vervangen generieke ref types. De `*Properties` type aliases worden verwijderd ten gunste van `*Props`. 3. **useColorScheme wijziging**: Retourneert `ColorSchemeName | null` in plaats van de vorige `'unspecified'` string waarde. ## Opt-Out van Strict TypeScript Tijdens Migratie Teams die meer tijd nodig hebben om te migreren kunnen legacy deep imports herstellen tot React Native 0.88: ```json // tsconfig.json { "extends": "@react-native/typescript-config", "compilerOptions": { "customConditions": ["react-native", "react-native-legacy-deep-imports"] } } ``` Deze escape hatch wordt verwijderd in React Native 0.89. Projecten moeten migratie prioriteren voor die release. ## Metro 0.87: 2x Snellere Source Maps en 50% Minder Geheugen Metro bundler versie 0.87 levert significante performance verbeteringen die de development workflow en React Native DevTools opstarttijd beïnvloeden. Source map generatie is 2x sneller door geoptimaliseerde string handling. DevTools laden sneller omdat source maps efficiënter gegenereerd worden tijdens development builds. Geheugengebruik daalt 50% door efficiëntere source map opslag. Dit is relevant voor grote codebases waar Metro voorheen significant RAM verbruikte tijdens lange development sessies. Additionele Metro wijzigingen: - Stabiele ondersteuning voor TypeScript configuratiebestanden (`metro.config.mts`) - ESM configuratiebestand ondersteuning naast CommonJS - Package self-resolve in de resolver - Verwijderde ondersteuning voor `.es6` bestandsextensies en YAML configuratiebestanden ## Minimale Toolchain Vereisten voor React Native 0.87 Deze release verhoogt minimale versie vereisten door de hele toolchain. CI pipelines en developer omgevingen moeten geüpdatet worden voor de upgrade. | Vereiste | Versie | |----------|--------| | Node.js | ≥ 22.13.0 | | Kotlin | ≥ 2.0 (gebundeld: 2.2.0) | | Android minCompileSdk | 34 | | Android compileSdk | 37 | | Android Gradle Plugin | 9.x | Voor AGP 9 compatibiliteitsproblemen kunnen opt-outs toegevoegd worden aan `android/gradle.properties`: ```properties # android/gradle.properties # Tijdelijke opt-outs voor AGP 9 migratie android.builtInKotlin=false android.newDsl=false ``` ## Verwijderde APIs in React Native 0.87 Meerdere deprecated APIs worden verwijderd in deze release. Projecten die deze APIs gebruiken moeten gerefactored worden voor de upgrade. | Verwijderde API | Vervanging | |-----------------|------------| | `InteractionManager` | `requestIdleCallback` | | `Modal` animated prop | Gebruik standaard transition gedrag | | `NativeMethods` type | `HostInstance` | | `useTurboModules` flag | Altijd ingeschakeld, flag verwijderd | | `Touchable` root export | Extend `ViewProps` direct | | `react-native/rn-get-polyfills` | `@react-native/js-polyfills` | Additionele deprecations gericht op toekomstige verwijdering omvatten `ImageBackground` (gebruik `View` met absoluut gepositioneerde `Image`), `DrawerLayoutAndroid` (gebruik [react-native-drawer-layout](https://github.com/react-navigation/react-navigation/tree/main/packages/drawer)) en `react-native/Libraries/Core/InitializeCore` (gebruik `react-native/setup-env`). ## React Native 0.87 Sollicitatievragen voor Senior Developers Deze vragen verschijnen in senior mobile developer sollicitatiegesprekken na grote React Native releases. Het begrijpen van de architecturale beslissingen achter SwiftPM ondersteuning en de Strict TypeScript API demonstreert framework-level kennis. **V: Waarom introduceert React Native 0.87 SwiftPM als experimenteel in plaats van CocoaPods direct te vervangen?** SwiftPM ondersteuning hangt af van community libraries die `Package.swift` bestanden meeleveren. Anders dan CocoaPods waar een centraal `Podspec` register bestaat, vereist SwiftPM dat elke library auteur native Swift package configuratie toevoegt. De experimentele fase staat het ecosysteem toe om SwiftPM geleidelijk te adopteren terwijl CocoaPods stabiel blijft voor productie apps. Daarnaast kunnen CLI commando's en gegenereerde project layout veranderen gebaseerd op developer feedback voordat ze stabiliseren. **V: Welk probleem lost de Strict TypeScript API op dat handmatig onderhouden type definities niet konden oplossen?** Handmatig onderhouden type definities driften af van runtime gedrag tussen releases. Interne refactors die functie signatures veranderen of parameters toevoegen worden mogelijk niet direct gereflecteerd in de types, wat runtime crashes veroorzaakt die TypeScript had moeten opvangen. De Strict API genereert types direct uit broncode, waardoor types gezaghebbend worden in plaats van aspiratief. Het blokkeert ook deep imports die onstabiele interne APIs benaderen, wat breuk voorkomt wanneer die internals veranderen. **V: Hoe verschilt SwiftPM autolinking van CocoaPods autolinking in React Native?** CocoaPods autolinking draait tijdens `pod install`, wat developers moeten onthouden om uit te voeren na dependency wijzigingen. SwiftPM autolinking draait automatisch tijdens de Xcode build fase. Het build systeem detecteert dependency wijzigingen en regenereert het package manifest zonder handmatige interventie. Dit elimineert een veelvoorkomende bron van "het werkt op mijn machine" problemen waar developers vergeten om `pod install` uit te voeren na het pullen van wijzigingen. Voor additionele React Native sollicitatie voorbereiding kunnen de [native modules deep dive](/technologies/react-native/interview-questions/rn-native-modules) en [testing strategieën](/technologies/react-native/interview-questions/rn-testing) vragenbanken geraadpleegd worden. ## Upgrade Strategie voor React Native 0.87 Projecten De [React Native Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) genereert een diff tussen het huidige project template en 0.87. Deze diff toont precies welke bestanden gewijzigd moeten worden. Prioriteer deze migratiestappen: 1. **Update Node.js naar 22.13.0+** en verifieer dat CI omgevingen overeenkomen 2. **Voer TypeScript compilatie uit** om deep import overtredingen te identificeren 3. **Update ref types** van generiek naar dedicated instance types 4. **Update iOS header imports** naar namespaced formaat 5. **Test de volledige native dependency tree** voor het enablen van SwiftPM Voor Expo projecten is React Native 0.87 beschikbaar in `expo@canary` releases. Productie Expo projecten moeten wachten op de stabiele SDK release. ## Wat 0.87 SwiftPM Ondersteuning Betekent voor iOS Build Tijden SwiftPM elimineert `pod install` uit de development workflow, maar initiële project setup vereist meer tijd. Het `npx react-native spm` commando resolveert Swift packages van source, wat langer duurt dan het downloaden van voorgebouwde CocoaPods binaries. Volgende builds profiteren van Xcode's incrementele package resolution. Alleen gewijzigde packages worden opnieuw opgehaald. Voor teams met frequente dependency churn kan deze incrementele aanpak sneller zijn dan herhaalde `pod install` cycli. CI optimalisatie verschilt tussen de twee benaderingen. CocoaPods cachet `Pods/` directories effectief. SwiftPM cachet via Xcode's derived data, wat andere cache key strategieën vereist. Teams die CI pipelines migreren moeten beide benaderingen benchmarken met hun specifieke dependency set. Voor gerelateerde iOS build optimalisatie technieken kan de [React Native New Architecture guide](/blog/react-native/react-native-new-architecture-hermes-v1-bridgeless) over Hermes V1 en bridgeless mode performance karakteristieken geraadpleegd worden. --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/nl/blog/react-native/react-native-087-swiftpm-ios-build-interview-questions