diff --git a/src/mol-plugin-state/manager/animation.ts b/src/mol-plugin-state/manager/animation.ts
index b38b4eea58d5f569aac14f89739727346569eda0..9ee6b168bd878673e19e0eb90940c8ba6e83c876 100644
--- a/src/mol-plugin-state/manager/animation.ts
+++ b/src/mol-plugin-state/manager/animation.ts
@@ -22,7 +22,8 @@ class PluginAnimationManager extends StatefulPluginComponent<PluginAnimationMana
     private _params?: PD.For<PluginAnimationManager.State['params']> = void 0;
 
     readonly events = {
-        updated: this.ev()
+        updated: this.ev(),
+        applied: this.ev(),
     };
 
     get isEmpty() { return this.animations.length === 0; }
@@ -32,6 +33,10 @@ class PluginAnimationManager extends StatefulPluginComponent<PluginAnimationMana
         this.events.updated.next();
     }
 
+    private triggerApply() {
+        this.events.applied.next();
+    }
+
     getParams(): PD.Params {
         if (!this._params) {
             this._params = {
@@ -150,6 +155,7 @@ class PluginAnimationManager extends StatefulPluginComponent<PluginAnimationMana
         } else if (newState.kind === 'skip') {
             if (this.state.animationState === 'playing') this._frame = requestAnimationFrame(this.animate);
         }
+        this.triggerApply();
     }
 
     getSnapshot(): PluginAnimationManager.Snapshot {