Ipad2 ios9 safari no 3d

Can someone please confirm the minimum spec for running ThreeJS on iOS devices.

I have an iPad2 running iOS9.x. Safari doesn’t render any 3D on threejs.org. It does work on an iPhone 6 though. I don’t have any models in between those though.

I’ve looked at caniuse.com however the info doesn’t seem to be right as it says that I can use webGL on iOS8 or higher.


Can you please check what errors Safari logs in the browser console?

Unfortunately it looks like iOS9 debugging is done by connecting it to a Mac, which I don’t have.

In this case, it will be hard to analyze the issue.

Do you have problems with WebGL content in general? Can you please check if it’s possible to render the demos from babylon.js?

Yes it is a pain. I’ve got an old mac mini somewhere but cant be bothered to look for it :).

Babylon doesn’t render anything either on the iPad2.

I think for my ThreeJS app I’ll require whatever iOS works on the iPhone6. Just a thought but is it possible to render offscreen then just show a JPEG image of it?


Not on the iPad since you need WebGL for the rendering process.

You might consider to perform the render on a server and then just provide the final image as a response. However, this approach does not properly work if you require an animation loop.

I will consider that advice, thanks for your help!

I just tried webglreport.com on the same ipad. It reports that webgl 1 works! Weird.

You can use the WebGL conformance test suite to verify how stable your WebGL version is:

I bet a lot of tests will fail on your iPad 2.

Not sure if related, but Safari on iOS9 does not support const and arrow functions (at least they didn’t when I did some debugging last year on iPad2.)

I keep forgetting which version of three is final, but the ones I have locally seem to use consts quite a lot:

@Kim_Boulton I seem to have both ipad2 and a mac around - can you please link a three.js project you are trying to run? I can debug it and see what breaks.

@Mugen 87. The conformance test page (v1.0.4) won’t load, it just stops at ‘loading tests…’. However all the demos in /registry/webgl/sdk/demos/webkit/ do work!

@mjurczyk Nothing on threejs.org renders any 3D on ipad2 ios9.x safari :slight_smile:

The official examples require ES6 capabilities. I doubt your Safari supports them. Can you run this demo?

Nevermind, tried to debug on ipad, but there are no logs at all - apple seems to have dropped support for devices that old entirely. :pensive:

@Mugen87 tested on ipad2 - it does work the way you linked it. In the end, it does also work with const. It seems to stop working when changing var to let - overall ES6 support seems to be quite partial.


Yes, the JSfiddle demo works on my ipad2 as well.


You need iOS 11 or higher to correctly use ThreeJS. Bearing in mind that iOS 10.3 and lower have less than 1% user base there’s no point trying to support it. HTH.


1 Like

Can you elaborate, why? Fiddle above is 100% three.js, and it works fine on ipad with iOS9, doesn’t it? :thinking:

I read on the caniuse site that anything iOS10.3 or lower doesn’t support ES6 ‘let’. If ThreeJS uses that then it won’t work without fiddling around with it. I don’t know why the fiddle works but is it really worth it for less than 1% user base? The ThreeJS site demos don’t work which is enough for me :slight_smile:


The fiddle works because the build files three.min.js and three.js are transpiled to ES5. The official examples use three.module.js which is a ES6 build file.

So as long as you use three.min.js and write ES5 code in your app, it will run on older systems or devices, too.


Debugging with Apple products is pain, i don’t have a Mac either.

What you can do is overwrite the console log, error and warn functions to output them in a html overlay. That at least works for most of all cases.