Releases: kirillzyusko/react-native-keyboard-controller
Release 1.13.0
Release that allows to use the functionality of this library in Modal
s on Android, adds offset
property to KeyboardGestureArea
component, gives an ability to prevent default actions from being fired in KeyboardToolbar
, brings support for [email protected]
, contains a lot of other bug fixes and improves the stability of the library. Read more about all changes in blogpost 🎉
🐛 Bug fixes
- proper
ref
deallocation withFlatList
->KeyboardAwareScrollView
usage (e79dbc7) closes #525 KeyboardToolbar
accessibility wording (ef2f58c)- instant keyboard hide causes
KeyboardAvoidingView
keeping bottom space (6861faf) - web compilation (10a90ae)
👍 Improvements
- modal support on Android (4a796eb) closes #369 #387
- react on
StatusBar.translucent
changes (265b93c) closes #526 - new
offset
prop forKeyboardGestureArea
on Android (2f901a9) - allow keyboard toolbar button callbacks to cancel default actions (36b704b)
- synchronous handler mount (cfc62b7)
- support for
react-native
version0.75
(c2a635b)
🔢 Miscellaneous
- missing permissions for publishing package from CI (72c9fed)
- allow manual publishing of the package from CI (a2abcd2)
- add e2e tests for native-stack screen (2729e28)
- update detox (bdaa38e)
- run e2e tests on iOS 16 and iOS 18 08efc81
- add
KeyboardToolBarTheme
type example (1bce3c8) - minor eslint tweaks (bb43792)
- added interactive keyword to docs, improve SEO search (54dc6d7)
- bump minimal
react-native-reanimated
version (23b0466) - hook names truncated in docs menu bar (e6ea67f)
- use docusaurus 3.4.0 (a265bf0)
- blogpost for
1.13.0
(b4eef45) - checkout
1.13.0
docs (7fcb6b7)
🚨⚠️ 🚨 Caution 🚨⚠️ 🚨
This release doesn't have any breaking changes. However if you used undocumented setKeyboardHandlers
/setInputHandlers
method (from context
/useKeyboardContext
), then, please, be aware that the signature of the method was changed:
const context = useKeyboardContext();
// ...
-context.setKeyboardHandlers({ [key]: handler });
+const cleanup = context.setKeyboardHandlers(handler);
But since it was not documented and mostly was used by internal hooks - this change is not treated as a breaking one.
Release 1.12.7
Release that improves animation precision on iOS, adds reaction to text selection changes in KeyboardAwareScrollView
, revealing react-compiler
violations in source code, resolves some bugs, adds more e2e tests and improving stability 👀
🐛 Bug fixes
- pick up proper
ViewController
forKeyboardToolbar
when modal is shown (1e446dc)
👍 Improvements
- react on selection changes in
KeyboardAwareScrollView
(7af6fac) - precise timing keyboard animation on iOS (7c3f4ae)
🔢 Miscellaneous
Release 1.12.6
Less bugs, better stability 🚀
🐛 Bug fixes
- handle
contextMenuHidden
prop on iOS properly (887b110) - support both (worklet and js)
onScroll
handler forKeyboardAwareScrollView
(35a6e2a) - incorrect scroll distance on Android if
KeyboardAwareScrollView
gets mounted faster than firstwindowDidResize
event gets received (3bda77c);
🔢 Miscellaneous
- use
google_apis
device in e2e tests (4b6a06d) - test emoji keyboard in e2e (b750fad)
- e2e tests for interactive keyboard (0629edf)
Note
Starting from this version minimal supported react-native-reanimated
version is 2.11.0
.
Release 1.12.5
Another release improving stability of 1.12
😎
🐛 Bug fixes
- RN 0.75 compilation error (979bd42)
- update selection on focus on iOS (753cb57) closes #482
- race condition between js and worklet in
KeyboardAwareScrollView
(6825c25) - incorrect selection coordinates when input grows on iOS (6bb145c) closes #489
- memoize
WindowDimensionListener
per context (6e3e0af) closes #486
🔢 Miscellaneous
Release 1.12.4
Release 1.12.3
Release that adds support for snapToOffsets
property for KeyboardAwareScrollView
, resolves some old issues and improving stability of the library in some corner cases 💪
🐛 Bug fixes
snapPoints
scroll calculations forKeyboardAwareScrollView
(56400db)- missing
navigationBar
height in keyboard size ifnavigationBar
istranslucent
(97d504d) - not detectable keyboard view on iOS (950d3bc)
- ignore non-visible keyboard (3b9460c)
👍 Improvements
- respect
snapToOffsets
inKeyboardAwareScrollView
by @kgni (30617a9) closes #450 - added own
useWindowDimensions
hook (817127f) closes #434 #334
🔢 Miscellaneous
Release 1.12.2
Release 1.12.1
Release 1.12.0
Release that adds support for bridgeless mode, enhances KeyboardToolbar
component, adds onSelectionChange
handler, improves precision of onMove
handler on iOS and contains many other fixes and improvements 😎
🐛 Bug fixes
👍 Improvements
- added
KeyboardToolbar
callbacks (7d2ccb5) - added
KeyboardToolbar
blur (b9da9ad) - added support for
bridgless
(590ff6e) - eliminate one frame delay in
onMove
handler on iOS (27da1d0) - use
KeyboardAnimation
as common interface for an animation driver (54a0473) - added
onSelectionChange
handler (810efdb) - consume
onChangeText
events from delegate (427c26c)
🔢 Miscellaneous
- mention that
react-native-reanimated
is a mandatory dependency right now (0c90ac8) - add
avoid keyboard
keyword, update SEO keywords, fix flaky docs e2e tests (a3538f9) - spellcheck integration (64b2e21)
- remove unused
ReanimatedChatFlatlist
directory from FabricExample app (acacd10) - added
ModalExample
(ddc6c37) KeyboardAwareScrollView
+FlatList
integration in documentation (065e4db)- added an ability to show video demos in documentation (990574c)
- add API to footer in documentation (2060506)
- docs for 1.12.0 (4cabd4d)
- blogpost for
1.12.0
(3be37df)
🚨⚠️ 🚨 Caution 🚨⚠️ 🚨
This release doesn't have any breaking changes, but the fix added in d7d2ecd got reverted (because global layout animation is overwriting animation managed by onMove
handler - i. e. with this fix in place it's not possible to synchronize keyboard movement and animation driven by onMove
handler). The proposed solution is to use useKeyboardHandler
hook, for example:
const useReanimatedKeyboardAnimation = () => {
const height = useSharedValue(0);
useKeyboardHandler({
onMove: (e) => {
height.value = e.height;
},
}, []);
return { height };
}
Check example of js code to see how it should be handled now 👀