Skip to content

Releases: KeyboardKit/KeyboardKitPro

9.9.1

25 May 08:09

Choose a tag to compare

This version patches the host application bundle ID code to not crash.

Note that the code will still return nil on iOS 26.4 and later.

9.9.0

26 Aug 11:41

Choose a tag to compare

This version performs final changes for 9.x and adds support for Liquid Glass.

This version also adds new proxy extensions and fixes two auto-capitalization and keyboard casing bugs.

✨ Features

  • KeyboardController has a new setIsLiquidGlassEnabled(...) function to enable the new Liquid Glass design.

👑 KeyboardKit Pro

  • UITextDocumentProxy has a new moveTextInputCursor(steps:) function.
  • UITextDocumentProxy has a new moveTextInputCursorToBeginning() function.
  • UITextDocumentProxy has a new moveTextInputCursorToEnd() function.

🐛 Bug Fixes

  • KeyboardAction.shift now behaves correctly if tapped as a first action with auto-capitalization disabled.
  • KeyboardContext's preferredAutocapitalizedCase now behaves correctly when it's triggered for new lines.

💥 Keyboard Layout View Modifier

The .keyboardLayout(...) view modifier is no longer needed, since KeyboardView already has a layout parameter.

We can use it to inject a custom layout, which also removes any risk of triggering multiple keyboard layout recalculations.

Since the modifier was in beta, it has been removed. If you use it, please switch to injecting the layout into the initializer instead.

9.8.0

17 Aug 10:56

Choose a tag to compare

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 - Keyboard Layout View Modifier

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.

Warning

This new keyboard layout modifier currently causes too many calculations, so do not use it in production yet. Only use it to evaluate if you think the view modifier-based approach is better than the service approach.

📃 BETA - Keyboard Type Change Handling

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

This works by having the controller check the text document proxy's keyboard type in each textDidChange and redraw if it changes.

This feature is disabled by default in the betas, since it can cause strange behaviors, performance issues, and maybe even crashes.

You can enable it with the enableExperimentalKeyboardTypeChangeTracking(...) function. Make sure to report any problems you find.

✨ 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.
  • 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 Improvements

  • KeyboardKit Pro's new layout builders improve the layout rendering performance.
  • To enable the improvements, apply the new .keyboardLayout(...) view modifier.
  • Return $0.standardLayout(for:) for a standard layout with better performance.
  • You can customzie the standard layout and still get the underlying improvements.

📦 Renamings

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

⚠️ Experimental Features

  • KeyboardInputViewController has a new enableExperimentalDocumentChangeTracking() function.

🐛 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.

9.7.2

16 Jul 06:39

Choose a tag to compare

✨ Features

  • EmojiContext exposes more skin tone functions and improves performance.

💡 Adjustments

  • Some settings types now implement Sendable.
  • KeyboardAppView now injects an EmojiContext into the environment.

9.7.1

15 Jul 22:49

Choose a tag to compare

💡 Adjustments

  • KeyboardAppView now injects an EmojiContext into the environment.

9.7.0

15 Jul 13:56

Choose a tag to compare

After developer feedback, this version reverts some previos deprecations and moves standard values back to the KeyboardAction type.

The idea with the initial refactoring was to attach the standard value builders to each value type, to make them easier to find. But since each builder is related to a KeyboardAction, it makes more sense to convert them back to action extensions, since this groups them all together.

✨ Features

  • EmojiContext and EmojiSettings are two new state types.
  • EmojiKeyboard will now show the last selected emoji skin tone.
  • KeyboardAction.StandardActionHandler registers the skin tone for selected emojis.

💡 Adjustments

  • Autocomplete.ToolbarItem will automatically wrap itself in a scroll view if needed.

🐛 Bug Fixes

  • KeyboardKit Pro adds missing localizations for Bengali.
  • KeyboardAction.shift now renders correctly for caps lock.

🗑️ Deprecations

  • Color+Standard has been deprecated and now use KeyboardAction extensions.
  • Font+Standard has been deprecated and now use KeyboardAction extensions.
  • Keyboard.ButtonStyle+Standard has been deprecated and now use KeyboardAction extensions.
  • KeyboardAction has reverted its standard button color deprecations.

9.6.0

13 Jun 14:51

Choose a tag to compare

This version adds new ways to get standard button styles directly from the style type.

The reason for this change is that it's easier to find, than to have standard style functions on other types.

✨ Features

  • Color has new standard background and foreground button builders.
  • Keyboard.ButtonStyle has a standard(for:action:isPressed:) builder.
  • Keyboard.ButtonBorderStyle has a new standard(for:action:) builder.
  • Keyboard.ButtonShadowStyle has a new standard(for:action:) builder.
  • KeyboardFont has new standard font, font size, and weight builders.

🇹🇯 Localization

  • This version adds support for 🇦🇿 Azerbaijani.
  • This version adds support for 🇧🇩 Bengali.

🐛 Bug Fixes

  • KeyboardFont+Standard now returns a correct font size for .continue.

🗑️ Deprecations

  • KeyboardAction's standardButtonStyle(for:isPressed:) has been deprecated.

9.5.3

09 Jun 09:05

Choose a tag to compare

This version adjusts some licenses.

9.5.2

23 May 13:18

Choose a tag to compare

This version updates some Pro licenses.

9.5.1

22 May 09:15

Choose a tag to compare

This version fixes a few bugs and adds some new style and theme features.

✨ Features

  • Keyboard.ButtonStyle has a new font-agnostic fontWeight property.

💡 Adjustments

  • Keyboard.ButtonStyle now extends more properties with extended(with:).

👑 Pro

  • KeyboardTheme has a new buttonPressedOverlayColor.
  • KeyboardTheme.ButtonType now implements CaseIterable.

🐛 Bug Fixes

  • KeyboardStyle.StandardStyleService now applies the font weight, if defined.