Platform Engineering: Sneak Peek at 1.8.0

Connected cars and autonomous cars concept. 3D rendering image.

Editors Note: This is a post that’s part of a series on Platform Engineering at Appcelerator.

It’s been a bit since our last update, so we wanted to take a moment and give you a sneak peek at what’s coming in the 1.8.0 release of Titanium Mobile. The big new feature is the addition of V8 as a runtime for Android based apps which we talked about in our September update. We have also spent quite a bit of time working on our APIDoc system and updating the docs to provide better information as well as additional information that can be used for context-sensitive help. Visit JIRA for the lists of all 1.8.0 changes, Android changes, iOS changes and APIDoc changes.

Android Runtimes: Rhino and V8

In 1.8.0 the mobile SDK will ship with Rhino as the primary Javascript runtime and the BETA of our V8 runtime which you will be able to enable with a property setting in tiapp.xml. We are expecting to have the pull request for the multi-runtime version in review by Monday, October 31st. As soon as we’re confident it’s stable enough, it will be merged onto master and start appearing in our continuous integration builds. For those of you currently using CI 1.8.0 for your applications, we will provide a snapshot of the last-known good build prior the merge. Once it’s merged we will be spending the majority of our time fixing critical issues in preparation for release. At this point we are still looking good for a release of 1.8.0 before year end.

Updated V8 vs Rhino Performance Analysis

Now that we’re closer to integrated runtimes, we can show some actual performance results. The test code, data, and execution details are here. Keep in mind that we have not started optimizing either of the runtimes yet so there may still be room for improvement.

Four areas were profiled: Time to start the application, time to parse a nested json string, inserting 1000 rows into a tableview, and number of scroll events fired in the large tableview.

TestRuntime Avg in Milliseconds
RhinoV8V8 vs Rhino
JSON Parsing1971414.07
TableView Insert18587752.40
TableView Scroll ms/Event29.36.14.80
Application Startup160815871.01

Startup time for both runtimes is almost identical for the test app. Larger source files would show a better edge for V8. We hope to be able to improve startup to first display after beta. The other tests show significant performance gains for V8 over Rhino which is consistent with our early prototyping.

Feature Highlights

On devices where the user has installed Flash you can now display it in a WebView. We’ve noticed that the performance of Flash in the WebView is sluggish on handsets, but it is at least possible now. Full Feature List

  • [TIMOB-1607] Android: WebView Enable Plugins
  • [TIMOB-4801] Android: Enable flashplayer settings(plugins) for WebView on Android

Several events on iOS passed a globalpoint property that couldn’t easily be made consistent cross-platform. So we added a new method convertPointToView, which is much more useful by allowing points to be converted from one view to another, rather than just operating solely within the screen coordinate system, which is how globalpoint worked.

  • [TIMOB-5122] Android: Add a member function to View called ‘convertPointToView’
  • [TIMOB-5121] iOS: Add a member function to View called ‘convertPointToView’

A performance change in appendRow for TableView allows for batches of rows to be appended which improves performance by reducing the number of calls across the Javascript bridge.

  • [TIMOB-4916] Android: Change TableView appendRow to support an array of rows or row data
  • [TIMOB-4917] iOS: Change TableView appendRow to support an array of rows or row data

Several Android specific items were added. You can now set the pixel format of a window to reduce memory used or improve display quality if you are using gradients for example. Some applications need to keep the display on while the application is active, so we exposed the ability to request the screen stay on. Finally, longpress has been added to the set of supported gestures.

Several iOS-specific items were added as well. New events were added to ScrollView to report where dragging starts and stops. You can now capture high density screenshots and HTTPClient data has local caching support to reduce trips across the wire.

  • [TIMOB-4487] iOS: Expose dragStart and dragEnd on ScrollView
  • [TIMOB-4466] iOS: High Density Screenshots
  • [TIMOB-4691] iOS: Add support or local caching for HXR content (using disk cache)

