Back in November, after few weeks of curiosity, I decided to give jQueryMobile a try. In my world that means: get the framework, create a real-life example and put it into the wild. It was “a must” especially in this case, because I couldn’t find any real-life example of using jQueryMobile back then (everything I managed to find was just these simple nice how-to tutorials, but I was interested in web apps, not mobile sites with few pages) It is always the same: everything looks fine with any framework when you read the documentation, but is it suitable (and where is it suitable) can be found only with real-life tests…
The test app
I had no big expectations — didn’t have the time to carefully test how it works and couldn’t spend the time to create all the features such app may need back in this first release — but while the actual goal was to test jQueryMobile in the real life, it was OK to start with something (better than nothing).
I made several versions of the app: Chrome App, Chrome Extension, a packed exe for Windows (just a WebKit wrapper + the html app), tested in MeeGo also (Although it was already dead I did give it a try because Intel was still supporting it in their app store), tested with PhoneGap also and from Android browser itself (directly the app, without the PhoneGap layer). In the months following the inial release I tested again (mainly PhoneGap and Android). And here are the results:
jQueryMobile and Chrome
I started with the Chrome web store at the end of November. Now, several months later, I tend to believe jQueryMobile works very well for chrome apps and extensions. See the actual app, if you don’t believe me:
With over 31,000 users at the time of this writing, it looks for me the app is working, and based on the fact that I “forced” the framework to show tens of buttons, plus event listeners, keyboard support etc., it seems to me jQueryMobile works as expected for Chrome Apps.
Still, there were troubles hidden in the story. One of the first tests was with MeeGol. Back then I found it was somehow slow (the transitions were a pain) but when I removed all page transitions it started working in my test device. Was that something MeeGo specific or not? Don’t know, and wasn’t actually important because MeeGo was killed back then (just to reborn as Tizen later).
I tested the app in different desktops (Mac, Windows XP, Windows 7) and it worked in all tests, as webpage in browsers and as “packed app” (WebKit with the app included to mimic desktop application). Didn’t have the chance to test on Mac with touch-screen (and never tested on iOS tablet) but the windows version worked on touch screens both as web app and wrapped.
Android and PhoneGap
I made several attempts to build the app with PhoneGap — remember, there are tablets out there, and it would be great if one can just quickly port a web app to Android and all the rest I still can’t find a real reason to get one of these shiny iPads so I never tested iOS version. But Android was first in the list. There are android tablets comming all around and it should be primary target for any such web app.
Boom! It didn’t work. In all my tests it was taking forever (read: over a second) for the app to just react on user click / tap. Everything was so slow, that I just couldn’t find any way to get it working. And PhoneGap wasn’t the reason here. I tested the app as web-page directly in Android browser. Nope. Too many buttons, too many events… I am re-trying almost every month (when building new versions of the chrome app) but still no success. The last time I tested even with catching the touchstart event in separate handlers for every button — but it wasn’t there. It could be anything. Could be jQueryMobile, or jQuery, or my stupidity, or the simple fact that I pushed the framework with too much UI elements… Still, it doesn’t work well on android (and I read in other places about these slow reactions, not only in my app). But I’ll keep trying with the future versions of jQueryMobile and who knows, may be one day it will be all ready?
The simple fact that tens of thousands are using my test app in Chrome says that jQueryMobile can be used (at least whenever Chrome is installed). But… Getting complex app to work on Android is another beer (I never tested on iPad – shame on me – because I don’t have one yet). But after the Android failure it doesn’t matter does it works or not in iOS. The very idea of creating html5 apps is to get things portable. And in this field jQueryMobile still needs to be improved. But in time I believe things will get better, so I plan to continue monitoring that nice framework in future.