

Updated:
October 24, 2023
Published:
October 24, 2023
iOS 17 Upgrade Chaos: Navigating the Annual Update
It is already a tradition for us to follow the release of the new iPhone together as a team. As a result, the Apple keynote on the iPhone 15 was once again on the calendar. The new features in the iPhone 15 were not particularly big, except for the USB-C port.
New iPhone, new iOS
Just 2 weeks later, we have the new iPhone in our hands for the first time. The design is the old one, the connections have been reworked but what is new above all is the software. Because the new iPhone is of course also delivered with Apple's latest operating system iOS17. That meant for us App updates! At that moment, we could not have guessed how many more problems this would cause us
Updates, updates
Of course we buy the latest iPhone as App development agency Not just for the fun of it (ok a bit, we think technology is really cool), but above all to be able to test the apps we develop on it. In this way, we can ensure that every app that comes to the App Store also works on the latest devices.
But before we can write even one line of code, XCode must first be updated to the latest version 15. But how could it be otherwise, it's not that easy either. Because in order to use XCode 15, the macOS operating system must also be brought up to date first. So we quickly updated the Mac and then updated XCode so that we could test our apps on the new iPhone with iOS17 - a really nice update marathon
Has no one tested this before?
After about 2 hours, it was done and every one of our Apple systems that we use was up to date. So I just opened Visual Studio, opened a customer project, ran the app and... Error. The app couldn't be run. Almost the classic when it comes to developing mobile apps.
Ok ok admittedly, this is not the first time this is happening because everyone who developed React Native for me has certainly experienced this scenario at least once. Because React Native uses an extremely large number of third-party packages, it often happens that one of these dependencies is no longer up to date. So once all packages are up to date (more updates) and... it still doesn't work. At this stage at the latest, we realized that we are facing a huge problem here.
What is actually the problem here?
Now we were standing there with our fancy new iPhone and nothing worked anymore, but why is that actually? We set out to find something and were able to identify the culprit relatively quickly: Expo.
Expo is actually one of my absolute favorite bundles when we have a App for iOS and Android develop. Not only does it come with many useful software components, but it also makes the process of testing and publishing apps immensely easier.
The problem here, however, was that the EXPO team did not notice that a new device connectivity protocol called CoreDevice was also introduced with iOS 17. In simple terms, this ensures that the Mac on which the software is developed can run it on a connected iPhone. As a result of the new protocol, the old protocols integrated in Expo were simply no longer supported
And how can we get our apps up and running again now?
The first idea that you could of course have now after all these problems would be “Why don't you just remove the updates and continue using iOS16 for now” so simple
Unfortunately it isn't. Because updates cannot be easily removed either on the Mac or on the iPhone. It was therefore clear that we had to find a solution to the problem. So we quickly sat down with the Expo developer team and discussed our problem in a GithHub issue.
In general, I can only recommend anyone who starts React-Native development to always look for solutions to a problem there first because the chances of someone else having the same problems as you are great. In addition, particularly current problems are often not yet listed on Google, which is why it always makes sense to take a look at the issue section of the affected package
The new Expo update is here!
With the help of the Github community, the problem was resolved quite quickly and a new Expo patch was provided. Just made an update and lo and behold, the app is running again! This shows the true power of open source projects, as problems can often be solved faster in the community than by a single manufacturer.
Now the app only had to be compiled using our cloud solution EAS. This is a service that is used to translate cloud app code into finished Android/iOS apps. Unfortunately, this service had not yet been updated to XCode 15, which is why we had to resort to local builds. However, that shouldn't be a problem anymore, as EAS also supports local builds directly on its own system - and we had already provided this extensively with updates.
The first eAct native app on iOS 17
After a few changes for the local build, we finally did it. Expo 49 only supports Gradle 8, but many React-Native packages still use Gradle 7.
Our app was therefore now one of the first React native apps based on iOS 17 and the customer was able to be provided with updates again. Of course, we have also updated the changes for all other apps that we support, because that is the huge advantage of working with a development team - learnings from other projects also directly benefit your project!
knguru
Wir setzen das in echten Projekten um.
100+ projekte eigene App mit 30.000 nutzern
Und wir bekommen wir unsere Apps jetzt wieder ans laufen?
Die erste Idee die man jetzt natürlich nach diese ganzen Problemen haben könnte wäre "Warum entfernt ihr nicht einfach die Updates und nutzt erstmal iOS16 weiter" doch so einfach
ist es leider nicht. Denn weder auf dem Mac noch auf dem iPhone lassen sich Updates einfach so entfernen. Daher war klar das wir eine Lösung für das Problem finden müssen. Also haben wir uns kurzer Hand mit dem Expo Entwickler Team zusammengesetzt und unser Problem in einem GithHub Issue diskutiert.
Generell kann ich jedem der in die React-Native Entwicklung einsteigt nur empfehlen sich immer zuerst dort nach Lösungen für ein Problem umzuschauen denn die Chancen das jemand anderes die selben Probleme wie du hast, sind groß. Zudem werden besonders aktuelle Probleme oft noch nicht bei Google gelistet, weswegen ein Blick in die Issue Sektion des betroffenen Pakets immer Sinn macht
Das neue Expo Update ist da!
Mit Hilfe der Github Community konnte das Problem recht schnell gelöst werden und ein neuer Expo Patch wurde bereitgestellt. Eben ein Update gemacht und siehe da, schon läuft die App wieder! Hier zeigt sich die wahre Power von Open Source Projekten, da Probleme oft schneller in der Community gelöst werden können als durch einen einzelnen Hersteller.
Jetzt musste die App nur noch durch unsere Cloud Lösung EAS kompiliert werden. Das ist ein Service der dazu dient in der Cloud App Code in fertige Android/iOS Apps zu übersetzen. Leider war auch dieser Service noch nicht auf XCode 15 geupdated, weswegen wir auf lokale Builds zurückgreifen mussten. Das sollte jedoch kein Problem mehr sein, da EAS auch lokale Builds direkt auf dem eigenen System unterstützt - und das hatten wir ja bereits umfangreich mit Updates versorgt.
Die ersteReact Native App auf iOS 17
Nach einigen Änderungen für den lokalen Build haben wir es endlich geschafft. Expo 49 unterstützt nur Gradle 8, aber viele React-Native Packages verwenden noch Gradle 7.
Unsere App war somit jetzt eine der ersten React Native Apps auf iOS 17 Basis und der Kunde konnte wieder mit Updates versorgt werden. Natürlich haben wir die Änderungen gleich auch noch für alle anderen Apps die wir betreuen nachgezogen, denn das ist nun mal der riesige Vorteil, wenn man mit einem Entwicklerteam arbeitet - Learnings aus anderen Projekten, kommen auch direkt deinem Projekt zugute!


Zwischen Agenturalltag und Startup - unser Blog
In unserem Blog teilen wir Tipps rund um das Thema Appentwicklung, Startups und einige verrückte Geschichten aus unserem Agenturalltag mit euch.
Your 30-minute meeting with real experts.
Whether it's an idea or an existing app – we'll tell you honestly where you stand. All of this is free, based on experience from over 100 projects and our own app with 30,000 users. Book your meeting now and get to know us!
Oops! Something went wrong while submitting the form.





