Expo SDK 56 introduces precompiled XCFrameworks for iOS, eliminating the need to recompile 70+ packages from source on every build. Clean iOS builds can now be up to 65% faster compared to fully source-based builds. This is enabled by default with no configuration changes required. The change also marks the beginning of a migration from CocoaPods to Swift Package Manager (SPM). Key engineering challenges included making expo-modules-core fully modular, resolving Swift/Objective-C cyclic dependencies, handling SPM's strict source ownership rules, and using Clang VFS overlays to bridge React Native's legacy header layout. CocoaPods remains supported during the transition, and precompiled modules can be disabled via an environment variable if needed.

8m read timeFrom expo.dev
Post cover image
Table of contents
Faster builds without changing your appWhy precompiled XCFrameworks matterWhy this is harder than it soundsMaking Expo Modules Core compatible with Swift Package ManagerReact Native and Virtual File System overlaysAutomatically generating Package.swift filesSupporting both CocoaPods and SPMPart of a broader modernization effortLooking ahead
5 Impressions