uikit-animation-debugging

Diagnose CAAnimation timing and completion issues in UIKit.

1.1k|81|Updated Nov 30, 2025
One-click install
npx skills add https://github.com/CharlesWiltgen/Axiom --skill uikit-animation-debugging
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: uikit-animation-debugging
Source: https://github.com/CharlesWiltgen/Axiom/tree/main/.claude-plugin/plugins/axiom/skills/uikit-animation-debugging
Command: npx skills add https://github.com/CharlesWiltgen/Axiom --skill uikit-animation-debugging

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps diagnose UIKit CAAnimation issues, covering CATransaction timing, completion handlers, and device-specific timing differences to avoid shipping device-specific bugs.

Core Features & Use Cases

  • Completion handler debugging: Verify completion is firing reliably on all devices.
  • Timing analysis: Compare declared vs. actual animation durations.
  • Device-specific patterns: Identify timing skew due to frame rates and CPU.

Quick Start

Propose a step-by-step plan to diagnose a CAAnimation that completes on simulator but not on a real device.

Frequently Asked Questions about uikit-animation-debugging

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my CAAnimation completion handler fire on the simulator but not on a real device?

Completion handler misfires across devices often stem from CATransaction timing mismatches or frame-rate differences. Diagnose by monitoring CATransaction state, comparing declared versus actual animation durations, and checking layer speed and timeOffset properties to isolate device-specific timing skew.

How do I debug CAAnimation timing issues when declared duration doesn't match visual timing?

Compare declared animation duration against actual measured timing by enumerating active animations, inspecting layer state (speed, timeOffset), and analyzing CATransaction wrapping. Device-specific CPU and frame-rate variations often cause perceived timing drift; systematic layer inspection reveals the root cause.

How can I identify why spring physics animations behave differently across iOS devices?

Spring animation timing varies by device frame rate and CPU performance. Diagnose by monitoring layer animation state across devices, comparing CAAnimation properties, and measuring actual versus declared completion timing to establish deterministic patterns for consistent behavior.

What causes jank when gestures interact with CAAnimations in UIKit?

Gesture-induced jank typically results from animation timing conflicts or improper CATransaction management. Debug by analyzing active animations, monitoring layer state during gesture events, and ensuring completion handlers fire reliably to prevent frame-rate misalignment.

Can I diagnose CAAnimation issues without running on physical devices?

Simulator testing catches many issues, but device-specific timing skew—caused by varying frame rates and CPU performance—only appears on real hardware. Diagnose completion failures and timing mismatches on target devices to capture true performance patterns before shipping.