JSFiddle - React, Tailwind, and code Playground

HTML

<h1>setInteval drift (this one works!)</h1>
<br>
<ul id="results"></ul>

JavaScript

var start;
var nextAt;

var f = function() {
    if (!start) {
        start = new Date().getTime();
        nextAt = start;
    }
    nextAt += 1000;
    
    var drift = (new Date().getTime() - start) % 1000;    
    $('<li>').text(drift + "ms").appendTo('#results');
    
    setTimeout(f, nextAt - new Date().getTime());
};

f();