JSFiddle - React, Tailwind, and code Playground

HTML

<canvas id="canvas" />

JavaScript

(function () {
  var
    ctxVisible = document.getElementById('canvas').getContext('2d'),
    ctxHidden = document.createElement('canvas').getContext('2d');

  (function () {
    var x = 0, y = 75;
    
    (function animLoop() {
      webkitRequestAnimationFrame(animLoop);

      ctxHidden.clearRect(0, 0, 300, 150);
      ctxHidden.fillStyle = 'black';
      ctxHidden.fillRect(x - 1, y - 1, 3, 3);

      x += 1;
      if (x > 300) {
        x = 0;
      }
    }());
  }());

  setInterval(function () {
    ctxVisible.putImageData(ctxHidden.getImageData(0, 0, ctxHidden.canvas.width, ctxHidden.canvas.height), 0, 0);
  }, 1000/40);
}());