Belle
03 Aug 2018
By Belle

What's in your Larder: Onboarding libraries for iOS

I recently rewrote the onboarding flow in one of my iOS apps. I ended up writing the whole thing myself, because I wanted control and the ability to tweak everything, but I started out by looking into some libraries that could take care of the heavy lifting for me.

If you don't need as much control as me and you want to get something up-and-running quickly, these libraries I found might be useful. I haven't used any of them, but they all seemed interesting enough to save to my Larder account for future reference.

OnboardKit [Swift]

OnboardKit example

The docs are sparse for OnboardKit, but I like that it takes an object for configuring the UI details, so you can set everything in one go like this:

AppearanceConfiguration(tintColor: .green,
                        textColor: .white,
                        backgroundColor: .black,
                        titleFont: UIFont.boldSystemFont(ofSize: 24),
                        textFont: UIFont.boldSystemFont(ofSize: 13))

Most of the other libraries I looked at have a set of properties you can change, but I think this approach is neater.

SwiftyOnboard [Swift]

SwiftyOnboard example

SwiftyOnboard takes a very Apple approach by using separate delegate and data source protocols for managing the onboarding's behaviour. There's not much talk in the docs about customising the design, and it seems like each page is limited to a title, subtitle, and image, but the examples give a good idea of how much you can achieve within that framework.

Tutti [Swift]

Tutti example

Tutti is quite different to the other libraries mentioned here. It's based on the idea of a hint-style tutorial, where small pop-ups lead the user around and teach them how to use your app. I included it in this list because it also lets you make full-screen swiping tutorials, and if you need to include hints in your app, it could be nice to have one library to handle both approaches.

LUNTutorialViewController [Objective-C]

LUNTutorialViewController example

Like SwiftyOnboard, LUNTutorialViewController uses a delegate and data source to manage the onboarding. Compared to some of the other libraries mentioned, LUNTutorialViewController seems a bit more complicated, and hasn't been updated for a while. Still, if you need something in Objecitve-C, it could be worth looking into.

Surfboard [Objective-C]

Surfboard example

Surfboard hasn't been updated for several years, but it offers a simple approach in Objective-C in case that's what you need. It also lets you create panels for your onboarding using JSON format, which is nice.