We recently had issues on a newly released site. The site would appear sluggish and slow to scroll, and it would frequently crash on both iPhone and iPad, with either Safari or Chrome (which is just Safari with a different skin).
We finally managed to track this down to two issues:
Don’t use -webkit-backface-visibility: hidden;
Some people say it stops certain CSS transforms (3D) from flickering. But I’d rather the browser flickers than crashes completely. And while you’re at it…
Disable CSS3 transitions in iOS Safari
The CSS3 support in Safari, as of iOS 7.1, is still really bad in terms of memory management. Our solution to disable CSS3 transitions is to have all transitions under a body class, like this:
body.good-browser article
{
/* Do some fancy animations here */
}
And in the body:
<body class="good-browser">
...
</body>
When we detect iOS we simply remove that class (early in the body tag), and the transitions don’t run.
Example code:
<script type="text/javascript">
if(navigator.userAgent.match(/iPhone|iPad|iPod/i))
jQuery('body').removeClass('good-browser');
</script>