Looking at the code, all it does is queue each observer listeners using RAF, the moment the component tree takes longer than 16ms to render, or a single component does a bit more work than expected, you'll get dropped frames. To actually ensure 60FPS it would need a more sophisticated scheduling system that is able to time-slice the updates (== asynchronous rendering) and possibly interrupt updates.