fix(loading): consolidate splash-skip + connecting-banner UX fixes#829
Closed
Just-Insane wants to merge 2 commits into
Closed
fix(loading): consolidate splash-skip + connecting-banner UX fixes#829Just-Insane wants to merge 2 commits into
Just-Insane wants to merge 2 commits into
Conversation
When foregrounding after a period in the background, the app now shows the room list immediately using cached IndexedDB data instead of waiting for the first server sync response. The 'Connecting...' banner from SyncStatus remains visible during the reconnect. Fresh sessions with no cached rooms continue to wait for PREPARED/ SYNCING as before.
…onnect Remove the loading state from the render gate so the app renders as soon as the MatrixClient is available (mx != null), rather than waiting for the first sync to complete. SyncStatus already renders a green 'Connecting...' banner during the initial PREPARED/SYNCING/CATCHUP phase, so there's no need for the full splash screen. The 'petting cats' splash now only appears before any MatrixClient exists (e.g. during very first load). Returning users no longer see the loading screen if the client needs to reconnect after being backgrounded.
This was referenced May 14, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR consolidates client loading UX improvements so the app avoids showing the full splash screen during resume/reconnect scenarios, preserving UI context and making “warm start” feel faster.
Changes:
- Hide the splash earlier when the Matrix client has cached rooms available, without waiting for the first server sync response.
- Ensure the “connecting” UX can be shown over the existing UI (via
SyncStatus) instead of re-entering the splash flow. - Adjust
ClientRootOptionsrendering to also appear whenmxis not yet available.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+292
to
+301
| // Once the client has started (store loaded from IndexedDB, sync loop running), | ||
| // hide the splash immediately if there are cached rooms — no need to wait for | ||
| // the first server response. The SyncStatus banner shows "Connecting..." instead. | ||
| useEffect(() => { | ||
| if (startState.status !== AsyncStatus.Success || !mx) return; | ||
| if (isClientReady(mx.getSyncState())) return; | ||
| if (mx.getRooms().length > 0) { | ||
| setLoading(false); | ||
| } | ||
| }, [mx, startState.status]); |
This was referenced May 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Superseded by #836 — consolidated with #810, #811, #812, #813, #828 into a single mobile/iOS/iPad PR.