Version 1.23 โ precise input tracking, fewer preload artifacts, and transparent KeyboardExtender ๐ฏ
1.23.0 is intentionally a small release. There is no big new component this
time โ instead it makes KeyboardAwareScrollView track the focused input more
precisely, removes the remaining visual artifacts of the keyboard preload, and lets
KeyboardExtender drop its background.
๐ฏ More precise focused input trackingโ
KeyboardAwareScrollView scrolls to the caret of the focused input, so its
accuracy depends entirely on how precisely the native side reports where that
caret is. This release reworks how iOS collects this information: iOS now
reports geometry similar to Android, and KeyboardAwareScrollView becomes
more consistent across platforms.
bottomOffset and paddingTopPreviously, on iOS the caret position of a single-line TextInput ignored its
paddingTop, so the caret was reported higher than it really was. Because of
that KeyboardAwareScrollView stopped scrolling a bit too early and the text
could end up under the keyboard. If you compensated for that with a bigger
bottomOffset, you may now be able to reduce it on iOS.
๐งน preload with fewer artifactsโ
KeyboardProvider preloads the keyboard on iOS by default to remove the lag of
the very first focus. Some developers reported that the preload itself could be
visible: the keyboard flashed over the first screen when the app was launched
from Spotlight with the Spotlight keyboard still open. This is fixed in
1.23.0.
If you disabled preload or called KeyboardController.preload() manually at
a "safe" moment to work around these artifacts, give the default behavior
another try:
-<KeyboardProvider preload={false}>
+<KeyboardProvider>
If you still see the keyboard flashing or any other side effect โ please open an issue with the steps to reproduce it. I'd like to fix the remaining cases.
โฌ transparent prop for KeyboardExtenderโ
KeyboardExtender always wrapped its content in a keyboard-styled container: a
full-width glass capsule on iOS 26+, and a keyboard background on earlier iOS
versions and Android. That's a good default for a bar with several controls,
but not for a lone control that should sit on the keyboard on its own โ a
floating "Done" pill like the native UIToolbar draws for a single trailing
item, or a row of buttons similar to the ones WhatsApp attaches to the keyboard
in its image editor:
The new transparent prop removes that container, so your content draws its
own surface:
import { KeyboardExtender } from "react-native-keyboard-controller";
function DoneExtender() {
return (
<KeyboardExtender transparent>
<DonePill />
</KeyboardExtender>
);
}
- iOS 26+: the glass capsule is skipped, the content keeps the same offset above the keyboard.
- iOS < 26: no keyboard background is drawn behind the content.
- Android: the keyboard background view is skipped.
The prop defaults to false, so nothing changes for existing usages, and it
can be toggled at runtime โ even while the keyboard is open. Thanks to
kylesuss for proposing and implementing it
(#1714).
You can read more on the
KeyboardExtender API page.
๐ค What's next?โ
With the era of AI I've started to receive more bug reports โ and I actually like it. Now I can be confident that every next release produces fewer and fewer bugs and the package handles even more edge cases. Open issues remain my top priority:
- Issues with more ๐ reactions are prioritized first โ that's how I track what matters most to the community.
- Issues labeled "sponsor ๐" receive highest priority as part of dedicated sponsor support.
I'm also working on new exciting features and will be publishing previews of how they work on Twitter, so don't forget to subscribe.
Stay tuned and follow me on Twitter and GitHub for updates. Thank you for your support! ๐
