Skip to content

February 28, 2012

22

5 Pros and Cons of Appcelerator’s Titanium

Appcelerator’s Titanium is an open source development platform that allows to create native applications (mobile and desktop) using web technologies, such as JavaScript, HTML and CSS. The Titanium Mobile SDK is the #1 cross-platform mobile development solution in use today with over 250,000 mobile developers and 35,000 apps.
Without entering into the controversy on “native vs cross-platform”, you cannot not be interested in building mobile apps with a true native user experience, deploying them to multiple operating systems and managing them from a single code base and a single investment. I am, and I used the Titanium Mobile SDK for a few months working on a few prototype ideas and for a real project (Infostud Mobile).
Here are the main pros and cons based on my experience:

Pros

Rapid prototyping. Appcelerator’s Titanium actually “accelerate” the application development because allows you to create in a very flexible way, with a few lines of code and in a few hours what normally would require more attention and a few days. Regardless of the choice of developing by using native or cross-platform toolkits, you could always use Titanium to make a prototype to evaluate the user’s interaction with the UI due to its facilitation for rapid development.

Web-oriented. Titanium mainly helps the development when the app interacts with a web service since the application itself is developed by using web technologies. This had a great impact not only on simplifying the development process, but also on saving the overhead needed to elaborate the information exchanged through the remote communication.
A typical example is the use of JSON format for data transfer. JSON (JavaScript Object Notation) is a simple encoding of JavaScript-like objects and Titanium is a pure JavaScript API, so all you have to do is to assign the data received from the network to a local variable without having to write any data parsing, extraction, and conversion (unless there are some unsupported native JSON data types, i.e. dates).

JavaScript. It’s a language many developers know and enables more developers coming from a web development background to get into mobile app development. Most importantly Titanium reflects an intrinsic characteristic of prototype-based scripting languages that is the combination of flexibility and structure.

Cross-platform. This is not an automatic, guaranteed feature. You cannot say something like “write once, run on iOS and Android” (to paraphrase provocatively the well-know Java slogan). It’s therefore necessary to base the development of one of the two platforms and then implement the necessary measures to make the app also runs on the other one. But the advantages are obvious – you don’t have to learn two separate languages and you can reach a very high level of code reusability.

Growing community. Appcelerator has built up a community of 200,000+ developers who have used its cross-platform development tool to build more than 35,000 apps; has launched Open Mobile Marketplace for buying, selling and sharing modules, templates, design elements, extensions for web services; has attracted important investments ($15 million in funding for its Series C round) and has recently acquired Cocoafish to implement cloud services and functionality in its platform. Remarkable. Appcelerator is creating a great platform for a growing community and its best days are ahead of it.

Cons

Increasing complexity. The development complexities (and costs) rise more than proportionally to application complexity increases. The more complex your applications become, the more often you’ll have to deal with, on the one hand technical issues (random crashes, weird behaviors, annoying bugs, etc.), on the other hand a greater effort (code organization, MVC separation, multi-device support, multi-platform support, code readability, etc.).

No Freemium. Appcelerator provides StoreKit, a module to enable In-App Purchase to Apple’s App Store, but it’s a pain. Buggy, poorly documented and it seems to work only partially. Too unstable for production use. Having to renounce the freemium pricing model (apps that are free to download, but require an in-app purchase to be expanded) is not just a minor inconvenience since 72% of total App Store revenue comes from apps featuring in-app purchases.

Toolkit pain. At first there was only Titanium Developer but since last June there is Titanium Studio, an Eclipse-based IDE built on a modified version of Aptana that allows you to manage projects, test your mobile apps in the simulator or on device and automate app packaging. First of all, I sincerely hate Eclipse, yeah, Eclipse is free and the best open source IDE there is, but offers a very poor IDE experience. Most importantly Titanium Studio can go “crazy”, encounter weird glitches, stop printing console messages, but the worst thing is when the build process start to ignore changes. You have to continually clean your project every time you make changes or restart with a brand new project. A productivity tool that is uncomfortable and unstable is not a productivity tool and a development tool that is unproductive is not a development tool.

