<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://keyboardkit.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://keyboardkit.com/" rel="alternate" type="text/html" /><updated>2026-03-06T09:28:31+00:00</updated><id>https://keyboardkit.com/feed.xml</id><title type="html">KeyboardKit</title><subtitle>KeyboardKit helps you create custom keyboards for iOS and iPadOS, using Swift and SwiftUI. </subtitle><entry><title type="html">New Case Study - BossAI Voice First Keyboard</title><link href="https://keyboardkit.com/blog/2026/03/06/tapling-case-study" rel="alternate" type="text/html" title="New Case Study - BossAI Voice First Keyboard" /><published>2026-03-06T07:00:00+00:00</published><updated>2026-03-06T07:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/03/06/tapling-case-study</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/03/06/tapling-case-study"><![CDATA[]]></content><author><name>danielsaidi</name></author><category term="case-studies" /><summary type="html"><![CDATA[Meet Tapling - a small companion that lives in your keyboard’s suggestion bar and taps along while you type. Type normally and Tapling quietly keeps you company.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/case-studies/tapling/header.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/case-studies/tapling/header.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">iOS 26.4 Host Application Bug</title><link href="https://keyboardkit.com/blog/2026/03/02/ios-26-4-host-application-bundle-id-bug" rel="alternate" type="text/html" title="iOS 26.4 Host Application Bug" /><published>2026-03-02T05:00:00+00:00</published><updated>2026-03-02T05:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/03/02/ios-26-4-host-application-bundle-id-bug</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/03/02/ios-26-4-host-application-bundle-id-bug"><![CDATA[<p>A bug has been discovered in the iOS 26.4 betas, that causes the host application bundle ID value to become empty. This causes different problems for different versions of KeyboardKit.</p>

<h2 id="the-issue">The Issue</h2>

<p>In iOS 26.4 beta, the <code class="language-plaintext highlighter-rouge">hostApplicationBundleId</code> becomes empty. This affects the keyboard’s ability to identify which app is currently using the keyboard.</p>

<p>When the host application bundle ID becomes empty, keyboards may not be able to:</p>

<ul>
  <li>Provide app-specific customizations or behaviors.</li>
  <li>Implement context-aware features that depend on knowing the host app.</li>
  <li>Navigate back to the keyboard from the main application, for instance when starting dictation.</li>
</ul>

<p>Multiple keyboard developers, including those not using KeyboardKit, have reported encountering this same behavior, which means that something has changed at the iOS system level.</p>

<h2 id="what-we-know">What We Know</h2>

<p>The issue has been documented and is being tracked in the KeyboardKit GitHub repository. For detailed information, technical discussion, and updates on this issue, please visit 
<a href="https://github.com/KeyboardKit/KeyboardKit/issues/1014">this bug report</a>.</p>

<h2 id="keyboardkit-implications">KeyboardKit Implications</h2>

<p>This iOS 26.4 change will affect KeyboardKit in different ways, based on which version you’re using.</p>

<p>KeyboardKit 10.2.1 and earlier are using Objective-C to parse the host application information. This approach may crash when the bundle information is missing.</p>

<p>KeyboardKit 10.2.2 and later are using Swift to parse the host application information. This is more robust and will not crash, but the bundle identifier will still be empty.</p>

<h2 id="workarounds-and-next-steps">Workarounds and Next Steps</h2>

<p>While we look at alternatives, or until Apple issues a fix, developers experiencing this issue should:</p>

<ul>
  <li>Upgrade to KeyboardKit 10.2.2 or later.</li>
  <li>Implement graceful fallbacks when the bundle ID is empty.</li>
  <li>Avoid relying solely on the host application bundle ID for critical functionality.</li>
  <li>Monitor the GitHub issue for community-discovered workarounds and updates.</li>
</ul>

<p>We’ll continue monitoring the situation and will update you as more information becomes available or when Apple releases a fix.</p>

