Custom keyboards in iOS 8: Explained

Custom keyboard extensions, part of iOS 8's new Extensibility feature, allow developers to almost completely replace the default, system-wide iOS keyboard with ones of their own devising. (That's in addition to Apple's own, new QuickType predictive keyboard.) Not only does that include favorites from other platforms, like Swype or SwiftKey, but it opens the door to ones that offer new languages, novel input methods, special options, and more. So, how do the new custom keyboard extensions work?

From in app to out

For a while now Apple has let developers create and deploy custom keyboards, but those keyboards could only exist within their own apps. For example, Apple itself created and deployed a custom, spread-sheet optimized keyboard for Numbers.

VNC and Remote Desktop apps have used custom keyboards that include OS X or Windows-specific modifier keys. Social network apps have added rows to the default keyboard that include @mention, #hashtag, and even camera access characters above and beyond those in the default keyboard type layouts. SwiftKey and other third-party keyboard companies have even created note-taking apps just to make their custom keyboards available on iOS within those specific apps.

Now, however, custom keyboards can break free of their app jails and be used system-wide, in every app, and for almost anything.

How custom keyboards work

Even though custom keyboards are designed to work throughout iOS, they still have to be contained in an app. So, for example, to install SwiftKey on your iPhone or iPad, you'll have to download the SwiftKey app. The SwiftKey app's custom keyboard extension will then make itself available system-wide.

The next time the default keyboard appears, you'll be able to tap the globe (keyboard change) button, select the custom keyboard, and start typing with it.

There are still some lingering questions when it comes to implementation. For example, if you install the Swype app to get the Swype keyboard, what would the app itself do when you launch it? If the Swype app is deleted, the custom keyboard extension gets deleted with it, so would there be a warning provided to make sure people know and understand that, especially if they haven't looked at the app in weeks or months and forgotten why it exists?

Download/delete/re-download is a simple process understood my hundreds of millions of iPhone and iPad customers. Extensibility offers new functionality beyond that of the traditional app. Somewhere, somehow, both Apple's procedures and our understandings are going to have to grow and mature.

Custom keyboard limitations

While custom keyboards can, for the first time, exist beyond the confines of their own apps, there are still many limitations placed on them. Some of these are philosophical — Apple has strong opinions on security and privacy. Others may be technical.

To start with, by default custom keyboards are restricted to the local device. They can't access the internet without explicit permissions. They also can't be used in secure text fields, like those for passwords. More on that in the security and privacy section.

Moreover, custom keyboards don't have access to the built-in keyboard toggles in Settings either, but a custom set of settings can be created just as they can for any other type of app. They also don't have access to the phone system (phone pad), which adhere to a strict set of input characters mandated by the carriers.

In all of those cases, the default iOS 8 keyboard will replace the custom keyboard, and then return to it when eligable input fields become available.

Custom keyboards also can't be used to select text or move the input position around. So no PC-style arrow key and cursor simulator keyboards. That kind of functionality is currently only available for the app hosting the keyboard. Likewise, the keyboard can't project its own editing commands, like copy/paste into an app, nor can it currently draw above the top row of the keyboard the way the default one does.

Remember, this is Extensibility 1.0, and doubtless custom keyboard extensions, like everything else, will continue to evolve over future versions of iOS.

Developing custom keyboards

Apple intends for custom keyboards to offer something that's above and beyond what Apple's own keyboard provides, and is useful system-wide, not simply applicable to its own, specific app. That includes things like languages Apple doesn't currently support, and input methods and prediction system different from the ones used by Apple's QuickType.

They can work via taps, swipes, gestures, and anything else supported by multitouch, but they have to work the way people have come to expect. Input has to be taken and output has to be delivered. And they have to not only be functional but feel lively and responsive.

Custom keyboards also have to let people switch to and away from them using something akin to the 'globe' button Apple provides for switching to and away from, or cycling through, the built-in emoji keyboard, for example.

These aren't requirements and there aren't APIs to provide support for them "for free", but Apple categorizes their implementation as providing a competitive advantage.

