Agent skill
technical-constraints
Use when animation is limited by browser support, platform capabilities, or technical requirements
Install this agent skill to your Project
npx add-skill https://github.com/dylantarre/animation-principles/tree/main/skills/12-by-problem-type/technical-constraints
SKILL.md
Technical Constraints
Work within platform limitations while preserving animation intent.
Problem Indicators
- Animation doesn't work on target browsers
- Mobile devices can't handle animation
- Framework limitations block implementation
- File size constraints (Lottie, sprites)
- Email/constrained environment needs
Diagnosis by Principle
Straight Ahead vs Pose-to-Pose
Issue: Runtime calculations too expensive Fix: Pre-calculate animations. Use CSS keyframes (pose-to-pose) over JS frame-by-frame (straight ahead).
Solid Drawing
Issue: Complex shapes cause rendering issues Fix: Simplify geometry. Use CSS shapes over SVG paths. Reduce polygon counts in 3D.
Timing
Issue: Consistent timing across devices
Fix: Use relative units. Test on slowest target device. Consider requestAnimationFrame for JS.
Secondary Action
Issue: Budget only allows essential animation Fix: Prioritize primary actions. Cut secondary animations first when constrained.
Staging
Issue: Limited screen real estate Fix: Animate in place. Use transforms that don't affect layout. Consider reduce-motion as default on constrained platforms.
Quick Fixes
- Use CSS over JavaScript - Better browser optimization
- Progressive enhancement - Core function works without animation
- Feature detection - Check capability before animating
- Fallback states - Static alternative for unsupported browsers
- Lazy load animation libraries - Don't block initial render
Troubleshooting Checklist
- List target browsers/devices
- Check caniuse.com for feature support
- Test on oldest supported browser
- Measure animation impact on bundle size
- Verify fallback experience is acceptable
- Test with animation disabled
- Check framework animation capabilities
- Consider server-rendered alternatives (GIF, video)
Code Pattern
// Feature detection
const supportsAnimation =
'animate' in Element.prototype &&
CSS.supports('transform', 'translateZ(0)');
if (supportsAnimation) {
element.animate(keyframes, options);
} else {
element.classList.add('final-state');
}
// Progressive enhancement
@supports (animation: name) {
.element {
animation: fadeIn 200ms ease-out;
}
}
Platform-Specific Tips
- Email: Use GIF or static images
- iOS Safari: Test
-webkit-prefixes - Older Android: Reduce animation complexity
- Low-end devices: Use
prefers-reduced-motionas proxy
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
icons-badges
Use when animating icons, badges, avatars, status indicators, or small visual elements to add personality and feedback
navigation-menus
Use when animating navigation bars, menus, sidebars, or wayfinding elements to create smooth, intuitive transitions
lists-grids
Use when animating lists, grids, tables, or collections of items to create smooth ordering, filtering, and loading states
loaders-spinners
Use when creating loading indicators, spinners, progress bars, or skeleton screens to communicate system status
accordions-dropdowns
Use when animating accordions, collapsibles, dropdowns, or expand/collapse elements for smooth reveal transitions
universal-elements
Use when animating any UI element not covered by specific skills, or when applying general animation principles across multiple element types
Didn't find tool you were looking for?