Skip to content

perf(ui): isolate tab strip spring rebuilds (Fluid F1) #357

Description

@ZhuchkaTriplesix

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

  • Indicator animation no longer rebuilds all tab widgets each tick
  • Widget test covering indicator redirect still passes
  • Brief note in PR why rebuild scope is isolated

Related

Metadata

Metadata

Labels

motionAnimation system, transitions, motion tokensperformanceTheme parser epic label: performanceuiUser interface components and widgets

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions