Dmitriy Kononov
Let’s talkContact

News and analysis

Xcode 27, Expo SDK 58 and React Native 0.88: how to plan updates for a company app

Xcode 27 removed Simulator.app; Expo SDK 58 and React Native 0.88 shipped for iOS 27 and the iPhone Duo. What it means for a company app and how I plan for updates.

In one week of October, Apple released Xcode 27 and the foldable iPhone Duo, React Native shipped version 0.88, and Expo shipped SDK 58. For a developer this is the usual fall cycle. For the owner of a company with its own app for employees or customers it is a reminder: an app can't be built and forgotten; once a year it has to be rebuilt for the new platform, and that is worth budgeting ahead of time. The day a manager's phone updates itself is too late to start.

What came out

Expo on October 20 described how Xcode 27 removed Simulator.app and replaced it with Device Hub. Any tool that opened the simulator by app name stopped working, and Expo CLI was one of them. The fix came in two parts: the CLI now sees Device Hub as a target and brings the right device to the front through a devices:// link. Separately, expo-device-hub appeared, a plugin with a panel in the browser: live video of simulators and emulators, tap and text input, CPU and memory graphs. The plugin hasn't reached version 1.0 yet.

Expo on October 21 published the guide for moving to SDK 58. It brings support for iOS 27 and React Native 0.88, which means the changes of two versions at once, 0.87 and 0.88. The Strict TypeScript API became the default, and deep imports from react-native/Libraries are now type errors. React Native removed InteractionManager, Touchable as an export, the animated prop on Modal and several StatusBar props. Prebuild generates SceneDelegate.swift, Android has R8 enabled by default in release builds, and the new Expo Go supports only SDK 58.

Expo on October 23 published a guide for the iPhone Duo, Apple's first foldable iPhone, which came out the same day. It has a compact outer screen and a large inner one, in most postures the system bars move into a vertical rail on the side, and an app can be opened next to another in Split View. Expo's advice: hand navigation to the system through Stack and NativeTabs in Expo Router, wrap content in SafeAreaView, and check every posture in the simulator. You need SDK 58 and Xcode 27.1.

React Native on October 19 released 0.88, the third release with no breaking changes for users, after 0.83 and 0.86. Events now go through the standard W3C EventTarget, as in the browser, and Text and TextInput got variable fonts. On iOS, starting with the iOS 27 SDK, Apple requires the UIScene lifecycle, and UIKit apps built with Xcode 27 without it don't launch. React Native 0.88 added SceneDelegate support alongside the old path through AppDelegate, which stays.

What this means for a company app

Take a car rental. The app for handing out cars has been running for a year and a half, the managers are happy, the developer is busy with another project. In the fall a new iPhone comes out, some employees update their phones, and the app has to be rebuilt with the new Xcode. If the project has the old lifecycle and dependencies nobody touched for a year and a half, “rebuild” turns into a week of work nobody planned.

The conclusion: an app has a yearly cycle set by Apple and Google, and it doesn't depend on whether you need new features. The cheapest way through it is one step a year, while the changes are small.

How I do it

At the PDR company in the US, where I have been the technical partner since 2021, we are building a React Native super app together with the company's developers. It is replacing AppSheet, and the office, the salespeople and the owner already use it. The app is published in TestFlight, an App Store release is being prepared, and an APK is built for Android. It is built offline first: a salesperson in the field marks a point on the map, takes photos and works a lead with no connection. Next to it is a customer portal with an online timeline for the order, finger signing of documents and PDF output, in English and Spanish. For this app, updating the stack for new versions of iOS and React Native is something I put into maintenance as planned work.

At a car rental company in South Africa, which I have worked with since October 2024, the internal app for managers is built on FlutterFlow with a Firebase backend. Another developer did most of it; I connected it to AmoCRM, the website and the business logic. The system is running now, cars are being handed out, and on my side it is maintenance without active development. Platform updates there touch FlutterFlow and the app stores, and that is part of maintenance too.

What I would do

Write a yearly stack update into the maintenance contract: SDK, dependencies, the build for the new Xcode and Android. One-off work with me costs about $80 an hour, ongoing maintenance is a separate agreement, and I put the platform update into it.

Before updating, run the type check and the list of removed APIs from the Expo guide. On SDK 58 that is InteractionManager, Touchable and the StatusBar props. Better to see the errors on your own machine than in the store.

Don't draw your own navigation in JavaScript if you can hand it to the system. On the iPhone Duo the bars move into the rail on their own; iOS handles that.

Check the app on the new screen shapes: the Duo folded and unfolded, Split View, the resizable window on iOS 27. Xcode 27.1 and the simulator in Device Hub are enough.

Know which build image your app is built with. At Expo the sdk-58 and latest aliases now point to Xcode 27.1, and that is worth checking before a release.

Related materials

I wrote about planning the first version of a customer app, with roles and one complete scenario, in the article How to plan the first release of a customer portal. Directions: an app for your customer scenario and a customer product tied to the business. Cases: the super app and customer portal at a PDR company and a car rental in South Africa with an app for managers. From other reviews: moving to a new system without stopping the business and a customer portal with finger signing and a second language. Earlier I wrote about how to choose a mobile stack with maintenance cost in mind. If you have an app nobody has updated in more than a year, tell me what it's built on and who maintains it. Discuss your task.