Files
iptvnator/apps
4grayandClaude Fable 5.1 51361c90f4 perf(web): defer the EPG progress and update panels, draw the startup spinner statically
Three components mounted on every launch imported Material eagerly: the
startup status (progress spinner), the update notification panel (buttons,
icons, dialog) and the EPG import progress panel (buttons, icons, tooltip,
progress bar, dialog). The two panels have nothing to show until an import
starts or an update is available, so each is now an eager host with a
`@defer (when visible)` block around the former component: the EPG panel
view and the update notification card load with their first appearance,
and their Material dependencies and the panel code with them. Specs cover
the deferred render, the dismiss path and the card reporting download
results back to the panel.

The startup status shows its spinner immediately, so deferring it would
only add a chunk round trip and a placeholder swap on the first screen. It
is now a static copy of the indeterminate `<mat-spinner diameter="32">`:
the same clipped half circles, stroke, durations and keyframes, 1.25x
slower under reduced motion, as plain markup. The static markup also sets
no attributes after insertion, where the component bound a dozen.

renderer.initialBytes: 1,534,606 -> 1,463,083 bytes (-71,523) on a local
production build; tooltip, progress bar, progress spinner, icon and the
EPG panel code left the initial bundle.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 09:49:55 +02:00
..