Web Component Performance

SkillDev tools

Guides performance testing for native Web Components and custom elements. Use when measuring custom element registration, upgrade cost, connected/disconnected callbacks, attributeChangedCallback churn, Shadow DOM work, slots, or fig-* component scalability.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Web Component Performance skill

What this skill tells your AI

The instructions your AI receives, as published by rogie/figui3 in .cursor/skills/web-component-performance/SKILL.md and read by ahel’s review.

Measure custom element performance in real browsers. Pair this with web-component-testing when validating both behavior contracts and performance regressions.

Hot Paths

  • customElements.define and customElements.whenDefined during boot.
  • Initial upgrade of many existing elements.
  • connectedCallback and disconnectedCallback during repeated mount/unmount.
  • attributeChangedCallback and property setters during state sync.
  • Shadow DOM creation, slot distribution, and internal event wiring.
  • Form-style event emission during fast interactions.

Test Pattern

  1. Create a scaled fixture with representative fig-* markup.
  2. Wait for definitions, then separate upgrade timing from interaction timing.
  3. Measure repeated mount/unmount cycles for cleanup and callback cost.
  4. Stress public APIs: attributes, properties, slots, and user interactions.
  5. Assert no page errors, no console errors, correct final state, and bounded timing.

Useful Checks

  • Count how many times lifecycle callbacks run for one user-visible operation.
  • Verify attribute writes do not emit user interaction events unless the component contract says so.
  • Compare one component vs many components in the same page to catch nonlinear scaling.
  • Test overlay/picker components with nested popups because geometry work can multiply.
  • Confirm cleanup by removing hosts, re-adding them, and checking events are not duplicated.

Fix Preferences

  • Avoid rebuilding Shadow DOM when a targeted text/style/value update is enough.
  • Coalesce repeated attribute/property sync when the public contract allows it.
  • Keep event listeners stable and remove external listeners in disconnectedCallback.
  • Prefer public host state for tests; inspect internals only to prove a suspected performance issue.

Avoid

  • Measuring autonomous custom elements in jsdom.
  • Benchmarking constructors alone when the real cost is upgrade plus connected work.
  • Adding caches that make attribute/property reflection stale.
  • Changing public event timing to pass a benchmark.

Signals

GitHub stars
66
Forks
1
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
web-component-performance
Source
github.com/rogie/figui3