Parent
Part of #356 · Fluid perf audit F1 (P0)
Problem
QueryaTabStrip wraps the entire Stack (indicator + all tab Focus/Gesture/AnimatedContainer rows) in a ListenableBuilder with no child:. Dual QueryaSpringControllers (_indicatorLeft / _indicatorWidth) can notify twice per vsync, rebuilding every tab every spring tick.
Where: lib/shared/widgets/querya_tab_strip.dart
Expected
- Tab row is stable across indicator ticks (
ListenableBuilder.child or equivalent)
- Only the sliding pill animates / rebuilds
- Pill wrapped in
RepaintBoundary
- Prefer a single notify path when both springs move
Acceptance
Related
Parent
Part of #356 · Fluid perf audit F1 (P0)
Problem
QueryaTabStripwraps the entire Stack (indicator + all tab Focus/Gesture/AnimatedContainer rows) in aListenableBuilderwith nochild:. DualQueryaSpringControllers (_indicatorLeft/_indicatorWidth) can notify twice per vsync, rebuilding every tab every spring tick.Where:
lib/shared/widgets/querya_tab_strip.dartExpected
ListenableBuilder.childor equivalent)RepaintBoundaryAcceptance
Related
docs/perf-baseline.md§10 Tab strip