<p>If you’re experiencing this issue in your app, please share your findings in the <a href="https://github.com/KeyboardKit/KeyboardKit/issues/1014">GitHub issue</a> to help the community better understand and work around this problem.</p>]]></content><author><name>danielsaidi</name></author><category term="ios-bugs" /><summary type="html"><![CDATA[A bug has been discovered in the iOS 26.4 betas, that causes the host application bundle ID value to become empty. This causes different problems for different versions of KeyboardKit.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/blog/26/0302/image.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/blog/26/0302/image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">New Case Study - BossAI Voice First Keyboard</title><link href="https://keyboardkit.com/blog/2026/02/18/boss-ai-case-study" rel="alternate" type="text/html" title="New Case Study - BossAI Voice First Keyboard" /><published>2026-02-18T07:00:00+00:00</published><updated>2026-02-18T07:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/02/18/boss-ai-case-study</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/02/18/boss-ai-case-study"><![CDATA[]]></content><author><name>danielsaidi</name></author><category term="case-studies" /><summary type="html"><![CDATA[Meet BossAI - a voice-first AI keyboard that transforms how you use your apps. Speak naturally, get polished text. Give a command, get intelligent responses. All without leaving your conversation.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/case-studies/boss-ai/header.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/case-studies/boss-ai/header.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">KeyboardKit 10.3</title><link href="https://keyboardkit.com/blog/2026/02/13/keyboardkit-10-3" rel="alternate" type="text/html" title="KeyboardKit 10.3" /><published>2026-02-13T05:00:00+00:00</published><updated>2026-02-13T05:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/02/13/keyboardkit-10-3</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/02/13/keyboardkit-10-3"><![CDATA[<p>KeyboardKit 10.3 is out! This release introduces on-device next word prediction, significantly faster license validation, and faster layout calculations. Let’s explore what’s new!</p>

<p><img src="/assets/versions/10_3.jpg" alt="KeyboardKit header image" /></p>

<h2 id="keyboard-essentials">Keyboard Essentials</h2>

<p>The <code class="language-plaintext highlighter-rouge">KeyboardInputViewController</code> gains a new <code class="language-plaintext highlighter-rouge">viewWillSetupKeyboardKit()</code> function, providing  you with better control over the keyboard setup lifecycle.</p>

<p>This new function allows for more precise timing when configuring the keyboard, and avoids any side-effects of overriding <code class="language-plaintext highlighter-rouge">viewDidLoad</code> and failing to call <code class="language-plaintext highlighter-rouge">super.viewDidLoad()</code>.</p>

<h2 id="on-device-next-word-prediction">On-Device Next Word Prediction</h2>

<p>KeyboardKit 10.3 brings support for local, on-device next word prediction using Apple’s Foundation Models. This is available on iPhone 15 Pro and later devices running iOS 26.1 or higher.</p>

<p>The new <code class="language-plaintext highlighter-rouge">Autocomplete.NextWordPredictionMethod.local</code> method has been added to make it easy to enable this functionality with code or from the settings screen. This method is enabled by default.</p>

<p>The next word prediction in <code class="language-plaintext highlighter-rouge">Autocomplete.SettingsScreen</code> has been redesigned to better showcase this new option, making it easier for developers to configure and for users pick it manually.</p>

<h2 id="faster-license-validation">Faster License Validation</h2>

<p>KeyboardKit Pro license validation has been significantly optimized in this release. KeyboardKit now validates licenses much faster, dramatically reducing the flickering that could occur during keyboard initialization. This improvement creates a smoother experience when your keyboard first appears.</p>

<p>Additionally, the <code class="language-plaintext highlighter-rouge">Keyboard.ToggleToolbar</code> now displays the base toolbar view even when no license is registered, to provide a nice fallback in case of license expiration.</p>

<h2 id="layout-improvements">Layout Improvements</h2>

<p>This release brings enhancements to keyboard layout rendering. The <code class="language-plaintext highlighter-rouge">standardPhone</code> configuration has been updated to use a 51-point row height in iOS 26, to match Apple’s updated designs.</p>

<p>Layout caching is now enabled by default, and has been converted from an experiment to a setting. This caching mechanism improves rendering performance by storing computed layouts, resulting in faster keyboard display and reduced computational overhead during layout calculations.</p>

<h2 id="settings-and-developer-tools">Settings and Developer Tools</h2>

<p>A new <code class="language-plaintext highlighter-rouge">isPredictiveTextVisualizationActive</code> setting has been added to help developers verify that predictive text features are working correctly. This developer-focused setting provides visibility into the prediction system, making debugging and validation easier during development.</p>

<h2 id="experimental-features">Experimental Features</h2>

<p>The experiment engine has been refactored for easier use. The <code class="language-plaintext highlighter-rouge">Experiment</code> type now provides all you need to get and toggle experiments, and <code class="language-plaintext highlighter-rouge">Experiments</code> has been reduced to a plain namespace.</p>

<h2 id="bug-fixes">Bug Fixes</h2>

<p>This version includes some bug fixes. For instance, the <code class="language-plaintext highlighter-rouge">Keyboard.LocaleSettingsScreen</code> now handles locale changes more reliably, preventing edge cases where changes could behave unexpectedly.</p>

<p>Additionally, the keyboard now performs autocomplete more reliably on launch, ensuring users see suggestions immediately when they begin typing.</p>

<h2 id="conclusion">Conclusion</h2>

<p>KeyboardKit 10.3 brings powerful new capabilities with on-device next word prediction, significant performance improvements with faster license validation and layout caching, and more settings and customization options. These improvements make KeyboardKit more capable and performant.</p>

<p>For complete details about all changes, see the <a href="https://github.com/KeyboardKit/KeyboardKit/releases/tag/10.3.0">KeyboardKit 10.3.0 release notes</a>. Upgrade today to take advantage of these new features and improvements!</p>]]></content><author><name>danielsaidi</name></author><category term="releases" /><category term="autocomplete" /><category term="feedback" /><category term="layout" /><category term="licenses" /><category term="settings" /><summary type="html"><![CDATA[KeyboardKit 10.3 is out! This release introduces on-device next word prediction, significantly faster license validation, and faster layout calculations. Let’s explore what’s new!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/versions/10_3.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/versions/10_3.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">New Case Study - GIF AI Custom GIF Keyboard</title><link href="https://keyboardkit.com/blog/2026/02/09/gif-ai-case-study-copy" rel="alternate" type="text/html" title="New Case Study - GIF AI Custom GIF Keyboard" /><published>2026-02-09T07:00:00+00:00</published><updated>2026-02-09T07:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/02/09/gif-ai-case-study%20copy</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/02/09/gif-ai-case-study-copy"><![CDATA[]]></content><author><name>danielsaidi</name></author><category term="case-studies" /><summary type="html"><![CDATA[Say hi to GIF AI Keyboard - an innovative keyboard that lets you generate custom GIFs on-the-fly and drop them directly into your conversations, without ever leaving your favorite messaging app.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/case-studies/gif-ai/header.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/case-studies/gif-ai/header.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">KeyboardKit 10.2</title><link href="https://keyboardkit.com/blog/2026/01/09/keyboardkit-10-2" rel="alternate" type="text/html" title="KeyboardKit 10.2" /><published>2026-01-09T06:00:00+00:00</published><updated>2026-01-09T06:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/01/09/keyboardkit-10-2</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/01/09/keyboardkit-10-2"><![CDATA[<p>KeyboardKit 10.2 is out! This release adds a <a href="/blog/2026/01/03/a-brand-new-keyboard-dictation-experience">new dictation engine</a> and new settings, as well as bug fixes and improvements.</p>

<p><img src="/assets/versions/10_2.jpg" alt="Blog header image" /></p>

<h2 id="-dictation">🎤 Dictation</h2>

<p>KeyboardKit 10.2 has a new <code class="language-plaintext highlighter-rouge">.keyboard</code> dictation method that makes it possible to perform dictation directly within the keyboard, with an automated app-sync only when needed.</p>

<p>In-keyboard dictation method will only open the main app to start dictation if needed, then navigate back to the keyboard to perform dictation, keeping an open connection to the dictation engine.</p>

<p><img src="/assets/blog/26/0109//dictation.jpg" alt="In-keyboard dictation screenshot" /></p>

<p>In-keyboard dictation is currently opt-in. Follow the <a href="https://docs.keyboardkit.com/documentation/keyboardkit/developer-dictation">dictation developer guide</a> to set up dictation, then enable keyboard dictation with the dictation settings or the <code class="language-plaintext highlighter-rouge">.keyboardDictation</code> experiment.</p>

<p>In-keyboard dictation is the recommended dictation method moving forward. It has new views that provide a great user experience, like <code class="language-plaintext highlighter-rouge">Dictation.ProgressView</code> and <code class="language-plaintext highlighter-rouge">Dictation.VolumeVisualizer</code>.</p>

<p>The <code class="language-plaintext highlighter-rouge">Dictation</code> feature also has new tools like the new <code class="language-plaintext highlighter-rouge">Dictation.VolumeRecorder</code>. <a href="/pro">KeyboardKit Pro</a> unlocks all required tools to easily set up dictation.</p>

<p>The dictation engine supports the following locales, which means you can use it with languages that are not yet supported by the keyboard engine:</p>

<p>Arabic (ar-SA), Cantonese (yue-CN), Catalan (ca-ES), Chinese (zh-CN), Chinese (zh-HK), Chinese (zh-TW), Croatian (hr-HR), Czech (cs-CZ), Danish (da-DK), Dutch (nl-BE), Dutch (nl-NL), English (en-AE), English (en-AU), English (en-CA), English (en-GB), English (en-ID), English (en-IE), English (en-IN), English (en-NZ), English (en-PH), English (en-SA), English (en-SG), English (en-US), English (en-ZA), Finnish (fi-FI), French (fr-BE), French (fr-CA), French (fr-CH), French (fr-FR), German (de-AT), German (de-CH), German (de-DE), Greek (el-GR), Hebrew (he-IL), Hindi (hi-IN), Hindi (hi-IN-translit), Hindi (hi-Latn), Hungarian (hu-HU), Indonesian (id-ID), Italian (it-CH), Italian (it-IT), Japanese (ja-JP), Korean (ko-KR), Malay (ms-MY), Norwegian Bokmål (nb-NO), Polish (pl-PL), Portuguese (pt-BR), Portuguese (pt-PT), Romanian (ro-RO), Russian (ru-RU), Shanghainese (wuu-CN), Slovak (sk-SK), Spanish (es-419), Spanish (es-CL), Spanish (es-CO), Spanish (es-ES), Spanish (es-MX), Spanish (es-US), Swedish (sv-SE), Thai (th-TH), Turkish (tr-TR), Ukrainian (uk-UA), Vietnamese (vi-VN)</p>

<h2 id="️-keyboard">⌨️ Keyboard</h2>

<p>KeyboardKit 10.2 adds a new <code class="language-plaintext highlighter-rouge">.keyboardReplacementOverlay(...)</code> modifier that can be used to easily replace the keyboard view with an equally sized replacement whenever a boolean condition is met.</p>

<h2 id="-experiments">🧪 Experiments</h2>

<p>Experiment has a new <code class="language-plaintext highlighter-rouge">.keyboardDictation</code> experiment that affects the <code class="language-plaintext highlighter-rouge">.keyboardMethod</code> dictation setting. You can use this to easily toggle keyboard dictation on and off.</p>

<p>Experiments also has a new <code class="language-plaintext highlighter-rouge">Experiments.SettingsScreen</code> that can be used to enable experiments. The <code class="language-plaintext highlighter-rouge">KeyboardApp.HomeScreen</code> has a link to this screen, that is hidden by default.</p>

<h2 id="-feedback">🔉 Feedback</h2>

<p>The <code class="language-plaintext highlighter-rouge">FeedbackContext</code> class has a new <code class="language-plaintext highlighter-rouge">isHapticFeedbackAvailable</code> property, which is only true for devices with haptic feedback.</p>

<h2 id="️-settings">🎛️ Settings</h2>

<p>There are many new settings, like the new <code class="language-plaintext highlighter-rouge">isCharacterPreviewEnabled</code> and <code class="language-plaintext highlighter-rouge">isPredictiveTextEnabled</code> keyboard settings, and <code class="language-plaintext highlighter-rouge">isNextCharacterPredictionEnabled</code> autocomplete setting.</p>

<p>The various settings screens have new toggles and structures, to make them provide more options.</p>

<h2 id="conclusion">Conclusion</h2>

<p>KeyboardKit 10.2 adds many new features and improvements. There are also a bunch of bug fixes and general improvements. For more info, please see the <a href="https://github.com/KeyboardKit/KeyboardKit/releases/tag/10.2.0">KeyboardKit 10.2 release notes</a>.</p>]]></content><author><name>danielsaidi</name></author><category term="releases" /><category term="dictation" /><category term="experiments" /><category term="settings" /><summary type="html"><![CDATA[KeyboardKit 10.2 is out! This release adds a new dictation engine and new settings, as well as bug fixes and improvements.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/versions/10_2.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/versions/10_2.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A brand new keyboard dictation experience</title><link href="https://keyboardkit.com/blog/2026/01/03/a-brand-new-keyboard-dictation-experience" rel="alternate" type="text/html" title="A brand new keyboard dictation experience" /><published>2026-01-03T07:00:00+00:00</published><updated>2026-01-03T07:00:00+00:00</updated><id>https://keyboardkit.com/blog/2026/01/03/a-brand-new-keyboard-dictation-experience</id><content type="html" xml:base="https://keyboardkit.com/blog/2026/01/03/a-brand-new-keyboard-dictation-experience"><![CDATA[<p>KeyboardKit 10.2 will feature a brand new dictation experience: in-keyboard dictation. This is a huge improvement for keyboard-based apps that rely heavily on dictation.</p>

<h2 id="the-current-dictation-method">The current dictation method</h2>

<p>As you may know, iOS keyboard extensions are strictly limited by Apple and can’t do as much as you may need. For instance, dictation is hard since a keyboard can’t access the device microphone.</p>

<p>KeyboardKit currently works around this strict limitation by letting the keyboard open the main app to start and perform dictation, then navigate back to the keyboard to apply the result.</p>

<p>While this works fairly well, it’s a lackluster experience for keyboards that rely heavily on dictation. This is why we are happy to announce a brand new dictation method: in-keyboard dictation.</p>

<h2 id="the-new-dictation-method">The new dictation method</h2>

<p>In-keyboard dictation method will only open the main app to start dictation if needed, then navigate back to the keyboard to perform dictation, keeping an open connection to the dictation engine.</p>

<p><img src="/assets/blog/26/0103//preview.jpg" alt="In-keyboard dictation screenshot" width="350" /></p>

<p>The dictation engine will stay open as long as the main app is alive. This lets the user perform many subsequent dictation operations without having to open the main app, which is a big improvement.</p>

<p>Together with this experience comes a new <code class="language-plaintext highlighter-rouge">Dictation.ProgressView</code> which is automatically added to the main <code class="language-plaintext highlighter-rouge">KeyboardView</code> while dictation is active, as well as a <code class="language-plaintext highlighter-rouge">Dictation.Indicator</code>.</p>

<p>When applying a dictation result, the keyboard will put dictation in idle mode instead of stopping it. This keeps the dictation going, while stopping it from writing to the observed result.</p>

<h2 id="an-improved-user-experience">An improved user experience</h2>

<p>The user experience will be greatly improved, since the keyboard will only open the main app <em>one time</em>, instead of each time the user wants to dictate.</p>

<p>The result is a seamless dictation experience where the user can start dictation many times without leaving the keyboard. This makes the dictation feature much more useful.</p>

<p>The new progress and indicator views gives you and the user full control. Users can stop dictation at any time, and you can add these views wherever you need them, and customize them freely.</p>

<h2 id="when-will-this-be-available">When will this be available?</h2>

<p>The new dictation experience will be available as a beta experiment in KeyboardKit 10.2, which will be released later in January.</p>

<p>Don’t hesitate to reach out to discuss how this can help you improve your keyboard-based product.</p>]]></content><author><name>danielsaidi</name></author><category term="pro" /><category term="dictation" /><summary type="html"><![CDATA[KeyboardKit 10.2 will feature a brand new dictation experience: in-keyboard dictation. This is a huge improvement for keyboard-based apps that rely heavily on dictation.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/blog/26/0103/image.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/blog/26/0103/image.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Black Friday 2025</title><link href="https://keyboardkit.com/blog/2025/11/25/black-friday" rel="alternate" type="text/html" title="Black Friday 2025" /><published>2025-11-25T07:00:00+00:00</published><updated>2025-11-25T07:00:00+00:00</updated><id>https://keyboardkit.com/blog/2025/11/25/black-friday</id><content type="html" xml:base="https://keyboardkit.com/blog/2025/11/25/black-friday"><![CDATA[<p>KeyboardKit’s Black Friday 2025 Deal gives you 50% off on your first KeyboardKit Pro purchase! This means that you can save 50% of an entire year if <a href="/pro">sign up for KeyboardKit Pro today</a>!</p>

<p><img src="/assets/headers/promos/bf25.jpg" alt="Black Friday Banner" /></p>

<p>This amazing deal is valid through November, and works with the Basic, Silver, <em>and</em> Gold tier. This means that you can save up to <a href="/pro">$2.500</a> if you sign up for the <a href="/pro">Yearly Gold Plan</a>!</p>

<p>Enter the following discount code in the <a href="https://kankoda.gumroad.com/l/keyboardkitpro">checkout flow</a>, to apply the discount to your Pro purchase:</p>

<div class="box pro">
  BLACK-FRIDAY-2025
</div>

<p>There has never been a better time to go Pro! See the <a href="/pro">KeyboardKit Pro info page</a> for more details.</p>

<h2 id="network--community">Network &amp; Community</h2>

<p>We are so happy to have an amazing network of friends and partners. See <a href="https://blackfridaydeals.dev/deals/swift/#keyboard-kit-pro-list">BlackFridayDeals.dev</a> for other amazing Black Friday deals from the community.</p>]]></content><author><name>danielsaidi</name></author><category term="promos" /><summary type="html"><![CDATA[KeyboardKit’s Black Friday 2025 Deal gives you 50% off on your first KeyboardKit Pro purchase! This means that you can save 50% of an entire year if sign up for KeyboardKit Pro today!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/headers/promos/bf25.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/headers/promos/bf25.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">KeyboardKit 10.1</title><link href="https://keyboardkit.com/blog/2025/11/10/keyboardkit-10_1" rel="alternate" type="text/html" title="KeyboardKit 10.1" /><published>2025-11-10T06:00:00+00:00</published><updated>2025-11-10T06:00:00+00:00</updated><id>https://keyboardkit.com/blog/2025/11/10/keyboardkit-10_1</id><content type="html" xml:base="https://keyboardkit.com/blog/2025/11/10/keyboardkit-10_1"><![CDATA[<p>KeyboardKit 10.1 is out! This release adds new features and improves the typing and view rendering performance to reduce lag while typing.</p>

<p><img src="/assets/versions/10_1.jpg" alt="Blog header image" /></p>

<h2 id="-secondary-swipe-actions">💥 Secondary Swipe Actions</h2>

<p>KeyboardKit 10.1 adds swipe down actions to iPad, when creating a layout with alphabetic, numeric, and symbolic input sets. These actions are applied for most supported locales.</p>

<p><img src="/assets/blog/25/1105/ipad-alphabetic.jpg" alt="Alphabetic keyboard with swipe down actions" /></p>

<p>Swipe down actions are currently disabled for locales where the final result was not good enough.</p>

<h2 id="-experiments">🧪 Experiments</h2>

<p>KeyboardKit 10.1 adds a new way to handle experimental features, with the new <code class="language-plaintext highlighter-rouge">Experiment</code> enum.</p>

<p>The enum can be used to enable and disable active experiment. You can present these experiments to your users if you want to give them the choice to opt-in to an ongoing experiment.</p>

<p>Completed experiments remain as inactive, deprecated enum cases until the next major version, in which they are removed.</p>

<h2 id="️-performance">⚡️ Performance</h2>

<p>KeyboardKit 10.1 improves the typing and view rendering performance through layout caching and view hierarchy cleanups. This results in less layout calculations and fewer views to render.</p>

<h3 id="layout-caching">Layout caching</h3>

<p>Layout caching is a new, experimental feature that aims to reduce expensive layout recalculations. It’s disabled by default and can be enabled with <code class="language-plaintext highlighter-rouge">Experiment.layoutCaching.setEnabled(true)</code>.</p>

<h3 id="view-hierarchy-cleanups">View hierarchy cleanups</h3>

<p>The keyboard button gesture view modifier has been optimized by removing a geometry proxy for each modifier. This results in a cleaner and lighter view hierarchy.</p>

<h2 id="-app">📱 App</h2>

<p>The <code class="language-plaintext highlighter-rouge">KeyboardApp.HomeScreen</code> is no longer a Pro feature. This means that it can be used by everyone.</p>

<p><img src="/assets/blog/25/1105/keyboardapp-homescreen.jpg" alt="Home Screen" /></p>

<p>The screen will only render links to the features that are included in your license, but it will show the keyboard status, and let you customize it with the <code class="language-plaintext highlighter-rouge">header</code> and <code class="language-plaintext highlighter-rouge">footer</code> view builders.</p>

<h2 id="-host-application">🏠 Host Application</h2>

<p>KeyboardKit 10.1 lets you create and pass in your own custom host application values. This lets you extend the host application logic with more apps than what is known by the SDK.</p>

<h2 id="️-external-keyboards">⌨️ External Keyboards</h2>

<p>The <code class="language-plaintext highlighter-rouge">ExternalKeyboardContext</code> has a new <code class="language-plaintext highlighter-rouge">isEnabledOnSimulator</code> property. This is <code class="language-plaintext highlighter-rouge">false</code> by default, to avoid a bug where the keyboard could auto-collaps when running on a Simulator.</p>

<h2 id="conclusion">Conclusion</h2>

<p>KeyboardKit 10.1 adds many new features, improves performance, and fixes many small bugs and inconsistencies. For more info, please see the <a href="https://github.com/KeyboardKit/KeyboardKit/releases/tag/10.1.0">KeyboardKit 10.1 release notes</a>.</p>]]></content><author><name>danielsaidi</name></author><category term="releases" /><category term="actions" /><category term="app" /><category term="external" /><category term="host" /><category term="layout" /><category term="performance" /><summary type="html"><![CDATA[KeyboardKit 10.1 is out! This release adds new features and improves the typing and view rendering performance to reduce lag while typing.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/versions/10_1.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/versions/10_1.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Alex Leow’s BiAffect talk at Stanford</title><link href="https://keyboardkit.com/blog/2025/11/10/alex-biaffect-talk-at-stanford" rel="alternate" type="text/html" title="Alex Leow’s BiAffect talk at Stanford" /><published>2025-11-10T05:00:00+00:00</published><updated>2025-11-10T05:00:00+00:00</updated><id>https://keyboardkit.com/blog/2025/11/10/alex-biaffect-talk-at-stanford</id><content type="html" xml:base="https://keyboardkit.com/blog/2025/11/10/alex-biaffect-talk-at-stanford"><![CDATA[<p>Alex Leow from BiAffect just gave a talk at Stanford, on how the BiAffect keyboard can track mental health through the collection and analysis of a person’s typing profile.</p>

<p><img src="/assets/case-studies/biaffect/header.jpg" alt="BiAffect logo" /></p>

<p>When we started working on KeyboardKit 10 years ago, we were intrigued by the complex challenge of replicating the native iOS keyboard. We have now had the luxury of working on it for many years, and have gotten to meet many amazing people and companies along the way.</p>

<p>One such person is Alex and her team at BiAffect, who created a custom keyboard to enable mental health research through the analysis of a person’s typing profile. The way in which a person types lets BiAffect detect if a person is entering or already in a bipolar episode. This makes it possible to get early help, and to get a deeper understanding on illness patterns and behaviors.</p>

<p>Mental health is one of many very exciting areas where a custom keyboard is a critical enabler, and BiAffect goes way beyond what we envisioned when we started working on KeyboardKit. Check out <a href="https://www.youtube.com/watch?v=fcA3bgtcdcs">Alex’s talk</a> for inspiration on how a custom keyboard could benefit you or your company.</p>]]></content><author><name>danielsaidi</name></author><category term="general" /><category term="case-studies" /><summary type="html"><![CDATA[Alex Leow from BiAffect just gave a talk at Stanford, on how the BiAffect keyboard can track mental health through the collection and analysis of a person’s typing profile.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://keyboardkit.com/assets/case-studies/biaffect/header.jpg" /><media:content medium="image" url="https://keyboardkit.com/assets/case-studies/biaffect/header.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>