KeyboardKit tries to honor semantic versioning:
- Deprecations can happen at any time.
- Deprecations should only be removed in
majorversions. - Breaking changes should not occur in
minorandpatchupdates. - Breaking changes can occur in
minorandpatchupdates, if needed for critical fixes.
These release notes only cover the current major version.
SystemKeyboardnow only shows an emoji button if the license key unlocks the emoji keyboard.
This version adjusts localization and adds support for Inari Sámi and Northern Sámi.
SubmitLabel+CaseIterablemakes the type implementCaseIterable.
KeyboardLocale.northernSamiis a new supported locale.KeyboardLocale.inariSamiis a new supported locale.
KeyboardInputViewControllernow unregisters itself as shared controller in deinit.KKL10nno longer has a.searchEmojikey.
PreviousAppNavigatorhas been deprecated..keyboardDictationmodifiers now support injecting a custom service.
KeyboardUrlOpenerhas been deprecated.KKL10n.emergencyCallhas been deprecated.KKL10n.keyboardTypeAlphabetichas been renamed to.switcherAlphabetic.KKL10n.keyboardTypeNumerichas been renamed to.switcherNumeric.KKL10n.keyboardTypeSymbolichas been renamed to.switcherSymbolic.KKL10n.okhas been deprecated.
This version fixes a configuration bug in KeyboardKit Pro, that caused autocorrect to not disable.
This version improves autocomplete and localized provider capabilities.
This version removes the temporary migration types that were added in 8.0. To upgrade to this or any later version, first update to 8.0 and follow the migration guides. This will remove any breaking changes when upgrading to this version.
Autocompletehas a newAutocorrectionDisabledToContextModifermodifier.AutocompleteContexthas a newisAutocorrectDisabledproperty.LocaleDictionaryhas new getters and setters.StandardCalloutActionProviderhas a newregisterLocalizedProviderfunction.StandardKeyboardLayoutProviderhas a newregisterLocalizedProviderfunction.Viewhas a newautocorrectionDisabled(with:)modifier.
SystemKeyboardnow automatically honors any.autocorrectionDisabled()that is applied above it.
LocalAutocompleteProvidermaxCountis nowpublicand mutable.LocalAutocompleteProviderremoves autocorrect suggestions if the context has autocorrect disabled.RemoteAutocompleteProviderautocompleteSuggestionsis nowopen.RemoteAutocompleteProviderproperties are nowpublicand mutable.RemoteAutocompleteProviderremoves autocorrect suggestions if the context has autocorrect disabled.
KeyboardLocale.kurdish_sorani_pcnow displays its localized name properly in iOS 17.
AutocompleteContextisEnabledis renamed toisAutocompleteEnabled.
This patch removes previous app navigation from KeyboardKit Pro after sudden App Store review rejections.
KeyboardInputViewControllerno longer shows license validation error alerts by default.KeyboardInputViewControllernow lets you define whether or not to show a license validation error alert.PreviousAppNavigatordefault navigator is removed, since it started causing occasional review rejections.
This patch improves the performance of the KeyboardKit Pro license validation.
This patch reverts the dictation navigation change that was added to 8.0.7.
This patch improves system keyboard toolbars and the ToggleToolbar in KeyboardKit Pro.
The demo app has been improved to persist the typed text and to show more pro features, like the full document reader and a theme picker.
Collection<KeyboardTheme>has a new, staticallPredefinedproperty.KeyboardTheme.ShelfViewis a new view that creates scrolling shelves.KeyboardTheme.ShelfViewItemis a new view that can be used in a theme shelf view.
KeyboardTheme.Collectionis nowIdentifiable.SystemKeyboardnow applies a minimum height to custom toolbars, to avoid confusion where they disappear when no height is applied.SystemKeyboardButtonPreviewnow disables hit testing for the button view.
Gestures.GestureButtonnow has a public initializer.Gestures.ScrollViewGestureButtonnow has a public initializer.SystemKeyboardButtonPreviewnow uses the passed in style provider, if any.ToggleToolbarnow uses the same default.slideUpanimation for all initializers.ToggleToolbarnow applies a content shape to the default toggle to improve tap area.
ToggleToolbardeprecates thetoggleViewinitializer in favor for the shortertoggleone.
This patch fixes an iOS 17 dictation navigation bug and syncs the controller's host bundle ID with the keyboard context.
KeyboardContexthas a newhostApplicationBundleIdproperty.
SystemKeyboardButtonPreviewhas been simplified and made greedy.SystemKeyboardPreviewcan now be used as a header/footer without useing any modifiers.
PreviousAppNavigatorhas been configured to work even in iOS 17.StandardKeyboardDictationServicecan once again navigate back when dictation finishes.
InputSet.Turkishhas been slightly adjusted.SystemKeyboardButtonPreviewnow renders themes correctly.PreviousAppNavigatornow renders themes correctly.
SystemKeyboardPreviewheader/footer modifiers are removed since they're no longer needed. See the docs.
This patch makes the BaseKeyboardLayoutProvider input set properties mutable.
This patch makes the LocalAutocompleteProvider callout function open instead of public.
This patch improves the text routing views and fixes a big in the text field.
KeyboardTextViewmakes it easier to define leading and trailing views for the native text field.
KeyboardTextViewapplies padding to the native text field's left and right side views.
KeyboardTextViewauto-reset in 8.0.2. This has been fixed.
This patch tweaks some migration guides before removing them in 8.1.
This patch moves emoji features from Emojis (which was introduced in 8.0) to Emoji after developer feedback that Emojis was a strange prefix.
This patch makes some Pro views throwing instead of rendering empty content, since this was confusing. If you run into problems with this, just prefix your call with try?.
- KeyboardKit Pro's text routing views no longer crashes in iOS 17 when full access is disabled.
EmojiCategoryinitializers are now throwing.Emojiskin tones are now throwing.Emoji.Versionfunctionality is now throwing.Emojisis deprecated since all functionality is moved intoEmoji.
Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK!
KeyboardKit 8.0 is all about cleaning up the library to make it better structured and easier to use. It removes previously deprecated code, moves types into namespaces, and removes low-value utilities, including types solely used for DocC exposure.
Central types like SystemKeyboard are easier to use. Passing state and services instead of a controller reduces the risk for memory leaks. It also no longer needs a width, but will take up as much space as it needs.
These updates has helped enabling new features, like fading the keyboard buttons while moving the cursor with space and other quality of life improvements and fixes. Accessibility has been drastically improved and the emoji keyboard redesigned.
Most emoji features are now Pro features, including the emoji keyboard. The SystemKeyboard automatically removes the emoji key if no emoji keyboard is available.
The documentation has been extensively updated to provide more information and code examples. Please report any inconsistencies found, as many changes have been made.
I hope that you will love this major update to KeyboardKit!
If you're a KeyboardKit 7 user, the best way to migrate to KeyboardKit 8 is to first upgrade to the last available 7.9 version. This version contains deprecations that helps you prepare for some of the changes in KeyboardKit 8.
As you then upgrade to KeyboardKit 8, the 8.0 release has many TEMPORARY deprecations to assist migration from KeyboardKit 7. These temporary deprecations will be removed in 8.1.
You may run into some breaking changes, since there are some type changes that can't be handled by these deprecations. I have tried to keep these to a minimum, but see the breaking changes section below if you run into any problems.
Here's a list of some things that may be important to know
KeyboardInputViewControllerhas moved state properties into astateproperty.KeyboardInputViewControllerhas moved service properties into aservicesproperty.StandardKeyboardActionHandlerno longer remembers tapped emojis. This is done with the pro handler.SystemKeyboardprovides MUCH easier customization, but requires explicit view builders.SystemKeyboardnow hides theemojikeyboard key ifemojiKeyboardis anEmptyView.SystemKeyboardno longer has an emoji keyboard by deafult, since it's now a Pro feature.SystemKeyboardno longer auto-hides the toolbar. You can do this in thetoolbarbuilder.
InputSetBasedKeyboardLayoutProvideris a new provider.KeyboardActionnow has astandardAccessibilityLabel.KeyboardAction.emojican now be created with a string.KeyboardActionHandlernow handles autocomplete suggestions.KeyboardButtonnow hasedgeInsetsand anisPressedbinding.KeyboardContexthas proxy properties that mirror the controller.KeyboardInputViewControllerhas a newsetupProErrorproperty.KeyboardLayout.Itemhas a newwidth(forRowWidth:inputWidth:)function.KeyboardLocalehas new initializer that supports fuzzy name initialization.KeyboardLocalehas new, convenient collection extensions to get locales.KeyboardStyle.Backgroundnow supports specifying images in more ways.KeyboardStyle.Backgroundnow supports specifying the image content mode.KeyboardStyle.Buttonnow supports background color AND background style.KeyboardStyle.EmojiKeyboardhas a lot more configuration parameters now.SpaceDragGestureHandlerproperties are now mutable to allow customizations.SystemKeyboardhas new view builders to make it MUCH easier to customize it.SystemKeyboardnow fades out the buttons when a space cursor drag is active.StandardKeyboardActionHandlercan now be created on all supported platforms.StandardKeyboardActionHandlerhas a newemojiRegistrationproperty.StandardKeyboardActionHandlerhas a newtryRegisterEmoji(after:on:).StandardKeyboardActionHandlerhas a newtryPerformAutocomplete(after:on:).StandardKeyboardStyleProvidernow adjusts styles when a space drag is active.View.keyboardButtonsupports custom insets and applies a menu tonextLocale.View.keyboardButtonapplies accessibility labels for actions that define them.View.keyboardButtonis a new extension that applies both a style and gestures.View.keyboardCalloutContaineris a new extension that will apply both callouts.View.keyboardLayoutItemSizeis a new extension that applies a layout item size.
AutocompleteProvideris now async.EmojiKeyboarduses the standard context style as default.Gesture.KeyboardButtonGesturesno longer blocks space releases.InputSethas been converted to a struct. All subsets are removed.KeyboardActionno longer defines a default.nextKeyboardaction.KeyboardControllerhas fewer functions, since it's not used as much.KeyboardInputViewControlleris no longer used to insert suggestions.SystemKeyboardno longer needs you to provide it with an explicit width.SystemKeyboardnow guides you to use the controller-based setup function.KeyboardInputViewControllertextDidChangeperforms operations after a delay.
-
Many emoji types have become Pro features.
-
Many routing types have become Pro features.
-
The pro setup error view has been redesigned.
-
The pro setup error view now overlays your view.
-
EmojiKeyboardhas a new state/services initializer. -
EmojiKeyboardhas menu icons that look more native. -
Emojis.Categoriesfilters out all unavailable emojis. -
Emojis.Versionhas more ways to handle emoji versions. -
ExternalKeyboardContextclass is now a Pro feature. -
FeedbackToggleparameter is renamed to configuration. -
FullDocumentContextReaderhas been removed (use proxy). -
KeyboardTextField&KeyboardTextVieware now Pro features. -
LocalAutocompleteProviderautocorrectsitoIin English. -
ProCalloutActionProvideris a new Pro callout action provider. -
RemoteAutocompleteProvideris now available to all license tiers. -
SystemKeyboardPreviewreplaces all other system keyboard previews. -
SystemKeyboardButtonPreviewis a new system keyboard button preview. -
KeyboardInputViewControllerhas a license config action for both setups.
Emojis.Versionfixes an iOS availability bug for Unicode v15.FeedbackConfigurationused an incorrect disabled audio config by default.KeyboardAction.backspacedidn't properly trigger autocapitalization.SystemKeyboardnow uses images for.spacefrom the style provider.textDidChangeperforms autocomplete after an async delay, to let the proxy update.textDidChangeapplies autocapitalization after an async delay, to let the proxy update.
-
All deprecated code has been removed.
-
DocC exposing types have been removed.
-
Many emoji types have been moved to Pro.
-
Many routing types have been moved to Pro.
-
English input sets have been moved to Pro.
-
Migration deprecations are not listed here.
-
AudioFeedback.Engineis no longer open to inheritance. -
Autocomplete.ToolbarItemSubtitleinit takes a suggestion. -
CalloutContext.ActionContextno longer uses an action handler. -
CasingAnalyzerhas been removed (useStringextensions). -
DisabledCalloutActionProviderhas been removed. -
EmojiKeyboardItemhas been removed. -
EmojiProviderhas been removed. -
EnglishCalloutActionProvideris now a Pro feature. -
EnglishKeyboardLayoutProviderhas been removed. -
ExternalKeyboardContextis now a Pro feature. -
FeatureTogglehas been removed. -
HapticFeedback.Engineis no longer open to inheritance. -
KeyboardAction.emojiCategoryhas been removed. -
KeyboardCharacterProviderhas been removed (useStringextensions). -
KeyboardColorhas been made internal. -
KeyboardColorReaderhas been removed (useColorextensions). -
KeyboardContextno longer has a controller-based init (usesync(with:)). -
KeyboardContexttextDocumentProxyis read-only, butoriginalTextDocumentProxycan be set. -
KeyboardHostingControllerhas been made internal. -
KeyboardSettingsUrlProviderhas been removed (useURL.keyboardSettings). -
KeyboardStyle.EmojiKeyboardhas different parameters for the new menu design. -
KeyboardTextContextwas not used and has been removed to avoid complexity. -
Routingtext input components are now Pro features. -
KeyboardTextFieldwas not used and has been removed to avoid complexity. -
LocaleDirectionAnalyzerhas been removed (useLocaleextensions). -
LocaleNameProviderhas been removed (useLocaleextensions). -
NextKeyboardControllerhas been made internal. -
QuotationAnalyzerhas been removed (useStringextensions). -
SentenceAnalyzerhas been removed (useStringextensions). -
StandardCalloutActionProvider.standardProviderhas been removed. -
StaticKeyboardLayoutProviderhas been removed. -
SystemKeyboardnow requires explicit view builders. -
SystemKeyboardItemcan no longer be initialized outside the library. -
ToggleToolbaris now a Pro feature. -
View.keyboardButtonStyle(...)no longer has anisPressedparameter. -
WordAnalyzerhas been removed (useStringextensions).
