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!


What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Louis Nell
CEO Knguru Studios
Moin ich bin Louis, kreativer Kopf und Gründer von KNGURU Studios. Wenn wir einmal anfangen über Technik, Startups oder Produktdesign zu quatschen kannst du dir sicher sein, das es so schnell kein halten mehr gibt. Deswegen gibt es auch mittlerweile diesen Blog in dem ich meine Reise als Startup- und Agenturgründer dokumentiere.
#development
#app
#learning
Vera Große
UX Management
Hi, ich bin Vera! Meine Verantwortung liegt im Bereich Projektmanagement und Kundenbetreuung. In diesem Blog teilen wir nicht nur unsere Erfahrungen als Startup- und Agenturgründer, sondern auch unsere Begeisterung für kreative Ideen und visionäre Konzepte.Mit Expertise und Leidenschaft arbeiten wir daran, innovative Projekte zum Leben zu erwecken und gleichzeitig unsere eigene Reise zu dokumentieren.
#development
#app
#learning

Book yours free Video call

Do you want to talk to our team about your project and just hear what we could do for you? Then simply book a free video call with us now!

1
How can we reach you?
2
Accept our privacy policy
Oops! Something went wrong while submitting the form.