Repository navigation
Description
Steps to reproduce
- Create a Flutter project with a newer version i.e. 3.29. ❗It should have edge-to-edge activated by default (the bug only happens with e2e)❗
- Add a TextFormField.
- Run in a newer device. I reproduced it both in my Pixel 9 Pro emulator and my physical device Pixel 8 Pro (the latter was a release build).
Animation jump triggered by any of 2 different actions
- Open the TextFormField by pressing on it. The content above the keyboard will make a small jump when finishing the animation.
- Once the keyboard is opened, slide from an edge so the 'back' bubble appears but don't release the finger from the screen (see example video). The keyboard will jump down. Cancel the 'back' action (swipe to the edge again). The keyboard will jump up.
❗❗ This does not happen when edge-to-edge is not active. It only happens with edge-to-edge.
Expected results
The animation of the content above the keyboard should be smooth while opening and not jump.
This bug was already created some years ago and supposedly fixed, but it's happening (again?).
Old issues:
- SystemUiMode.edgeToEdge bottom viewInset jumps when keyboard is opening #89914
- Android keyboard animations isn't smooth and snaps to the position when It's in an Edge to Edge SystemUI mode #131152
- [android] Animation when opening keyboard is unsynchronized #116836 (this one is even opened for years but has 0 activity by the dev team? I hope that I track some attention by posting a complete Issue with more data and a more detailed video demo).
The supposed fix, which by a comment in the 2nd issue it was supposed to be released after 3.11 but it's still hapenning):
❗❗👉👉 Guys, opening a keyboard is a pretty main action of an app. I'm really worried about the opened issue not having been attended for years, in a feature that is now activated by default in flutter (edge-to-edge). Not sure why this is not a main concern.
Actual results
The content above the keyboard jumps when it's nearly opened.
Code sample
Reproducible public repository: https://github.com/javiermrz/edge_to_edge_keyboard_bug_reproducible
Screenshots or Video
Screen.Recording.2025-05-13.at.23.34.36.mov
Logs
Logs
Performing hot restart...
Syncing files to device sdk gphone64 arm64...
Restarted application in 781ms.
I/ug_reproducible( 5999): AssetManager2(0xb4000076cbd63598) locale list changing from [] to [en-US]
E/libEGL ( 5999): called unimplemented OpenGL ES API
D/InsetsController( 5999): Setting requestedVisibleTypes to -9 (was -1)
E/libEGL ( 5999): called unimplemented OpenGL ES API
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:79af6f08: onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT_REQUEST_HIDE_WITH_CONTROL fromUser true
W/WindowOnBackDispatcher( 5999): sendCancelIfRunning: isInProgress=false callback=android.view.ImeBackAnimationController@9c68457
D/InsetsController( 5999): hide(ime(), fromIme=false)
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:79af6f08: onCancelled at PHASE_CLIENT_ALREADY_HIDDEN
I/ImeTracker( 5999): system_server:fbe0c45a: onCancelled at PHASE_CLIENT_ON_CONTROLS_CHANGED
E/libEGL ( 5999): called unimplemented OpenGL ES API
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:ad84d20c: onRequestShow at ORIGIN_CLIENT reason SHOW_SOFT_INPUT fromUser false
D/InsetsController( 5999): show(ime(), fromIme=false)
D/InsetsController( 5999): Setting requestedVisibleTypes to -1 (was -9)
D/InputConnectionAdaptor( 5999): The input method toggled cursor monitoring on
I/ImeTracker( 5999): com.example.bottom_input_bug_reproducible:ad84d20c: onShownThe onShown message is the last one displayed after the keyboard finished opening.
Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.29.3, on macOS 15.4.1 24E263 darwin-arm64, locale en-ES)
[!] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
✗ cmdline-tools component is missing
Run `path/to/sdkmanager --install "cmdline-tools;latest"`
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/to/macos-android-setup for more details.
[✓] Xcode - develop for iOS and macOS (Xcode 16.3)
[✓] Android Studio (version 2023.3)
[✓] IntelliJ IDEA Community Edition (version 2025.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2025.1)
[✓] Connected device (5 available)
[✓] Network resources
Activity
[-]SystemUiMode.edgeToEdge bottom viewInset jumps when keyboard is nearly opened[/-][+]Content above keyboard jumps when keyboard is nearly opened (Only with edge-to-edge)[/+]darshankawar commentedon May 14, 2025
I was able to replicate the reported behavior on latest sdk versions. Note that, this was verified on Android 15 as Edge to Edge is default on this version and it may not replicate on lesser Android versions.
reidbaker commentedon May 19, 2025
Theory: This might be because of safe area / media query insets being applied after the full animation is done.
delfme commentedon May 29, 2025
@javiermrz this falls into a category of keyboard animation issues that seem difficult to fix.
As I understand it, the root cause is a lack of synchronization between the system keyboard animation and the Flutter engine, which leads to stuttering during transitions.
#120435
#116836
#139054
If you dont mind wiriting ugly code and having the animation feel non-native, here's what you could do:
20 remaining items
javiermrz commentedon Aug 1, 2025
ash2moon commentedon Sep 23, 2025
I haven't been able to replicate this on the latest version. There was some work recently done around checking the inset visibility during animations in the ImeSyncDeferringInsetsCallback.java on July. I wonder if that had fixed this issue. Could you please confirm? @javiermrz
deminearchiver commentedon Sep 23, 2025
If someone here still needs a workaround until this is implemented, I wanted to share an awesome package I found. The package is maintained by the Flutter Bounty Hunters and seems to follow most if not all good development practices. I am already using it in my own projects. I have though noticed a desync between the IME and Flutter, probably because communication with the platform is async, so please be aware of this issue.
https://pub.dev/packages/super_keyboard
tksoh commentedon Sep 24, 2025
@ash2moon I still see the problem with Flutter 3.35.4. Are you talking about the same version?
mboetger commentedon Oct 1, 2025
Definitely able to repro. Digging into this now.
Screen_recording_20251001_152525.mp4
Keyboard Animation Fix (#176418)
github-actions commentedon Oct 23, 2025
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.Keyboard Animation Fix (flutter#176418)