Two-stage mount splits the propagation map's first paint: the static HTTP render still fetches scores synchronously so SEO/noscript shipping gets real data baked into `data-scores`, but the websocket-connected mount defers the potentially-slow fetch to `start_async/3`. Chrome paints immediately; scores stream in via an `update_scores` push_event once `handle_async(:initial_scores, ...)` resolves. A small overlay (spinner on `:loading`, retry button on `:failed`) uses `<.async_result>` so users can see state and recover from a transient fetch error. |
||
|---|---|---|
| .. | ||
| components | ||
| controllers | ||
| live | ||
| plugs | ||
| endpoint.ex | ||
| gettext.ex | ||
| live_table_footer.ex | ||
| live_table_resource.ex | ||
| metrics_plug.ex | ||
| router.ex | ||
| skew_t.ex | ||
| telemetry.ex | ||
| user_auth.ex | ||