diff --git a/src/nub.ts b/src/nub.ts
index 2cdd6c3e9cd4b2c9475d00bb6a95859530f0e579..78a78e0b710b77bcfa98cd11e8c64a5064818e0f 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -49,6 +49,9 @@ export abstract class Nub extends ComputeNode implements IObservable {
     /** a rough indication of calculation progress, between 0 and 100 */
     private _progress: number = 0;
 
+    /** allows notifying of progress every X milliseconds only */
+    private previousNotificationTimestamp = 0;
+
     public constructor(prms: ParamsEquation, dbg: boolean = false) {
         super(prms, dbg);
         this._children = [];
@@ -93,11 +96,20 @@ export abstract class Nub extends ComputeNode implements IObservable {
     }
 
     /**
-     * Updates the progress percentage and notifies observers
+     * Updates the progress percentage and notifies observers,
+     * at most once per 300ms
      */
     protected set progress(v: number) {
         this._progress = v;
-        this.notifyProgressUpdated();
+        const currentTime = new Date().getTime();
+        if (
+            (currentTime - this.previousNotificationTimestamp) > 30
+            || v === 100
+        ) {
+            // console.log(">> notifying !");
+            this.notifyProgressUpdated();
+            this.previousNotificationTimestamp = currentTime;
+        }
     }
 
     public get calcType() {