Skip to content

perf(ui): RepaintBoundary + TickerMode for workspace morph layers (Fluid F2) #358

Description

@ZhuchkaTriplesix

Parent

Part of #356 · Fluid perf audit F2 (P0)

Problem

QueryaSwitchingBody / QueryaCrossFadeStack apply AnimatedOpacity (and slide) over full workspace trees (empty hero ↔ connected SQL/editor) without RepaintBoundary per layer. Inactive keep-alive children stay mounted under opacity 0 and may keep tickers/work running.

Where:

  • lib/core/motion/querya_switching_body.dart
  • lib/core/motion/querya_cross_fade_stack.dart
  • callers: workspace_panel.dart, engine workspace homes

Expected

  • Each morph layer wrapped in RepaintBoundary
  • Inactive layers use TickerMode(enabled: active) (keep IgnorePointer / ExcludeFocus)
  • No new hard-cut regressions for empty ↔ connected

Acceptance

  • Layers isolated for paint
  • Inactive panes do not drive animation tickers
  • Widget tests for SwitchingBody / CrossFadeStack still green
  • Manual: empty ↔ connect morph stays smooth (profile preferred)

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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