Remix.run Logo
ericwood an hour ago

Browsers intentionally add jitter to timing methods like setTimeout and setInterval to avoid fingerprinting and other side channel style attacks. When I've messed with building in-browser sequencers in the past you had to use a webworker with the clock that sends messages back to the main event loop, although I'm sure there's reasons that won't work these days either.