
Angular Animations
- 186 installs
- 6 repo stars
- Updated April 4, 2026
- oguzhan18/angular-ecosystem-skills
Add Angular animations for route transitions, list enter/leave, and micro-interactions using @angular/animations APIs correctly.
About
Covers Angular animation patterns from oguzhan18/angular-ecosystem-skills for triggers, states, transitions, route animations, and list enter/leave effects so Claude ships polished, performant motion in Angular frontends.
- Animation triggers and states
- Route transition effects
- Enter and leave sequences
- Performance-safe motion
- Angular animation API usage
Angular Animations by the numbers
- 186 all-time installs (skills.sh)
- +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #881 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-animationsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 186 |
|---|---|
| repo stars | ★ 6 |
| Last updated | April 4, 2026 |
| Repository | oguzhan18/angular-ecosystem-skills ↗ |
What it does
Add Angular animations for route transitions, list enter/leave, and micro-interactions using @angular/animations APIs correctly.
Files
@angular/animations
Version: Angular 21 (2025) Tags: Animations, UI, Transitions, Motion
References: Animations Guide • API • npm
API Changes
This section documents recent version-specific API changes.
- NEW: Modern animation API — Use
animateEnterandanimateLeaveover deprecated:enter/:leave
- NEW: CSS-based animations — Angular team recommends CSS for better performance
- NEW: View transitions API — Support for browser View Transitions API
- DEPRECATED:
:enterand:leave— UseanimateEnterandanimateLeaveinstead
Best Practices
- Enable animations module
import { provideAnimations } from '@angular/platform-browser/animations';
export const appConfig: ApplicationConfig = {
providers: [
provideAnimations()
]
};- Use triggers for state-based animations
import { trigger, state, style, transition, animate } from '@angular/animations';
@Component({
animations: [
trigger('fadeInOut', [
state('hidden', style({ opacity: 0 })),
state('visible', style({ opacity: 1 })),
transition('hidden <=> visible', animate(500))
])
]
})
export class FadeComponent {
isVisible = signal(false);
}- Use enter/leave animations
@Component({
animations: [
trigger('slideIn', [
transition(':enter', [
style({ transform: 'translateX(-100%)' }),
animate('300ms ease-in', style({ transform: 'translateX(0%)' }))
]),
transition(':leave', [
animate('300ms ease-out', style({ transform: 'translateX(-100%)' }))
])
])
]
})
export class SlideComponent {}- Use wildcard states for any transition
trigger('expand', [
transition('* => expanded', [
style({ height: '*' }),
animate('300ms ease-out', style({ height: '200px' }))
]),
transition('expanded => *', [
animate('300ms ease-in', style({ height: '*' }))
])
])- Use query and stagger for list animations
trigger('listAnimation', [
transition('* => *', [
query(':enter', [
style({ opacity: 0 }),
stagger(100, [
animate('300ms', style({ opacity: 1 }))
])
], { optional: true })
])
])- Use animation callbacks
@Component({
template: `
<div [@fade]="state"
(@fade.start)="onAnimationStart()"
(@fade.done)="onAnimationDone()">
</div>
`
})
export class AnimComponent {
onAnimationStart() { console.log('Start'); }
onAnimationDone() { console.log('Done'); }
}- Use reusable triggers
// animations.ts
export const fadeAnimation = trigger('fade', [
transition(':enter', [
style({ opacity: 0 }),
animate('300ms', style({ opacity: 1 }))
]),
transition(':leave', [
animate('300ms', style({ opacity: 0 }))
])
]);- Use functional animations (Angular 17+)
@Component({
animations: [
trigger('expanded', [
transition(':expanded', [
animate('300ms cubic-bezier(0.4, 0, 0.2, 1)')
])
])
]
})
export class ExpandComponent {}- Optimize for performance
// Prefer transform and opacity
transition('* => *', [
animate('200ms', style({
transform: 'translateX(10px)',
opacity: 0.5
}))
])
// Avoid expensive properties
// ❌ Don't animate: width, height, margin, top
// ✅ Do animate: transform, opacity- Provide reduced motion for accessibility
@Component({
animations: [
trigger('slide', [
transition('* => *', [
style({ '@.disabled': '' }), // Disable for reduced motion
animate('300ms')
])
])
]
})Docs Reference Index
Official Documentation
- Angular Animations - Main guide
- Animation API
- Animations Tutorial