Long page load hang about 20% of the time Due to Confetti or ddMetric?

I am having a issue where 1/5 fresh loads of my app hang for about 45 seconds before any queries, or page features. Just on a white screen. Every other load is very fast and once the app is running it is awesome.

It seems to hang on this blob according to chrome's network settings
blob:https://xxxx.retool.com/fc81661d-f149-4cb6-8fc9-befe057452d7

When I click the blob in chrome's dev tools I see this code, and Failed To Load Response Data
I don't use confetti anywhere in my apps.

I also see
Cannot GET /api/ddMetric

var CONFETTI, SIZE = {}, module = {};
(function Y(K,J,ee,te){var re=!!(K.Worker&&K.Blob&&K.Promise&&K.OffscreenCanvas&&K.OffscreenCanvasRenderingContext2D&&K.HTMLCanvasElement&&K.HTMLCanvasElement.prototype.transferControlToOffscreen&&K.URL&&K.URL.createObjectURL);function ne(){}function oe(Ie){var we=J.exports.Promise,De=we!==void 0?we:K.Promise;return typeof De=="function"?new De(Ie):(Ie(ne,ne),null)}var ie=function(){var Ie=Math.floor(16.666666666666668),we,De,Fe={},ke=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(we=function(Ue){var Ne=Math.random();return Fe[Ne]=requestAnimationFrame(function ze(xe){ke===xe||ke+Ie-1<xe?(ke=xe,delete Fe[Ne],Ue()):Fe[Ne]=requestAnimationFrame(ze)}),Ne},De=function(Ue){Fe[Ue]&&cancelAnimationFrame(Fe[Ue])}):(we=function(Ue){return setTimeout(Ue,Ie)},De=function(Ue){return clearTimeout(Ue)}),{frame:we,cancel:De}}(),ae=function(){var Ie,we,De={};function Fe(ke){function Ue(Ne,ze){ke.postMessage({options:Ne||{},callback:ze})}ke.init=function(ze){var xe=ze.transferControlToOffscreen();ke.postMessage({canvas:xe},[xe])},ke.fire=function(ze,xe,We){if(we)return Ue(ze,null),we;var Ye=Math.random().toString(36).slice(2);return we=oe(function(Xe){function Be(Ge){Ge.data.callback===Ye&&(delete De[Ye],ke.removeEventListener("message",Be),we=null,We(),Xe())}ke.addEventListener("message",Be),Ue(ze,Ye),De[Ye]=Be.bind(null,{data:{callback:Ye}})}),we},ke.reset=function(){ke.postMessage({reset:!0});for(var ze in De)De[ze](),delete De[ze]}}return function(){if(Ie)return Ie;if(!ee&&re){var ke=["var CONFETTI, SIZE = {}, module = {};","("+Y.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {","  if (msg.data.options) {","    CONFETTI(msg.data.options).then(function () {","      if (msg.data.callback) {","        postMessage({ callback: msg.data.callback });","      }","    });","  } else if (msg.data.reset) {","    CONFETTI.reset();","  } else if (msg.data.resize) {","    SIZE.width = msg.data.resize.width;","    SIZE.height = msg.data.resize.height;","  } else if (msg.data.canvas) {","    SIZE.width = msg.data.canvas.width;","    SIZE.height = msg.data.canvas.height;","    CONFETTI = module.exports.create(msg.data.canvas);","  }","}"].join(`
`);try{Ie=new Worker(URL.createObjectURL(new Blob([ke])))}catch(Ue){return typeof console!==void 0&&typeof console.warn=="function"&&console.warn("🎊 Could not load worker",Ue),null}Fe(Ie)}return Ie}}(),se={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function ce(Ie,we){return we?we(Ie):Ie}function he(Ie){return Ie!=null}function ue(Ie,we,De){return ce(Ie&&he(Ie[we])?Ie[we]:se[we],De)}function le(Ie){return Ie<0?0:Math.floor(Ie)}function fe(Ie,we){return Math.floor(Math.random()*(we-Ie))+Ie}function pe(Ie){return parseInt(Ie,16)}function me(Ie){return Ie.map(ye)}function ye(Ie){var we=String(Ie).replace(/[^0-9a-f]/gi,"");return we.length<6&&(we=we[0]+we[0]+we[1]+we[1]+we[2]+we[2]),{r:pe(we.substring(0,2)),g:pe(we.substring(2,4)),b:pe(we.substring(4,6))}}function be(Ie){var we=ue(Ie,"origin",Object);return we.x=ue(we,"x",Number),we.y=ue(we,"y",Number),we}function ve(Ie){Ie.width=document.documentElement.clientWidth,Ie.height=document.documentElement.clientHeight}function Oe(Ie){var we=Ie.getBoundingClientRect();Ie.width=we.width,Ie.height=we.height}function _e(Ie){var we=document.createElement("canvas");return we.style.position="fixed",we.style.top="0px",we.style.left="0px",we.style.pointerEvents="none",we.style.zIndex=Ie,we}function Ae(Ie,we,De,Fe,ke,Ue,Ne,ze,xe){Ie.save(),Ie.translate(we,De),Ie.rotate(Ue),Ie.scale(Fe,ke),Ie.arc(0,0,1,Ne,ze,xe),Ie.restore()}function Ee(Ie){var we=Ie.angle*(Math.PI/180),De=Ie.spread*(Math.PI/180);return{x:Ie.x,y:Ie.y,wobble:Math.random()*10,velocity:Ie.startVelocity*.5+Math.random()*Ie.startVelocity,angle2D:-we+(.5*De-Math.random()*De),tiltAngle:Math.random()*Math.PI,color:Ie.color,shape:Ie.shape,tick:0,totalTicks:Ie.ticks,decay:Ie.decay,drift:Ie.drift,random:Math.random()+5,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:Ie.gravity*3,ovalScalar:.6,scalar:Ie.scalar}}function Pe(Ie,we){we.x+=Math.cos(we.angle2D)*we.velocity+we.drift,we.y+=Math.sin(we.angle2D)*we.velocity+we.gravity,we.wobble+=.1,we.velocity*=we.decay,we.tiltAngle+=.1,we.tiltSin=Math.sin(we.tiltAngle),we.tiltCos=Math.cos(we.tiltAngle),we.random=Math.random()+5,we.wobbleX=we.x+10*we.scalar*Math.cos(we.wobble),we.wobbleY=we.y+10*we.scalar*Math.sin(we.wobble);var De=we.tick++/we.totalTicks,Fe=we.x+we.random*we.tiltCos,ke=we.y+we.random*we.tiltSin,Ue=we.wobbleX+we.random*we.tiltCos,Ne=we.wobbleY+we.random*we.tiltSin;return Ie.fillStyle="rgba("+we.color.r+", "+we.color.g+", "+we.color.b+", "+(1-De)+")",Ie.beginPath(),we.shape==="circle"?Ie.ellipse?Ie.ellipse(we.x,we.y,Math.abs(Ue-Fe)*we.ovalScalar,Math.abs(Ne-ke)*we.ovalScalar,Math.PI/10*we.wobble,0,2*Math.PI):Ae(Ie,we.x,we.y,Math.abs(Ue-Fe)*we.ovalScalar,Math.abs(Ne-ke)*we.ovalScalar,Math.PI/10*we.wobble,0,2*Math.PI):(Ie.moveTo(Math.floor(we.x),Math.floor(we.y)),Ie.lineTo(Math.floor(we.wobbleX),Math.floor(ke)),Ie.lineTo(Math.floor(Ue),Math.floor(Ne)),Ie.lineTo(Math.floor(Fe),Math.floor(we.wobbleY))),Ie.closePath(),Ie.fill(),we.tick<we.totalTicks}function Se(Ie,we,De,Fe,ke){var Ue=we.slice(),Ne=Ie.getContext("2d"),ze,xe,We=oe(function(Ye){function Xe(){ze=xe=null,Ne.clearRect(0,0,Fe.width,Fe.height),ke(),Ye()}function Be(){ee&&!(Fe.width===te.width&&Fe.height===te.height)&&(Fe.width=Ie.width=te.width,Fe.height=Ie.height=te.height),!Fe.width&&!Fe.height&&(De(Ie),Fe.width=Ie.width,Fe.height=Ie.height),Ne.clearRect(0,0,Fe.width,Fe.height),Ue=Ue.filter(function(Ge){return Pe(Ne,Ge)}),Ue.length?ze=ie.frame(Be):Xe()}ze=ie.frame(Be),xe=Xe});return{addFettis:function(Ye){return Ue=Ue.concat(Ye),We},canvas:Ie,promise:We,reset:function(){ze&&ie.cancel(ze),xe&&xe()}}}function $e(Ie,we){var De=!Ie,Fe=!!ue(we||{},"resize"),ke=ue(we,"disableForReducedMotion",Boolean),Ue=re&&!!ue(we||{},"useWorker"),Ne=Ue?ae():null,ze=De?ve:Oe,xe=Ie&&Ne?!!Ie.__confetti_initialized:!1,We=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion)").matches,Ye;function Xe(Ge,tt,ot){for(var Me=ue(Ge,"particleCount",le),Te=ue(Ge,"angle",Number),ge=ue(Ge,"spread",Number),Re=ue(Ge,"startVelocity",Number),Ce=ue(Ge,"decay",Number),Le=ue(Ge,"gravity",Number),qe=ue(Ge,"drift",Number),je=ue(Ge,"colors",me),He=ue(Ge,"ticks",Number),Ve=ue(Ge,"shapes"),Qe=ue(Ge,"scalar"),Ke=be(Ge),Je=Me,Ze=[],at=Ie.width*Ke.x,nt=Ie.height*Ke.y;Je--;)Ze.push(Ee({x:at,y:nt,angle:Te,spread:ge,startVelocity:Re,color:je[Je%je.length],shape:Ve[fe(0,Ve.length)],ticks:He,decay:Ce,gravity:Le,drift:qe,scalar:Qe}));return Ye?Ye.addFettis(Ze):(Ye=Se(Ie,Ze,ze,tt,ot),Ye.promise)}function Be(Ge){var tt=ke||ue(Ge,"disableForReducedMotion",Boolean),ot=ue(Ge,"zIndex",Number);if(tt&&We)return oe(function(Re){Re()});De&&Ye?Ie=Ye.canvas:De&&!Ie&&(Ie=_e(ot),document.body.appendChild(Ie)),Fe&&!xe&&ze(Ie);var Me={width:Ie.width,height:Ie.height};Ne&&!xe&&Ne.init(Ie),xe=!0,Ne&&(Ie.__confetti_initialized=!0);function Te(){if(Ne){var Re={getBoundingClientRect:function(){if(!De)return Ie.getBoundingClientRect()}};ze(Re),Ne.postMessage({resize:{width:Re.width,height:Re.height}});return}Me.width=Me.height=null}function ge(){Ye=null,Fe&&K.removeEventListener("resize",Te),De&&Ie&&(document.body.removeChild(Ie),Ie=null,xe=!1)}return Fe&&K.addEventListener("resize",Te,!1),Ne?Ne.fire(Ge,Me,ge):Xe(Ge,Me,ge)}return Be.reset=function(){Ne&&Ne.reset(),Ye&&Ye.reset()},Be}J.exports=$e(null,{useWorker:!0,resize:!0}),J.exports.create=$e})(this, module, true, SIZE);
onmessage = function(msg) {
  if (msg.data.options) {
    CONFETTI(msg.data.options).then(function () {
      if (msg.data.callback) {
        postMessage({ callback: msg.data.callback });
      }
    });
  } else if (msg.data.reset) {
    CONFETTI.reset();
  } else if (msg.data.resize) {
    SIZE.width = msg.data.resize.width;
    SIZE.height = msg.data.resize.height;
  } else if (msg.data.canvas) {
    SIZE.width = msg.data.canvas.width;
    SIZE.height = msg.data.canvas.height;
    CONFETTI = module.exports.create(msg.data.canvas);
  }
}

Hi @FBCRandy,
I can try to help you debug why this is happening.
Can you provide the export of your HAR file from your network tab the next time this happens?


Make sure that "Preserve log" is checked and you have selected "All" for filters.