Because the UI thread is being blocked: synchronous I/O, heavy CPU work, .Result/.Wait(), expensive constructors or property getters, large image decoding, or synchronous DI resolution can all run on the UI thread and prevent the first frame from rendering.
Fixes: make I/O truly async (await network/file calls), offload CPU-bound work to a background thread, start async loads in OnAppearing without blocking the method, and show incremental UI (placeholders) while data loads. Avoid .Result/.Wait() and async void (except event handlers); use ConfigureAwait(false) only inside library code.
Share with