Fix UI recovery false positives on slow loads#436
Open
ymichael wants to merge 3 commits into
Open
Conversation
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.
Root cause:
The server injected the UI-source recovery watchdog into shipped/default index.html. On slow or stalled first loads, #root could stay empty long enough for the watchdog to show the UI-source recovery bar even when UI forking was disabled and no fork existed. For active UI forks, the old watchdog also auto-reverted after a fixed timeout, which could interrupt a slow-but-eventually-successful customized UI load.
Fix:
Keep the live-reload shim on all served HTML, but enable recovery behavior only when the server is actually serving an active UI fork dist. Active-fork recovery is now manual-only: slow loads, script load failures, runtime errors, or unhandled rejections before mount show the Revert to stable banner, but no timer calls /api/v1/ui/prod. If the custom UI eventually mounts, the banner is removed. Clicking Revert to stable still posts /api/v1/ui/prod and reloads.
Regression coverage added/confirmed:
Verification: