I am working on a Flutter health management system app that uses GetX with an MVC architecture.
Current setup:
Around 20–25 GetX controllers
All API calls, Hive read/write operations, and business logic are happening inside controllers
A custom step counter service implemented using native background services
Some controllers were converted to GetxService, but the issue persists
Problem:
The app freezes on startup (onStart).
The UI becomes unresponsive for a few seconds before rendering.
Observations:
Many controllers are initialized at app start
Controllers perform:
API calls
Hive database reads/writes
Background service bindings
Converting controllers to
GetxServicedid not resolve the freeze
Question:
What is the correct way to initialize many GetX controllers without blocking the UI thread?
Should Hive and API logic live inside controllers, or be moved elsewhere?
How should background services be initialized to avoid startup freezes?
Is there a recommended GetX architecture or lazy-loading strategy for large apps?
Any guidance or architectural suggestions would be appreciated.