Like other types of extensions, custom keyboards are remote views that get presented to the host app. If a developer wants to provide support for multiple languages, they're encouraged to build a separate keyboard extension for each.

Most importantly, Apple emphasizes trust. Apple emphasizes it over and over again. If a developer doesn't need to use server-side processing, they can keep keyboard functionality local, which enhances trust.

If a developer wants their keyboard to go to the cloud, they need to get explicit permission and offer utility worthy of that permission. For example, auto-complete based on a server-side address book, location mapping, lexicon, prediction, dictation, sync, mobile device management, etc.

Developers need to ensure that people get what they expect, and that if the go to the cloud, data is only ever used for the benefit of the person using it.

Security and privacy

iOS, being a privacy- and security-first operating system, does place some limitations on custom keyboards. First, by default they have to keep everything local to the device. That's to prevent key-logging activity. (Where a malicious app steals what you're typing.) If the keyboard does want to add server-side intelligence (which can improve the system), it has to ask your express permission. Apple will then warn you about the app having access to your credit card or street address information, but let you go ahead if you choose to.

What's more, whenever you move to a secure password field, third party keyboards are temporarily disabled and the standard iOS 8 keyboard is presented instead. This is not only to prevent key-loggers, but to prevent anyone at all from having any access to your passwords whatsoever.

Apple will no doubt also provide appropriate toggles in the Settings app should we wish to change our minds later.

Bottom line

Lack of custom keyboard support has been cited by some as a reason to stay away from iOS. Now that reason is gone. Although there are still limitations, both for security and privacy, and for technical reasons, pretty much any existing third-party keyboard can now be brought to iOS, and new and previously unimagined ones can be created. (Please, I beg you, don't waste this power on Hello Kitty!).

We'll have to wait for fall to see how well they work, but it should amount to the difference between fantastic and phenomenal.

Next up →

Reader comments

Custom keyboards in iOS 8: Explained

I can't wait to finally ditch the default iOS keyboard. Compared to Google's keyboard on my HTC One, it's nowhere near as advanced or as good at predicting what I'm typing. And swiping is a lot faster for me than typing. Glad Apple's finally doing this.

In all fairness, the very thing that LastPass keyboards were meant to counteract doesn't exist on iOS, and a LastPass keyboard would only operate inside a browser anyway. Outside of the browser, it would be horribly insecure for the very reasons mentioned.

Comments are like ... "opinions," you know? I just said what I think based on my experience (which is pretty extensive actually). You are at liberty to ignore me, and me you, as is both yours and my right.

If your that sensitive though, maybe you don't really believe in your own opinions as much as you should. I notice that while you slammed me, you don't give any reason for your opinion either, so we're probably both just wasting space when it comes down to it.

This is true. with iOS b3 Apple has changed the rules for developers and they now have access to text selection. Since this was specifically addressed in the update notes, I highly doubt they'd pull it out.

I know what you mean but that's disappointing to hear. I've never paid for an app before and i just can't bring myself to do it. i guess i won't be able to take advantage of custom keyboards. this was an addition to iOS 8 i was excited about; now i could care less.

I hope third-party keyboards display proper letter case unlike Apple's keyboard. In this day and age I can find NO reason why Apple's software keyboard needs to display ALL CAPS ALL THE TIME. When typing in lower case, the letters on the keyboard should be lower case. Simple. Logical. Yet it's a totally foreign concept to Apple. This is one area where most other software keyboards surpass Apple's in terms of user interface.

I don't know, Rene. Didn't you write an article a while back addressing just how confusing it was to decipher the caps arrow on the Apple keyboard when they changed the indicator status? If you had to spend time writing a whole article on how to determine when the Apple keyboard will enter capital letters on the screen then something is not right. It bugs the hell out of me when I type something on my iPad, especially when it comes to case-sensitive passwords. More often than not I have to re-enter a password because I cannot quickly tell at a glance if a lower case or upper case letter will be selected. Frustrating. And using an Apple product shouldn't be frustrating.

Swype was my favorite keyboard (long time android guy, recently switched iPhone guy now) and typing didn't feel too at home on the iPhone. Now with swype for the iphone I can finally get a great user experience AND typing experience