API Documentation

Another exciting addition to our product is an improved documentation system for our APIDocs. We published our TDoc Specification for our APIDoc and have been reworking the docs to comply with the spec. While the real magic is hidden in the source, we’re able to actually use the documentation as the specification for the Titanium Mobile API. Our documentation now gets used as an HTML reference, in content assist, provides coverage data for platform parity analysis, and may be generated in other formats as required.

Another gain is that we can annotate APIs to the method and property level with supported platforms, versions supported, deprecations, exclusions, and more. The new docs may not be perfect, but we can now address the failings as they’re found.

Mobile Web

We will be bundling a BETA version of our Mobile Web SDK with the 1.8.0 release as well. The API documentation will be updated to show APIs supported on Mobile Web.


  1. Great news!
    Will the item “iOS: Expose dragStart and dragEnd on ScrollView” also expose those events on the ScrollableView control?

  2. Great list of features.

    Especially V8 caught my interest, last time I read an article about it.

    But just a quick suggestion, for android: implement GZIP compression for httpclient, I added it within two hours and it adds a lot to the user experience due to reduced load times; especially with JSON data, i noticed a constant compression ratio of 1:10.

    Keep up the good work.

  3. You won’t be able to use V8 on iOS due to the JIT compilation nature and iOS doesn’t allow execution of code from data pages.

    Bit of a bummer but does make for a far more secure OS. Note: The OS makes a special exception for Safari as the Nitro engine does this AFAIK..

  4. @Pedro V8 is for Android only – iOS already uses the C-based JavaScriptCore interpreter, which has similar performance characteristics to V8 (though in many cases V8 would end up being faster AFAIK).

  5. I cant seem to find details on the future of the mobile web SDK. It would really be helpful to see a proper roadmap with dates and features. does this exist?

    We also need best practices to build mobile web tab strips, navigation bars, protect API keys, etc. Application structure and security is important to everyone.

    I have 25 students building an app that will run consistently across iPhone, Android and HTML5. We are struggling with the HTML5 at this point.

  6. @Jim C the mobile web SDK is in a very early stage right now – it’s still in preview release mode, essentially, and has a long way to go before it achieves parity with our other platforms. We can’t really share best practices yet, as we’re not sure ourselves yet what the best techniques are going to be for building mobile web interfaces in Titanium. Stay tuned for updates on the blog, as we’ll be updating it often with new information and tutorials on mobile web as soon as it makes sense to share additional information.

  7. @Don thank you for the honest reply to Dmitry, it’s refreshing to see a clear answer compared to the vague dancearounds I’ve experienced in the Helpdesk lately. I’ve been losing faith in Titanium (lots of new bells & whistles, very few fixes to fundamental issues) but seeing open communication like yours helps to keep me around.

  8. I noticed that @Francesco’s comment on Blackberry was not responded to. We were told that it would be ready at the end of Q1 this year and it has been pushed and pushed. The last I was told is it would be released with 1.8, but there was no mention of it here. I am guessing it is off the table now, but would be great to get a clear direction and roadmap for the Blackberry side of things.

    • We haven’t done any formal work on Google TV yet, but we have some customers interested in doing some development on Google TV. No official dates, but we’re working on support right now.

  9. Hi, really like the things I’ve seen in 1.8!

    Just as a thought it would be really good to be able to reference a touchstart or dragStart position on your scrollviews!

  10. And pleeeeeeease, enable multitouch (ios).
    more than two fingers on the device ends any future touch-events, until you release all the fingers an start again.


  11. You wrote:
    ,,In 1.8.0 the mobile SDK will ship with Rhino as the primary Javascript runtime and the BETA of our V8 runtime which you will be able to enable with a property setting in tiapp.xml.”
    is it possible to do this already and how?

    • @Alex 1.9 is scheduled for the end of March. We’ll be doing several point releases before then on 1.8 to address major issues and improve API docs.

Comments are closed.