Microsoft has enhanced WinJS by adding support for multiple platforms and several major browsers, has modularized it and made it work with other JavaScript libraries.
WinJS 3.0 brings a number of new features, the most important being support for multiple platforms, including Android and iOS, and browsers – Chrome, Firefox, Safari, and Android Browser. The following table shows what’s currently supported and where:
As it can be seen from the table above, a number of important browser-platform combinations are still not covered, the most notable being Chrome/KitKat. It is also possible that some combinations will never be supported such as Safari on Windows. The WinJS Tests Status page shows exactly what tests do not pass on what platform and why, and is being updated several times a day.
If initially WinJS was one big library, now it has been divided into several dozens of modules which can be combined and packed together as desired based on developer’s needs. WinJS can be used in conjunction with other JavaScript libraries or frameworks, including Apache Cordova.
WinJS, or Windows Library for JavaScript, started as a library for web developers writing applications in HTML and JavaScript for Windows 8. Microsoft decided later to extend it to Xbox and Windows Phone, then make it a cross-platform and cross-browser toolkit, targeting almost everything. And the Try WinJS website shows that they are almost there. There are minor issues here and there, but it mostly works.
According to the roadmap, the next step is to “finish and polish work around browsers … consolidating the versions of WinJS that already exist, and focusing on WinJS uses on devices.” Then comes SPA utilities, new UI controls, and better interoperability with other JavaScript utilities, the attention being on TypeScript, Cordova, Web Components, and ECMAScript 6.
One of the unknowns is why would Microsoft propose a JavaScript library that carries with it the Don’t-call-it-Metro interface? Who is going to use it on iOS or Android instead of their respective native interfaces? Tim Anderson, a free lance journalist, thinks that Microsoft itself might be interested in writing such applications:
The messaging from the company, especially since CEO Satya Nadella took over from Windows guy Steve Ballmer, is “any device”, provided of course that they hook up to Microsoft’s services. That messaging is intended for developers outside the company too. Check out the current campaign for Microsoft Azure, which says “consume on any device”.
Also, Anderson believes this may make sense for some enterprise apps:
There could be cases though, for example for internal business apps where users care most about functionality. What is the current stock? What is the lead time? Show me this customer’s order history. A WinJS app might not look right for the platform, but the UI will be touch-friendly, and ease of rollout across the major mobile platforms could trump Apple’s design guidelines.
Whatever the reason behind it, WinJS is an open source rich library that targets multiple platforms. It remains to see if developers will adopt it. The source code is available on GitHub.