iOS 13: The Top 5 Features Your App Needs Now
Tags: ios, iphone, softwareengineering, tips
Published: 2019-09-11 17:20:00

At [WWDC 2019](https://semaphoreci.com/blog/ios-developer-community-wwdc), Apple announced many improvements for iOS 13, such as the much-hyped Dark Mode and increased privacy capabilities. Apple tends to highlight apps in the App Store that implement new features, so now is the time to optimize your apps for the new iOS 13 features.

Today, I will highlight the five most important features that you, as an iOS developer, should plan to implement.


## 1. Dark Mode

Prepare your apps for the Dark Mode feature in iOS 13. Apple is putting so much emphasis on Dark Mode that the WWDC 2019 event environment was totally dark. 

Before this update, you have likely seen apps emulating this capability by creating their own themes using the UIAppearence class. But now that Apple officially supports it, you can prepare for the iOS 13 Dark Mode that is seamlessly integrated throughout the system.

![](https://lh3.googleusercontent.com/fzD4ZSO6H9mEE3z3ZhtYZdDt8KycyuvYtpFpqcI7dFSHUfCWQB0-UbKjrpwHBCGi0QhPsRQqcnOFN99sKbsWMNwqvBstXkzmqGIwIHlYMkSWWYit1rt6uRRe9RtQSp0nSUjChI6j)
Screenshot of iOS 13’s Dark Mode functionality ([image credit](https://www.apple.com/newsroom/2019/06/apple-previews-ios-13/)).

[As Apple states](https://developer.apple.com/news/?id=0829019a):

When a user has Dark Mode turned on, all apps built with the iOS 13 SDK will run in Dark Mode.

If you need more time to make your apps optimized for Dark Mode, or if Dark Mode is not suited for your app, you can learn how to opt-out.

However, because the emphasis Apple placed on it at WWDC this year, I recommend adding it to your app’s interface if possible.

### Dark Mode Best Practices

Choose adaptive colors for your UI by defining custom colors in your asset catalog.
For example, load a color value from an asset catalog by name

```Swift
let labelColor = UIColor(named: “customControlColor”)
```

- The images you create should look good in both light and dark appearances.

- Update custom views with specific methods. One way to do this it is by moving your code to the updateLayer()method so that whenever the UI refreshes, the background color also changes.

You can read a complete introduction about implementing Dark Mode for iOS 13 with Apple’s official documentation [here](https://developer.apple.com/documentation/appkit/supporting_dark_mode_in_your_interface/).


## 2. Sign in with Apple

In this update, Apple greatly improved its privacy features. Now, users can sign into applications using Apple’s native sign-in feature, like they do with Facebook and Google’s authenticators. The [Sign In with Apple](https://developer.apple.com/sign-in-with-apple/) feature, introduced in iOS 13, provides fast, easy sign-in without tracking. Users can simply tap a button and use their FaceID.

![](https://lh6.googleusercontent.com/Aa3w-3rYSKaRi0TzJXRYkeeZz30gtShGLeyKgYDAG4OFmQje6y4u1ljQwfbsmJH70pTWw24rqbb79DWOuwjKwBkG13IEfF5Y2YQxJIHGfhPKaFd2M3pWSt3I03hZCoZp3qa1PTVq)
In iOS 13, users can sign into applications using the secure Sign In with Apple feature ([image credit](https://www.apple.com/newsroom/2019/06/apple-previews-ios-13/)).

The difference from the new Apple authentication option lies in its privacy-conscious features. It keeps users’ data more secure and allows them to keep their activity hidden from advertisers.

Even better, whenever your app asks for a name and email address, you could choose not to ask. Or, if you prefer, you can allow Apple to create a randomized email address for your users. So, when your app sends a message to the user, it will go to their Apple ID email, so nobody knows their email. 

Whether you should implement this, of course, depends on your business model. If it is possible for your business, though, this feature will communicate to your users that you are being transparent and secure with their data, without the interest to track them and send unsolicited emails or ads.

The main advantages of Sign In with Apple are that it:

- Hides users’ emails, which may make them more willing to use your app.
- Works everywhere, including browsers, watchOS, tvOS, and more.
- Shows that you respect your users’ privacy and helps strengthen your brand.
- Integrates built-in security without too much effort on your part as the developer.

If you want to implement this feature, take a look at the `ASAuthorizationAppleIDButton` class to create the Apple Sign in Button. This class allows different visual styles and labels. Then, it captures the results in the authentication request that it returns with data like UserID, Verification Data, Full Name, Verified email, Real User Indicator, Credential State, and more. Also, Password Autofill seemingly integrates with Apple Sign In.

You can learn more about Apple Sign In [here](https://developer.apple.com/sign-in-with-apple/get-started/).


## 3. Siri Shortcuts

If you’ve never integrated Siri into your application, now is the time to evaluate it. Siri’s functionality now offers a better voice experience, additional customization, and more. For example, a food delivery app can allow people to ask about the delivery status of their order, and an event app can remind users to leave on time for a party.

Depending on your app’s core features, you may find that Siri adds significant value to your user experience.

Take, for example, conversational shortcuts. Siri can now ask follow-up questions, which makes your app’s voice shortcuts even better. For example, when a user says “Order status,” you can program Siri to ask which order the user is referring to for clarification.

One possible reason Siri adoption has been low among consumers is that users must navigate to Siri’s settings to record their own custom voice commands. With iOS 13, developers can suggest a voice command within the app and allow users to create it with a tap of a button. This eliminates the need for users to manually record their custom voice commands and makes it easier for them to interact with your app.

Consider adding a Siri Shortcut button for recurrent tasks in your app, such as placing an order or checking the status of something. Take some time to explore Siri’s updates using the [SiriKit documentation](https://developer.apple.com/documentation/sirikit).


## 4. SwiftUI

SwiftUI is a user interface toolkit that lets you design apps in a declarative way. This means that you can write code that clearly states what you want it to do. It is natural to write and work seamlessly with the new Xcode design tools, keeping your code and design in synchronization.

![](https://lh6.googleusercontent.com/NpaYXD_TJukRTsBogrYifLUgSg9QVkqvEJXH8lzZFx-00HeItwb-oj-EXJC92emgpDkuFzODf7P6Bjz8e9PVWUXIuVqFLPfYTn4EFErVkGcq1ZIXme8mfTsNHwIS-yjPaFzXGTzZ)
Josh Shaffer demonstrating SwiftUI’s interface at WWDC 2019 ([image credit](https://www.apple.com/newsroom/2019/06/highlights-from-wwdc-2019/)).

One of the things that first impressed me about SwiftUI is how it merges the benefits of Storyboards and code at the same time. For example, the code updates as you drag and drop UI elements into the canvas. This can help in code organization and fix the [massive view controller problem](https://www.hackingwithswift.com/articles/159/how-to-refactor-massive-view-controllers).

Another advantage is that SwiftUI is a cross-platform, truly native toolkit. It allows your apps to directly access each of Apple’s operating systems with a small amount of code and an interactive design canvas.

For everything that I previously highlighted with SwiftUI, I recommend only experimenting with it for now rather than quickly putting it into your production codebase. It is the first step from Apple to include these new intuitive design tools that make building interfaces as easy as dragging and dropping. But you should take care to experiment first, decide later!


## 5. Core NFC

Core NFC is likely the most difficult feature that I recommend, but it will open up your application’s ability to connect to the physical world.

Using Core NFC, your app could read Near Field Communication (NFC) tags to give users more information about their physical environment and the real-world objects in it. Imagine the possibilities!

So, using Core NFC, your app might give users information about products they find in a store or exhibits they visit in a museum.

Apple improved the use of Core NFC this year by adding the ability to read contactless smartcards, passports, and other government-issued IDs on iPhone 7 devices and up.

To use Core NFC, you need to enable Xcode capability, use one of the Core NFC sessions objects like `NFCTagReaderSession` or `NFCNDEFReaderSession` and receive tags in discovery callbacks. Connect to a tag to perform operations, and then invalidate the session.

This can sound a bit confusing if you have never worked with NFC before. To get started (and inspired by the possibilities), I recommend reading some of [Apple’s documentation](https://developer.apple.com/documentation/corenfc).


## Faster, simpler app development for iOS 13

Remember, Apple often highlights applications in the App Store that incorporate the top features and ideas from their latest updates. If you are looking to grow your app’s discoverability and be among the top-ranking apps, this could be your chance. 

If this all sounds overwhelming, automating some parts of your development process can help you focus on development and set repetitive tasks on auto-pilot. 

One way to do this is by using iOS [Continuous Integration and Continuous Delivery](https://semaphoreci.com/blog/2017/07/27/what-is-the-difference-between-continuous-integration-continuous-deployment-and-continuous-delivery.html) (CI/CD). Semaphore just finished its initiative to support iOS 13, so now you can use our CI/CD platform to compile and test your iOS applications.

Start with simple things first, and feel free to reach out to the Semaphore team ([@semaphoreci](https://twitter.com/semaphoreci)) on Twitter if you have any questions!