Skip to content

SwiftUI Performance Guard Tests & AGENTS.md Rules#24618

Closed
Jasonnnz wants to merge 2 commits into
mainfrom
feature/perf-guard-tests
Closed

SwiftUI Performance Guard Tests & AGENTS.md Rules#24618
Jasonnnz wants to merge 2 commits into
mainfrom
feature/perf-guard-tests

Conversation

@Jasonnnz
Copy link
Copy Markdown
Contributor

@Jasonnnz Jasonnnz commented Apr 10, 2026

Summary

Adds CI-enforced guard tests and documentation to prevent reintroduction of SwiftUI LazyVStack performance anti-patterns that caused 37-134 second app hangs (LUM-740, LUM-795, LUM-800, LUM-812).

Changes

  • Guard tests (assistant/src/__tests__/swiftui-perf-guards.test.ts): 3 tests scanning Swift files for FlexFrameLayout, motionVectors transitions, and withAnimation in scroll handlers. Uses grep -E with portable ERE patterns, allowlists for known violations, and detailed error messages with fix instructions.
  • AGENTS.md (clients/macos/AGENTS.md): Performance review checklist (7 items) for PRs touching chat views, plus 3 additional performance rules documenting the animation suppression invariant, turnMinHeight guard, and scroll testing scenarios.

Milestone PRs (merged into feature branch)

Project issue

Closes #24613

Test plan

  • All 3 guard tests pass against current main (cd assistant && bun test src/__tests__/swiftui-perf-guards.test.ts)
  • Guard tests use portable grep -E (works on both macOS BSD grep and GNU grep in CI)
  • Verify no false positives on clean main checkout

Open with Devin

Jasonnnz and others added 2 commits April 9, 2026 22:50
* test: add SwiftUI performance guard tests for LazyVStack anti-patterns

Adds CI-enforced guard tests that scan Swift source files for three known
LazyVStack performance anti-patterns:

1. FlexFrameLayout (.frame(maxWidth:) / .frame(maxHeight:)) in cell hierarchy
2. motionVectors transitions (.transition(.move(edge:))) in cell hierarchy
3. withAnimation in scroll handlers (motionVectors cascade)

Prevents regression of fixes from PRs #24321, #24375, #24411, #24446,
#24530, #24570, #24589.

Part of #24613.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add missing cell files to LAZY_VSTACK_CELL_FILES and remove PR references

Adds the 10 allowlisted file basenames to the cell hierarchy list so the
allowlist is actually consulted. Removes historical PR numbers from the
file header comment per AGENTS.md guidance.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: use grep -E for portable ERE alternation in FlexFrame guard

BSD grep (macOS default) doesn't support \| in BRE mode. Switch to
grep -E with | for alternation so the guard works for local dev too.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: add SubagentEventsReader to cell files and escape dots in transition grep

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Vellum Assistant <assistant@vellum.ai>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs: add performance review checklist and additional rules to AGENTS.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add cd assistant prefix to guard test command in checklist

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Vellum Assistant <assistant@vellum.ai>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Jasonnnz Jasonnnz self-assigned this Apr 10, 2026
@Jasonnnz
Copy link
Copy Markdown
Contributor Author

@codex review

chatgpt-codex-connector[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

@github-actions
Copy link
Copy Markdown
Contributor

This PR has been inactive for 30 days. It will be closed in 7 days unless there is new activity.

@github-actions github-actions Bot added the stale label May 10, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Closed due to inactivity. Feel free to reopen if you'd like to continue working on this.

@github-actions github-actions Bot closed this May 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SwiftUI Performance Guard Tests & AGENTS.md Rules

1 participant