Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

ngAnimate makes IE11 grind to a halt #11791

Closed
circlingthesun opened this issue May 2, 2015 · 6 comments
Closed

ngAnimate makes IE11 grind to a halt #11791

circlingthesun opened this issue May 2, 2015 · 6 comments

Comments

@circlingthesun
Copy link

This jsfiddle (http://jsfiddle.net/oga2z7bb/3/) uses ng-repeat to render 10000 numbers. This jsfiddle (http://jsfiddle.net/oga2z7bb/4/) does the same thing but includes ngAnimate.

Both examples work fine in Chrome & Firefox. The first example also works in IE11, however if you open http://jsfiddle.net/oga2z7bb/4/ in IE11 your browser should stop responding. I've profiled (with 1 000 numbers instead of 10 000) this and it seems that 99% of the time is spent in window.requestAnimationFrame().

I use ng-repeat to render a calendar in my app. With IE11 it is effectively unusable unless I do some browser sniffing and not load ngAnimate when IE is detected.

@circlingthesun
Copy link
Author

Here it is again with 1000 elements
on 1.3.15:
https://jsfiddle.net/oga2z7bb/7/
on 1.4.0-rc.1:
https://jsfiddle.net/oga2z7bb/8/

The example on 1.4.0-rc.1 takes a lot longer to show when compared to 1.3.15.

@Narretz
Copy link
Contributor

Narretz commented May 3, 2015

Can confirm that there's a significant delay.

@Narretz
Copy link
Contributor

Narretz commented May 3, 2015

It also happens in the latest snapshot. Interestingly, it doesn't regress if you combine an angular version from before the refactoring (say 1.4.0-beta.6) with an animate version from after the refactoring.

@alexlamsl
Copy link

@Narretz at least $$AnimateRunner is not defined in the earlier versions of angular.js, which seems to be required by the latest angular-animate.js

So probably not regressing due to the module not being loaded successfully?

matsko added a commit to matsko/angular.js that referenced this issue May 4, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
matsko added a commit to matsko/angular.js that referenced this issue May 4, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
matsko added a commit to matsko/angular.js that referenced this issue May 4, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
@matsko
Copy link
Contributor

matsko commented May 4, 2015

OK there is now a fix for this:

Existing (broken) version:
http://104.131.123.85/ngAnimate/regressions/11791/broken.html

Fixed version:
http://104.131.123.85/ngAnimate/regressions/11791/fixed.html

matsko added a commit to matsko/angular.js that referenced this issue May 4, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
matsko added a commit to matsko/angular.js that referenced this issue May 5, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
matsko added a commit to matsko/angular.js that referenced this issue May 5, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
@matsko matsko closed this as completed in db20b83 May 5, 2015
matsko added a commit that referenced this issue Jun 1, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes #11791
@mgol
Copy link
Member

mgol commented Jul 1, 2015

Was this submitted to MS? I couldn't find it so I created my own report:
https://connect.microsoft.com/IE/feedback/details/1494442

We should be good Web citizens, though, and report such issues to browser vendors. If they don't know about it, they can't fix it!

netman92 pushed a commit to netman92/angular.js that referenced this issue Aug 8, 2015
… buffered

IE11 (and maybe some other browsers) do not optimize multiple calls to
rAF. This code makes that happen internally within the $$rAF service
before the next frame kicks in.

Closes angular#11791
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.