FAQ

Find answers to common questions about custom keyboards and KeyboardKit below. If you can’t find what you’re looking for, feel free to reach out.

Custom Keyboards

What is a custom keyboard?

A custom keyboard is a third-party keyboard extension that can replace the native iOS keyboard. It lets users type using your app’s unique features in any app that supports text input.

Can custom keyboards access the internet?

By default, custom keyboards run in a sandboxed environment without network access. Users can grant “Full Access” to enable network features, but this requires explicit permission and must be disclosed in your privacy policy.

Are custom keyboards available on all Apple platforms?

Custom keyboards are supported on iOS and iPadOS. They are not supported on macOS, watchOS, or tvOS, where the native system input methods apply, but these platforms can be used to create companion apps for e.g. settings.

Can a custom keyboard replace the system keyboard entirely?

Yes! Once a user installs and enables your keyboard in Settings, they can set it as their default keyboard and use it in any app that accepts text input.

KeyboardKit

What is KeyboardKit?

KeyboardKit is a comprehensive Swift SDK that helps developers build custom keyboards for iOS and iPadOS. It provides all the tools you need including autocomplete, autocorrect, emoji support, and much more.

Do I need prior experience with keyboard development?

While some iOS development experience is helpful, KeyboardKit is designed to be beginner-friendly. Our comprehensive documentation and examples will help you get started quickly.

Which languages are supported?

KeyboardKit supports 75+ locales out of the box, with locale-specific autocomplete, spell checking, and keyboard layouts. You can also add support for additional languages.

Is KeyboardKit open source?

The KeyboardKit SDK is closed source, but freely available from GitHub. KeyboardKit Pro, which adds advanced features like autocomplete and more locales, requires a commercial license.

How do I get started?

Add KeyboardKit to your project via Swift Package Manager, then follow the getting started guide. You can be up and running in minutes.

Licensing & Pricing

What is the difference between KeyboardKit and KeyboardKit Pro?

KeyboardKit is the free, core SDK. KeyboardKit Pro is a commercial add-on that unlocks advanced features like autocomplete, AI support, more locales, dictation, and more. See KeyboardKit Pro for more information.

Can I use KeyboardKit for commercial projects?

Yes! KeyboardKit offers different licensing options including commercial licenses. Check our pricing page for more details on which plan suits your needs.

Can I try KeyboardKit Pro before purchasing?

Yes! You can try all pro features for free using a trial license. The KeyboardKit app also lets you explore all pro features on your device without writing any code.

Do licenses auto-renew?

Subscription licenses renew automatically. You can cancel at any time from your Gumroad purchase page. Business licenses renew annually as defined in the license terms.

Can I use one license for multiple apps?

License terms vary by plan. Most plans cover a single app. If you need to use KeyboardKit across multiple apps or products, please contact us to discuss a suitable arrangement.

Privacy & Security

Does KeyboardKit collect any user data?

No. KeyboardKit does not collect, store, or transmit any user data. All processing happens on-device. See the privacy policy for details.

Does using KeyboardKit require Full Access?

No. KeyboardKit works without Full Access although some advanced features like dictation or network-based autocomplete require Full Access, but this is always disclosed to the user.

Is KeyboardKit compliant with App Store guidelines?

Yes. KeyboardKit is designed to follow Apple’s guidelines for keyboard extensions, and is ready for App Store distribution.

Terminology

Custom Keyboard

A custom keyboard is a keyboard app extension that can replace the system keyboard in any app. Unlike an app, a custom keyboard extension runs within the context of another app. It can offer specialized input methods, enhanced autocomplete and autocorrections, a custom emoji keyboard, and completely different input methods like swipe typing or voice-to-text conversion.

Full Access

Custom keyboards are very limited by default, but can request Full Access to unlock capabilities like network access, location services, access to the device dictionary and pasteboard, etc. Full Access requires explicit user consent and triggers privacy warnings. Many users decline Full Access due to privacy concerns, so developers must design their keyboards to function without it.

Host Application

The host application is the app that is using the keyboard for text input. Different apps may have different input requirements, or custom input traits that affect the keyboard. A custom keyboard interacts with the host app through a Text Document Proxy.

Input View Controller

A UIInputViewController is the main class in a custom keyboard. It’s responsible for the custom keyboard lifecycle and how a keyboard is loaded, displayed, and terminated. Unlike regular view controllers, an input view controller has a special lifecycle, which is essential to understand for proper resource and state management.

Main Application

The main application is the app that contains the custom keyboard extension. It’s a great place for keyboard settings, user onboarding, and other features that need a large user interface or access to certain features like microphone access. Both targets can use App Groups to communicate with each other.

Memory Cap

Custom keyboards are memory capped at ~60-70 MB, based on the device and OS. Exceeding this limit results in immediate system termination. This is particularly challenging for keyboards that use large AI or language models, or memory-intensive media content.

Sandboxing

Custom keyboards operate within a heavily sandboxed environment that restricts access to system resources and user data. This ensures that malicious keyboards can’t access sensitive information, and prevents keyboards from launching other apps or accessing certain system APIs without user consent.

Text Document Proxy

A custom keyboard communicates with the host application through a Text Document Proxy, which is the main interface for text manipulation in a custom keyboard. It provides methods to insert and delete text, and read limited context around the input cursor, while preventing the keyboard from accessing the full content of text fields.