What version of mobile safari comes with each version of iOS? - javascript

I'm trying to figure out what Javascript APIs I can use to achieve support for Mobile Safari back to iOS2. I haven't found a list anywhere that shows what version of Mobile Safari ships with each new version of iOS. I'm looking for a comprehensive list that goes all the way back to iOS2.
Thanks!
[Edit: Yes, I know and love feature detection. However, I have a set of targeted browsers I need to support, and I just need to verify that the fallbacks I provided cover my target audience and that I don't need to provide additional fallbacks that are cumbersome hacks).]

Since this is already the top hit on Google, we should start a list here. I'll make this answer a community wiki. By the way, I'm pulling these from the device's user agent string. Browser version is iOS version dependent, NOT device dependent. But when a phone doesn't support higher iOS versions it is listed:
3.2.2 - Mobile Safari 4.0.4
4.3.3 - Mobile Safari 5.02 - iPhone 3g
5.0 - Mobile Safari 5.1
5.1 - Mobile Safari 5.1
6.0 - Mobile Safari 6.0 - iPhone 3gs
7.1 - Mobile Safari 7.1 - iPhone 4
8.3 - Mobile Safari 8.0
9.2.1 - Mobile Safari 9.0 - iPhone 4s
10.3.4 - Mobile Safari 10.0 - iPhone 5
11.2.5 - Mobile Safari 11.0
12.1.4 - Mobile Safari 12.0
12.4.4 - Mobile Safari 12.1 - iPhone 5S, 6
13.0 - Mobile Safari 13.0
[...] - [...]
15.2 - Mobile Safari 15.2

This guy's list is really useful: http://www.somegeekintn.com/blog/stuff/iosvers/
If you need the additional info, you can decode the Safari versions on useragentstring.com, e.g:
http://www.useragentstring.com/Safari5.0.2_id_18120.php explains that Safari version 6533.18.5 is known as "Safari 5.0.2"

I couldn't find a comprehensive list either. The best thing I've found so far is some Safari documentation from Apple:
https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html
Good luck!
[Update]
While this still doesn't answer the question it at least tells when WebKit added support for getBoundingClientRect() in Febuary of 2009.
http://trac.webkit.org/changeset/40837

Rather than doing device or os detection, you should be doing feature detection -- it'll provide a much richer experience, and you can provide custom code to add functionality that the specific version doesn't support. This way you'll provide support way beyond the specific devices you're targeting (and it usually ends up being easier since rather than branching your code for a specific user-agent, you're back-filling support for older js implementations by providing forward-looking support on a conditional basis).
For example, the latest version of desktop & mobile Safari do not provide .bind() functionality to bind a context to a closure. This can be detected and handled using Function.prototype.bind and if it doesn't exist, providing an implementation that provides the functionality to older browsers. Using a library like http://www.modernizr.com/ will assist greatly in this endeavor.
That being said there are some specific DOM events which are tied to certain versions of iOS:
http://developer.apple.com/library/safari/navigation/#section=Libraries&topic=Safari%20DOM%20Additions%20for%20iOS

If there are specific API's that you are looking at, caniuse.com is a great resource for finding out how far back the API has support.
Good luck with it!

Related

Looking for a Modernizr feature set to target specific minimum browser requirements

I'm currently upgrading a website for a customer. Current website uses a Modernizr feature set to target specific browsers that we can validate works with the wide variety of customers.
Current browser minimum requirements for this website are:
IE 10
Firefox 19
Chrome 32
Safari 9
iOS 8
Android 4.4 (I don't bother about all the differents quirks of some Blink implementations)
Since the website is targeted for an older audience which has not a lot of IT knowledge, I am considering to still support IE11 for those who still stay on Windows 7, and Firefox 52 for those on XP.
So, new browser minimum requirements would be something like
IE 11
Edge all versions
Firefox 52+
Chrome 69+
iOS 12+
Android 5+
I was searching for a set of features that are known to work on all these conditions so I can set a Modernizr feature set script to redirect users to a fallsafe version of the website if needed.
I've seen this post: Detecting IE11 using CSS Capability/Feature Detection, but it only targets IE11 (it's a great start tho). I also took a look at Caniuse but this can be kind of confusing.
My current idea is to set a feature set containing ES5 full support and ES6 minimal support, but I want to be sure to nake it OK to not have false positives on user's browsers. I also considered detecting flexbox support, since I use it.
So, considering this, would you have an idea of a feature set I could use for that specific set of browser requirements?
Edit: I wonder if there is a tool around that you can specify some browser features you want and that automatically gets you minimal browser requirements. I don't know why but I have a doubt this would probably exists somewhere.
Regards.

Using Angular 2 with older browsers thanks to TypeScript?

Since the Angular 2 team is using TypeScript for it's build, would it be a feasible assumption that they could compile a version of Angular 2 that would work on older browsers?
Edit 2:
It appears the Angular team has decided to support some non evergreen browsers. Per Brad Green (of the Angular team): What browsers versions will Angular 2 support? There's a new build widget with some hints on https://github.com/angular/angular
Currently, the Readme shows IE9 and up.
Angular 2 will only support modern browsers:
Modern browsers means the set of browsers known as ‘evergreen’ or
always automatically updated to the latest version. Building for
these browsers let us drop many hacks and workarounds that make
AngularJS harder to use and develop on than it needs to be.
The set currently includes Chrome, FireFox, Opera, Safari, and
IE10/11. On mobile, we’ll support something close to the list of
Chrome on Android, iOS 6+, Windows Phone 8+ and Firefox mobile. We’re
looking into supporting older versions of Android, but the jury is
still out.
http://angularjs.blogspot.com/2014/03/angular-20.html
Edit: To address your comment, no Typescript is not the limiting factor for Angular 2's lack of support for non-modern browsers (nor going to provide any magical support). Typescript can transpile to ES3, so if your target browser supports ES3, you can use Typescript. Conversely, Angular 2 will gain nothing wrt supporting legacy browsers by using TypeScript.

Does mobile browser support Three.js application

I have my application which bases on Three.js library. However, it doesn't run on mobile browser when I used WebGLRender. I checked some application from Mr.doob (http://threejs.org/examples/#webgl_panorama_equirectangular). I wonder whether or not mobile browser support three.js or I missed something to run its application on device?
Tks
According to caniusel.com
WebGL is completely supported by the following mobile browsers
Safari on iOS 8
Blackberry Browser 10
Opera Mobile 22+
Its partially supported(meaning it may or may not work in some cases) by the following browsers.
Chrome for Android 35
Firefox for Android 30
Lastly here is the list of mobile browsers that don't support webGL.
Opera Mini
Android Browser
Blackberry Browser 7
iOS Safari 7 or less
IE Mobile 10
Opera Mobile 11.5 or less
What mobile browser? Chrome and Firefox on Android support WebGL. The native browser doesn't work.
Android native browser now supports webGL / Three.js

AudioBufferSourceNode - start vs noteOn

Is there any reason to use AudioBufferSourceNode.start(...) over AudioBufferSourceNode.noteOn(...)?
Yes. start() will work in Mozilla's nascent Web Audio implementation, and will work in Safari in the future. noteOn() won't.
As of today NoteOn does not work in Google Chrome, so you must use start(). (2014-07-24)
(This should be a comment but I don't have the rep.)
My company's developers confirmed that noteOn() began to fail in browsers that use recent versions of WebKit, but that to start() is a reliable alternate. Sorry, I don't know the specific version of WebKit, but affected browsers include:
All native browsers for iOS 10.3 (and above). This is due to Apple's requirement to use WebKit on that platform, including Safari, Chrome, Firefox, and Opera. As an example of a non-native "browser", Puffin is really a remote-access portal to a LINUX window, so it is unaffected. (Apple recently pulled Puffin Academy from the store, but it may be a misunderstanding of the method used, or may be a tightening of their requirements.)
Safari 10.1 (and above) for Mac OS X 10.10 through macOS 10.12 (and above).

Where is DeviceMotionEvent currently implemented?

The DeviceOrientation specification includes a Device Motion Event. I've seen it run on an iPhone, and heard it is supported in Chrome Mac and used on the Google Jules Vern Doodle.
Is it supported in any other browser implementation yet? What versions did it become available in?
Supporting DeviceOrientation or DeviceMotion is a combination of the browser and the hardware it's running on. Both Firefox and Chrome on windows support DeviceOrientation in terms of having the API, but won't necessarily work on any particular hardware. Firefox supports DeviceMotion, but Chrome on windows doesn't.
On a lenovo thinkpad with 'lenovo airbag protection' running, Firefox 10 will provide DeviceMotion events, but strangely won't provide DeviceOrientation events. Also, the values it provides seem to be wrong (i.e. not measured in m/s/s). vAnd while Chrome has the DeviceOrientation API, I haven't been able to get it to provide events. Opera 11.61 on windows doesn't seem to support either API. Safari 5.1.2 for windows doesn't seem to support either.
An excellent page on using the DeviceMotionEvent is here http://www.html5rocks.com/en/tutorials/device/orientation/ which includes a demo using DeviceOrientation and another demo using DeviceMotion.

Categories

Resources