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 use your app’s unique features in any app that supports text input.

Can a custom keyboard access the internet?

By default, custom keyboards run in a sandboxed environment without network access. Users can grant a keyboard “Full Access” to enable network features, but this requires explicit user permission.

Can a custom keyboard be used on all Apple platforms?

Custom keyboards are supported on iOS and iPadOS. They’re not supported on macOS, watchOS, or tvOS, where native input methods apply, but these platforms can be used to host companion apps.

Can a custom keyboard replace the system keyboard?

Yes! Once a user installs and enables your keyboard in Settings, they can select it while typing, in any app that accepts text input.

KeyboardKit

What is KeyboardKit?

KeyboardKit is a comprehensive custom keyboard framework that helps you build custom keyboards for iOS and iPadOS. It provides all the tools you need and can be customized to great extent.

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.

Do I need prior experience with custom 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, callout actions, 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 unlocks pro features, requires a commercial license.

Can I use KeyboardKit for commercial projects?

Yes! You can freely use KeyboardKit in any app. KeyboardKit Pro requires a commercial license to be used.

KeyboardKit Pro

What is KeyboardKit Pro?

KeyboardKit is the free, core SDK. KeyboardKit Pro is a commercial add-on that unlocks pro features that take your keyboard to the next level.

What features are included in KeyboardKit Pro?

KeyboardKit Pro unlocks many pro features, like autocomplete & predictions, 75+ locales, AI support, dictation, an emoji keyboard, in-keyboard typing, a full document reader, and much more.

Can I try KeyboardKit Pro before purchasing?

Yes! You can try all pro features for free with a trial license. The KeyboardKit app also lets you try many core and pro features directly on your device without writing any code.

Licenses

How do I purchase a license?

KeyboardKit’s standard licenses are puchased and managed via Gumroad, while business licenseses can be purchased using any payment method you prefer, e.g. regular invoicing and bank transfer.

What is the difference between a standard and a business license?

KeyboardKit’s standard license subscriptions are aimed at indie developers and startups, while a business license is required for large companies and high grossing apps.

How are licenses validated?

KeyboardKit’s standard licenses validate over a network call, and therefore require Full Access. Business licenseses are validated on device, and do not need Full Access. Read more here.

Do licenses auto-renew?

KeyboardKit’s standard licenses automatically renew until you cancel it from your Gumroad purchase. A business license can stipulate its license renewal in its license terms.

Can I use one license for multiple apps?

KeyboardKit’s standard licenses only cover a single app, while a business license can be used for multiple apps within the same company.

Privacy & Security

Does KeyboardKit collect any user data?

KeyboardKit does not collect, store, or transmit any user data. All processing happens on-device, unless you explicitly use external services. See the privacy policy for details.

Does using KeyboardKit require Full Access?

KeyboardKit works without Full Access although standard licenses use Full Access to perform network validation. Business licenses do not require Full Access

Is KeyboardKit compliant with App Store guidelines?

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 extra capabilities like network access, location services, access to the device dictionary and pasteboard, etc. Full Access requires explicit user consent and triggers privacy warnings. Since 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 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. KeyboardKit has ways to let you perform memory intense tasks in the main app, and sync the result to the keyboard.

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.