I have been working on a Flutter and Supabase setup where everything works fine until the synchronization partially fails. Then things get strange: the local state diverges from the server, auth sessions expire mid-queue and some actions succeed while others silently do not.
From the user's perspective, the app just feels buggy.
I built a small lab to explore this using an outbox-oriented sync model:
What I am trying to understand is not just the sync logic, but how to make failure visible to the user. Most of the complexity is not technical. It is about how to explain the current state when eventual consistency kicks in and the "loading" spinner is not enough.
Curious how others are dealing with this. Do you surface the sync state (queued, failed, retrying) explicitly in your UI or do you try to hide it all behind automatic retries?
Resources:
The user is experiencing synchronization issues in a Flutter and Supabase setup, where local state diverges from the server and auth sessions expire unexpectedly. They are exploring how to make failure states visible to users, rather than just relying on a loading spinner. The user seeks advice on whether to explicitly show sync states in the UI or handle them with automatic retries.