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.
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.
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.
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
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.
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.
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
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?
Hello Furkan,
no, FreakyAlarm is “native”, this post was about an university project.
Glad you find FreakyAlarm “evilly” helpful, thanks ;)
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 !
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…
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.
Very interesting & informative, and to me, impartial…
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!
The Titanium is good for ios and android Apps..working on it since 1.5 yearss
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?)
Hi,
are you available for a project?
Please let me know..
Yes i am available for projects in titanium remotely.
email : jnj.idr@gmail.com
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
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 ;)
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…
Ciao Enrico,
Mi sai dare qualche indicazione sulla licenza d’uso? Si possono vendere le app a terzi? Quando bisogna pagare? Grazie mille
Did you try EachScape?
I would love to get your feedback on this.
Titanium Mobile sucks hard. I have tried it years ago building 3 apps in it. One app took me 3 months to develop, while it planned on doing it in one month. In the end I felt like a complete idiot, thinking I was just a bad programmer, while in fact Titanium Mobile is has very poor native implementations.
I remember making a tableview and in the end it was so slow that I desperately created a custom tableview and put it in a webview. I got blazing performance after doing so. The memory management in Titanium sucks so hard I cannot even begin to describe it.
Also the forum and everybody on it is constantly down playing the bad things, like oh you just have to do it like this and in the end it doesn’t work.
It has major flaws. The funny thing is, people claim it is native, it is freaking not native! It has a custom view engine for crying out loud. It sucks really really hard. They claim it is css based, it is not. The attribute names might be css like, but it is not even close to CSS, because it renders differently. The positioning of the views is completely different than that of CSS. So you have to learn that first before you can effectively use it, and there is NO documentation on it, other than a few crappy blog items from people being paid by some share holder.
Bug fixes are terribly slow. If you encounter a bug in the Titanium framework, you better not expect to get any help soon. Some developer will look into it next month and it will be available in the next release. In the real world you don’t have a freaking month to waste! Time is money. Also, issues remain open for months and sometimes won’t get fixed at all. It is so slow, it is painful and very frustrating.
I have a question for all politically right Titanium users; why would you invest in something that is created by one crappy company over for ex. Phonegap, which is HTML5, JS and CSS based. Technologies that have been developed for years. It won’t make any sense, not to go for Phonegap (or go fully native). These technologies have been optimized to perform in a web browser. And looking at skills, most developers have these skills already. This won’t put your projects at risk.
My opinion is that Titanium is just too much of a good thing, it is just trying to implement all native features in one overrated framework. It doesn’t make sense. Phonegap on the other hand is just the things that need to be implemented, like camera access etc. are available through javascript. The rest is just browser based and has good performance compared to titanium. Speed of implementation is much faster with Phonegap. Custom layouts are easier to make compared to the crap view rending engine of Titanium. It is a waste of time!
Because the company still exists, doesn’t mean it is a good framework or company. It just has a share holder that doesn’t want negative attention or too much annoyed users on the forum.
amen
Phonegap is the perfect tool conceptually but in practice it is slow and most of the time won’t fit the requirement for an average app.
I’ve used Titanium in some project and it was not that bad.
Decent use of js and commonjs is required and either being aware of target platform limitations & features.
Basically if you know enough of native mobile apps, Titanium is great.
Debugging can be complex and the debugger is limited. Again a lot depend on how the code is structured.
With Tishadow the development is fast and satisfying.
Totally agree, Appcelerator is crap!
TFS is not working properly by Appcelerator studio. I mean even the most basic stuff is not working with this framework, React Native is 100 times better.
you forgot to mention something…IS NOT WORKING. At first I was a fan of appcelerator’s products, but since they switched to appcelerator studio everything is messed up. you cannot build your project, it has troubles finding your android sdk. It’s a lost of time
In the end I chose Backendless (https://backendless.com) for my backend. The service has native SDKs for all major mobile and web platforms. The usability and developer experience is by far the best I have seen. The service has an extremely flexible server-side code model where I can deploy Java and JS server-side code to override default handling of the API and to create my own API services. My apps leverage social (Facebook, Twitter, Google) login, geolocation, file upload/download, push notifications (iOS, Android) and of course data persistence, which has really awesome support for complex relations. Check it out if you are looking for a flexible and very reasonably priced backend.