Defer rendering until requestAnimationFrame to improve performance