requestAnimationFrame time and DOMHighResTimestamp

A while back, JamesR and I volunteered to try out changing
requestAnimationFrame's "time" argument to use DOMHighResTimestamp
instead of DOMTimeStamp. I think a report on our initial findings is
in order :)

The bug where we did this work was here:

We ended up having to revert this patch after about a week due to
branch point pressures. Here's what was broken when "the real world"

* Closure library animation broke (thus lots of Google properties broke)
* Erik's "robust polyfill"
reposted here,
We're not clear how widely used this snippet is.

The key issue that crops is animation libraries that use this design pattern:

function MyAnimation(duration) {
   this.startTime =;
   this.duration = duration;
MyAnimation.prototype.tick = function(time) {
   if (time > now) {

An edit to fix this is pretty easy... switch the startTime to use

The problem is that its not possible to polyfill: there's no way to
"feature detect" whether the browser is passing HighRes time to you
versus DOMTimeStamp. They're both Number.

I dont have a strong opinion on what to do next. We've talked
informally about 2nd-argument, or putting something on window to help
write polyfills for this case. If we had a polyfill, we might be able
to try again --- even though a few things broke, given a good
polyfill, the number of raf-based animation systems seemed
small-enough to be still-within the scope of an outreach effort.

What do folks here think?

- Nat

Received on Wednesday, 9 May 2012 18:04:51 UTC