Flexibility limitations. All that glitters is not gold. At beginning you’ll love the well-defined Titanium API and you will probably love it even more every time you discover a simple property to enable behaviors that would require several lines of code on Xcode. But sooner or later you will face strange bugs and limitations. For example, if you want to apply a cell background gradient to a grouped table (a very common and easy task with Objective-C) you get that the grouped table becomes plain and the gradient color makes the table slow when scrolling, and you will have to use images… So at first you will save a lot of time but as more complex the project grows you’ll lose the saved time in fixing and workarounds.

Laggy. Obviously you can have the most smooth, fast and comfortable user experience possible only with apps developed with a native development environment. This is an obvious observation, but which cannot be omitted. Keep in mind that a Titanium application is the result of an automatic conversion process from web code to native code. Animations are noticeably laggy and apps are not responsive when return from the background. This is particularly evident with Android devices, less evident with iOS devices (especially those with A5 processor).

Conclusion

Just as in everything else, in every design approach, in every technological decision, there are advantages and disadvantages. During these months I have learned to know both and understand the contexts in which it makes sense to bet on Titanium. For simple, small projects Titanium is a good choice but if you’re looking forward to use it on robust apps choose native development environments. I also suggest Titanium as an excellent tool for rapid prototyping to turn within hours a mock-up into a prototype in order to evaluate the consumer interest or conduct usability tests.
However, the pros and cons must be evaluated on a case by case basis because their weight depends on the specific project that you are considering. Keys aspects to take into account are: benefits, costs, budget, development complexity, how necessary is the multi-platform support, how strategic is the project, how important is performance. You have to weigh each pro/con based on your specific priorities to determine what fits your needs the best. Appcelerator’s Titanium is a great option that should always be considered when you start a new project.

