I’m experiencing an issue where my Flutter app works fine on most devices, but on some Android devices and emulators, it gets stuck on the icon/logo screen during the first launch.
Details from my logs:
[IMPORTANT:flutter/shell/platform/android/android_context_gl_impeller.cc(104)] Using the Impeller rendering backend (OpenGLES)
D/com.llfbandit.app_links: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] ... }
D/FLTFireContextHolder: received application context.
I/Choreographer: Skipped XXX frames! The application may be doing too much work on its main thread.
Observations:
- GetX controllers are initialized only after the icon/logo screen.
- Firebase Crashlytics and Firebase Core are initialized.
- The issue occurs mostly on emulators with x86_64 architecture or older devices.
On other devices, the app launches normally. - Disabling Impeller seems to fix the issue on some emulators.
My main.dart looks like this:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
runApp(const MyApp());
}
Plugins used that run at startup:
- Firebase Core / Crashlytics / Messaging
- AppLinks
- GetX
What I’ve tried:
- Delaying heavy API calls in the splash controller.
- Running on a physical device (works fine).
- Disabling Impeller (flutter run --enable-impeller=false) resolves the freeze on emulators.
- Making sure Firebase is initialized before runApp.
Question:
- Why does my Flutter app freeze on the icon/logo screen only on some devices?
- Could it be Impeller, Firebase, or AppLinks?
- What is the best practice to avoid this problem for all devices and emulators?