Download Latest Version 9.8.0-beta.2 source code.tar.gz (7.6 MB)
Email in envelope

Get an email when there's a new version of KeyboardKit

Home / 9.8.0-beta.1
Name Modified Size InfoDownloads / Week
Parent folder
KeyboardKitPro.zip 2025-07-23 9.3 MB
9.8.0-beta.1 source code.tar.gz 2025-07-23 7.6 MB
9.8.0-beta.1 source code.zip 2025-07-23 7.9 MB
README.md 2025-07-23 3.9 kB
Totals: 4 Items   24.8 MB 0

With the new view modifier-based callout & style customizations working well, the corresponding services have been soft deprecated.

This mean that they WILL be removed in the next major version, but they are only deprecated with comments and not using attributes.

The reason for this is that they are still used internally. Adding deprecation attributes would trigger a large amount of warnings.

🔣 BETA - View Modifier Layout Customizations

This version adds a .keyboardLayout view modifier to KeyboardKit Pro, which can be used to customize the current keyboard layout.

This works just like the .keyboardCalloutActions and .keyboardButtonStyle modifiers that let you inject a custom value builder.

This view modifier and all new layout values is currently only available in KeyboardKit Pro, but fully available in KeyboardKit 10.

You can use the KeyboardLayout.standard(for:) builder to create a standard layout for any keyboard context and its active locale.

KeyboardKit Pro also adds new localized keyboard layout values for all supported locales. They will replace the localized services.

This modifier based-approach will make it a lot easier to customize the keyboard layout. As such, the services are soft deprecated.

📃 BETA - Document Change Tracking

This version makes the controller redraw its keyboard when the active text field changes, to properly handle keyboard type changes.

This works by observing the proxy's .documentIdentifier property, which will change when the current selected "document" changes.

The .documentIdentifier property is however brittle and will crash the keyboard extension if it's accessed at the incorrect time.

This feature is therefore disabled by default. You can enable it by calling the controller enableDocumentChangeTracking function.

✨ Features

  • Callouts.Actions can now init with actions and chars.
  • Callouts.Actions.base now has domain callout actions.
  • Callouts.ActionCallout now shows domain callout actions.
  • InputSet has brand new default value builder parameters.
  • Keyboard.KeyboardType has a new .webSearch keyboard type.
  • KeyboardAction has brand new standard layout value builders.
  • KeyboardAction has a new .urlDomain action for domain input.
  • KeyboardInputViewController has a new .isDocumentTrackingEnabled property.
  • View has a new .keyboardLayout(_:) view modifier that can inject a custom layout.

👑 Pro

  • KeyboardLayout has new localized value builders for all supported locales.
  • KeyboardLayout has new .setWidth(...) item mutations.
  • KeyboardLayout has a new .baseLayout(...) layout builder.
  • KeyboardLayout has a new .iPadLayout(...) layout builder.
  • KeyboardLayout has a new .iPhoneLayout(...) layout builder.
  • KeyboardLayout has a new .standard(for:) layout builder.

🔧 Performance Adjustments

  • KeyboardKit Pro improves the performance of creating localized input sets.

📦 Renamings

  • The KeyboardCallout namespace has been renamed to Callouts.
  • The KeyboardCalloutContext has been renamed to CalloutContext.

🐛 Bug Fixes

  • KeyboardInputViewController now reloads when the document changes.
  • KeyboardAction.keyboardType will now set the native type for .alphabetic.

🗑️ Deprecations

  • Color+Standard has been deprecated. Use KeyboardAction extensions.
  • CalloutService and all service implementations have been deprecated.
  • InputSet has been nested and is renamed to KeyboardLayout.InputSet.
  • KeyboardKitPro.ProLayoutService and all sub classes have been deprecated.
  • KeyboardLayoutService and all service implementations have been deprecated.
  • KeyboardStyleService and all service implementations have been deprecated.
Source: README.md, updated 2025-07-23