22 Comments Post a comment
  1. Feb 28 2012

    I won’t bore you with “Appcelerator Titanium is the bomb” droning. You gave a very fair assessment. I have just a few brief counterpoints:

    - If you don’t like Titanium Studio (not everyone does), our developer relations team is working on a new, node.js-based command line interface for configuring, creating projects, building, and deploying with Titanium. You’ll be able to use the tooling of your choice with a robust, well-documented CLI very soon.

    - Flexibility is actually where Titanium excels. When you into limitations or features not exposed by the core Titanium API, you have the opportunity to implement them yourself with native module extensions.

    - I’ve personally done a lot with animations in Titanium and have not found them to be laggy. Check out this screencast where I implement the uber-cool Path menu interface for both Android and iOS in Titanium. Lemme know if you have any questions regarding animations.

    Reply
  2. Mar 6 2012

    Good review, I agree with you in most parts, positive and negative. But I do not find titanium “laggy”. On iOS platform I found that animations worked in most cases exactly the same as with native development. I have more objections with android performance (loading images or including big files requires workarounds and other tricks to make it work smooth) but, specifically for animations, I think it depends more on the device than the language used. In all my tests, any html5-based frameworks I’ve tested has a poorer performance compared to titanium and user experience with titanium is the closest to native I found (apart, obviously, of native itself).

    About “increasing complexity”: this has a lot to do with the developer’s javascript “real” knowledge. I’ve seen lot of times how people with basic web javascript concepts starts a titanium small app with great success, but the more the project grows up, the more evident is the lack of a good javascript skills. Add this to a punch of bugs and documentation mistakes and frustration is guaranteed. For this reason, to everybody interested on learning titanium I suggest, first, study javascript “seriously”, there are a few very good books for this, like “the good parts” (Douglas Crawford) and secondly, participate in the community to keep updated. Anyway, in my case, pros and cons appart, my balace with titanium is positive.

    Reply
    • Mar 24 2012

      Sorry but here occurred an error, help-me palsee.error:AndroidManifest.xml does not declare a Java package: Build aborted.AndroidManifest.xml/Memorialine 1Android ADT ProblemInvalid start tag android, expected AndroidManifest.xml/Memorialine 2Android AAPT Problem:(my manifest: 8

      Reply
      • Jun 12 2012

        Matt, have you seen Ars Technica’s new ? This is the best-looking generated’ mgazaine app I’ve seen (it was made in PhoneGap), but it’s slow and jittery. It’d be a fun project to build a chain of tools that do what you want author content in WordPress or push content into WP via XMLRPC, display it in an iPad-optimised theme, suck it up through a simple web service which attaches the iOS / PhoneGap / Appcelerator boilerplate and compiles the app but like the friends you’ve already spoken to, I’m not sure why you would, when Android and iOS’s Webkit browsers already provide a platform for responsive, full-screen reading, available off-line.I’d like to see an expansion of the Mobility / WPTouch effort, adding support for the offline storage capabilities of Webkit browsers, allowing publishers to package up their content as sync-able, tablet- and mobile-optimised HTML.

        Reply
  3. Ivan Škugor
    Mar 6 2012

    Hello.

    I am building complex app with Titanium and I have some thoughts regarding this subject (I mostly agree with article but have to mention couple of things).

    I am happy with performances, v8 engine on Android really made the difference, hardware acceleration on device also. Good JS skills are required, Titanium is not fault for bad code people write.

    As for bugs, they are hard to find in complex application due to limited debugging tools. Most of the time, Java exception is thrown on Android and it takes a lot of skill and time to find and isolate the source of the bug.

    Also, if you are community member without subscription, forget about support. Bugs reported by community members are rarely fixed, no matter of their importance and how basic they can be.

    So … in my opinion, building complex apps with Titanium is possible, but with lot of pain. Unfortunately, a lot of basic things still does not work and if you’re not payed customer that can be frustrating fact. It is rare case that I tried using something in the API and that it just worked.

    Reply
    • Mar 24 2012

      Hi ThereI maked a site for nr7even.nl, bt now they wanna also a mobile site or app for ploepe with a mobile device. What will it cost and can i use the app above? The wanna only the weekly pics, there events and a contact form .The site is a CMS behind, so the app must take the pictures from there I hope we can us this! Because there a low budget Regards Michel

      Reply
  4. Dec 27 2012

    Hey, I have your app, freakyalarm it works really good and makes me go crazy everymorning :p

    Just to see the power of titanium, you have built that app with titanium?

    Reply
    • Dec 30 2012

      Hello Furkan,
      no, FreakyAlarm is “native”, this post was about an university project.
      Glad you find FreakyAlarm “evilly” helpful, thanks ;)

      Reply
      • ageur
        Feb 26 2013

        Funny projet to create an alarm for an University ;-)
        Did students get problem do be in time every morning ? haha

        Thanks for your feeling back about this framework, its help me a lot !

        Reply
  5. Mar 15 2013

    Hi Folks
    I am exactly at the stage of deciding which development tools should I use.. And I am trying to build mini-social network like application.. Any suggestion would be highly appreciated.. Should I use native or any other cross platform tool..? Is there any prebuild module available for social network like app in titanium? I have heard about appmobi, how is that platform… How about phonegap, is it similar?
    Thanks all…

    Reply
  6. Jun 11 2013

    I’ve been browsing online more than 3 hours lately, yet I by no means discovered any attention-grabbing article like yours. It’s pretty worth sufficient for me.
    In my opinion, if all website owners and
    bloggers made just right content material as you did, the net will likely be a lot more useful than ever before.

    Reply
  7. Aug 14 2013

    Very interesting & informative, and to me, impartial…

    Reply
  8. Sep 10 2013

    Titanium Studio is still the best Cross-Platform Mobile Development Tools. You just couldn’t get everything but Titanium definitely give you some good solutions. Suitable for small to medium-sized projects!

    Reply
  9. jayesh
    Sep 16 2013

    The Titanium is good for ios and android Apps..working on it since 1.5 yearss

    Reply
    • sharma
      Nov 12 2013

      hello. i am considering titanium for some app development. any thoughts on how stable it is, can it scale up? does it work well on balckberry/windows platform? how easy or difficult to find developers (in the US or in India?)

      Reply
    • Hans
      Feb 7 2014

      Hi,
      are you available for a project?
      Please let me know..

      Reply
  10. Nov 30 2013

    Ciao Enrico,
    ho letto il tuo articolo su Titanium e ti vorrei chiedere dei consigli in merito.
    Sto analizzando la possibilità di sviluppare un sistema per dispositivi mobili e sono indeciso se sviluppare due progetti nativi iOS e Android oppure un unico tramite Titanium. In particolare il progetto prevede la creazione di 3 app: un gestionale, una per i clienti del gestionale e una per gli amministratori. Il sistema in generale è abbastanza complesso e accoglierà parecchi dati da sincronizzare tramite cloud; in più, l’applicazione prevederà l’interazione con API remote, anche complesse. Cosa mi puoi consigliare? Io sono orientato verso l’app nativa ma non ho idea se l’esperienza di utilizzo di una app sviluppata con Titanium sia paragonabile al nativo.
    Mi sai dare qualche informazione a riguardo?
    Dal 2012 sai se Titanium ha fatto dei notevoli progressi?
    Ti ringrazio Anticipatamente
    Claudio

    Reply
    • Enrico
      Nov 30 2013

      Ciao Claudio,
      onestamente non mi trovo nella posizione di esprimere un’opinione attendibile a riguardo, questo post risale ad inizio 2012, basato su un’esperienza maturata nel corso del 2011, per cui sia per l’esperienza limitata che per gli oltre due anni trascorsi, rischierei solo di dire cose inesatte. Da quell’esperienza non ho avuto più occasione di lavorare su progetti realizzati con Titanium, o per meglio dire non ho più avuto interesse verso le piattaforme cross-platform preferendo sempre lo sviluppo nativo, ma questa magari può essere una scelta progettuale soggettiva e specifica delle esigenze del singolo progetto.
      La mia idea è che un’app iOS costa 1, una Android costa almeno 1.1 (per la frammentazione), una Titanium almeno 1.5.
      Se l’app è un prodotto escluderei Titanium a priori perché l’esperienza d’uso è fondamentale, se è un progetto per clienti si può prendere in considerazione Titanium.
      Magari nel tuo caso potrebbe aver senso fare le app per gli utenti interni con Titanium e quella per gli utenti finali nativa, ma visto che c’è da sincronizzare tramite cloud, dipende dalla tecnologia cloud che si usa.
      In conclusione, perdona la risposta un po’ vaga, ma qualsiasi mio consiglio più concreto sarebbe stato fuorviante
      Ciao ;)

      Reply
  11. Dec 12 2013

    Probably the worst of all problems in Titanium, and the most ridiculous case of “WE IGNORE REALITY IF WE DON’T LIKE IT” from Appcelerator, is the complete non-functioning of the ‘zIndex’ property on views, which means that essentially, all your views are in a random stacking order which you simply cannot change. Especially as soon as you start animating stuff.

    I have now been trying for three straight hours to get a tutorial view to fade in above all other views. Guess what, even if I give it a zIndex of 38934793824749832734298 and open it last or add it last and whatnot, it always ends up behind other views. This sucks. In these three hours I could have learned a lot of Objective C…

    Reply
  12. Apr 7 2014

    Did you try EachScape?
    I would love to get your feedback on this.

    Reply

Trackbacks & Pingbacks

  1. This Week in Titanium Mobile Development: 5 Mar 2012 | Titanium Development

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments