Sencha Touch: The HTML5 Mobile App Framework

Sencha Touch: The HTML5 Mobile App Framework

Developing a mobile application requires many decisions to be made before the first line of code is even written. For instance, should you go with a web app or a native app? If so, should you use a framework? There is no incorrect answer to either of these questions-it depends on the situation. Today we are going to talk about a specific solution to these questions: Sencha Touch.

What is Sencha Touch?

From their website:

Sencha Touch

Sencha Touch allows your web apps to look and feel like native apps. Beautiful user interface components and rich data management, all powered by the latest HTML5 and CSS3 web standards and ready for Android and Apple iOS devices. Keep them web-based or wrap them for distribution on mobile app stores.

From the makers of ExtJS, the newly named Sencha folks have yet again created a truly powerful javascript framework. You can check out more about the framework here. Sencha touch can replicate almost all native UI features perfectly. At the moment, Sencha Touch is probably one of the most powerful mobile web app frameworks out there and the best suited to handle complex web applications that need to replicate a native app.

That being said, there still are some drawbacks to it just like anything. For starters, while this is being written, it still is in BETA. From personal testing, I haven’t encountered any bugs yet. It also means that they are still packing on many features to the framework. Which is actually good news because this framework is already incredibly jam-packed with features, but you can still look forward to things like camera support in the future. But access to device functions like this are only possible if you wrap it in PhoneGap, another framework that allows mobile applications to be native applications.

This brings up another major point. Is a mobile application framework like Sencha Touch even appropriate for my project? The answer to that question is tough. There are pros and cons to both solutions and we are assuming that we are using Sencha Touch as strictly a web app:

sencha touch

Now you need to decide if Sencha Touch is the right web app framework for your project:

Sencha Touch at a Glance

  • Higher learning curve than most other web frameworks
  • Best web app framework for true high level web applications
  • Easily scales to different resolutions for maximum compatibility with different iPhones, iPad, and the various Android phones.
  • Two themes for iOS and Android
  • HTML5 and CSS3 allows higher flexibility
  • Great support for animations and enhanced touch events

If this all sounds great for your project, then go ahead and download it. If it seems a bit overkill, you might want to look at something like jQTouch (look for a tutorial on this soon).

Downloading Sencha Touch

To download a copy of Sencha Touch, just go to their website, and click Download Now.

sencha touch

Open up the sencha touch folder and click on examples. Then click on index.html (inside the examples folder)

sencha touch

Browse around the examples and explore the different functionality of the different apps. The most valuable app for learning the true abilities of this framework is the Kitchen Sink app. That is what we will be looking at:

sencha touch

Kitchen Sink

sencha touch

Explore the application and view the source of some of the things to get a grasp on the Sencha Touch concept.

User Interface

If you click on User Interface on the left, you are presented with a new, nicely animated menu with specific UI elements. Although it doesn’t look like they have a coverflow interface yet, I’m sure that it is something we will eventually see. As you can see, they have every essential element taken care of. Let’s view the source code of tabs to get a feel for the level of complexity of creating a basic UI element:

sencha touch
demos.Tabs = new Ext.TabPanel({
    sortable: true, // Tap and hold to sort
    items: [{
        title: 'Tab 1',
        html: 'The tabs above are also sortable.
(tap and hold)', cls: 'card card5' }, { title: 'Tab 2', html: 'Tab 2', cls: 'card card4' }, { title: 'Tab 3', html: 'Tab 3', cls: 'card card3' }] });

As you can see, it is the familiar ExtJS way of doing things. You create a new component, set the value of sortable, then input the necessary information. In this case, the tab title, tab content, and an identifiable class. This powerful simplicity is a testament to the power of this framework.

Animations

sencha touch

These are even easier. To animate a new panel into the project, this is all you really need:

demos.Animations.slide = new Ext.Panel({
	html: 'Slides can be used in tandem with direction: "up/down/left/right".',
	cls: 'card card2'
});

The slide part is what determines the transition you use. You can view the Kitchen Sink for more examples like pop, flip, cube, and fade.

I encourage you to play around with the Kitchen Sink some more and be sure to analyze the source code for anything that interests you. As this is still in BETA, there is barely any documentation on it, something ExtJS (now Sencha) is a bit notorious for.

Wrap Up

Now that you have a little bit more knowledge on Sencha Touch, I hope that you can add it to your arsenal of mobile application tools. As with any other development industry, you need to pick the right tools for the job. Sencha Touch can be that right tool if you are building a high level mobile application through the web. Just make sure it is the right fit for your project before going any further. That’s all for now, let me know what you think about Sencha Touch and other frameworks in the comments!

Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • http://adrusi.com adrian

    I am so thrilled that it has built in support for SASS!

  • Gustavo Pinsard

    I consider the "drawbacks" pointed not to worry, because Sencha's approach is different than that of a native client.

    It is my understanding that Sencha is establishing a new standard platform for dynamic development and deployment of mobile connected apps.

    I currently have a smart client application, and need a counterpart for mobile, and have already selected Sencha's Touch to create WebKit based apps that will look like native apps to my clients, with the added bennefit that I won't need to go through the approval proccess, altough I do have a developer ID at Apple.

    Sencha's approach makes so much more sense.

  • http://TJ.Abderrahmane.com Abderrahmane TJ

    i’m using Sensha Ext JS for a desktop application, and all i can tell about it is that this framework is awesome!

  • http://bradjohansen.com Brad Johansen

    Sencha Touch looks really interesting. Thanks for the article.

  • http://www.joseairosa.com José P. Airosa

    Very nice article! It surely is on damn good app for simple mobile web development.

  • http://spotdex.com Davidmoreen

    Wow that is pretty cool, It's such a pain making a mobile site. Now there is a really good framework for it. I might not dread it so much.

  • Paul

    Hi, can this framework handle sound? it would be great to be able to play a wav or mp3 via a web app.

    • Evan-xg

      I have not check out but i am sure it does because the previous version (web browser ) know as extjs was able via adobe Air. I can already say that extjs is really great.

    • Fuse

      Safari implements the HTML5 tag, so you could use it. ;)

      • rokki

        so do google chrome

  • tarek

    can us do all this examples using ext designer?

  • http://www.krazyidea.info krazyidea

    Great post i like it.

  • http://www.engram.nu Niklas

    Thanks for this. Sencha looks really great. Just what I was looking for!

  • http://www.quizzpot.com Crysfel

    I love Sencha Touch and the ExtJS framework, it is really impressive the way you write javascript code. :)

  • Roberto

    Hi all,

    I guess for you it will be a stupid question, but before I start downloading Sencha, it’s important for me to be sure, if with Sencha you can do also offline Appps? With offline I mean you develop your App with Sencha on your PC, than you can pass it some how to your iPhone and the you can use your App on your iPhone without any Browser.
    is this possible or is this the wrong framework for me?

    Thanks for an answer

  • youngi

    Hello, well nice article but I think you written some stuff without investigating first. The part that I am talking about is when you said how to introduce the animation of the panel into the document. Well, it is not the “demos.Animations.slide” (the slide part) that defines the effect. It is actually in the “structure.js” with the following:
    {
    text: ‘Animations’,
    source: ‘src/demos/animations.js’,
    card: Ext.is.Phone ? false : demos.Animations,
    items: [{
    text: ‘Slide’,
    card: demos.Animations.slide,
    preventHide: true,
    cardSwitchAnimation: ‘slide’,
    leaf: true
    },
    {
    text: ‘Slide (cover)’,
    card: demos.Animations.slidecover,
    preventHide: true,
    cardSwitchAnimation: {
    type: ‘slide’,
    cover: true
    },
    leaf: true
    },……………………..
    It is the “cardSwitchAnimation” property that defines it.

    • http://www.facebook.com/ Essie

      That’s way more clever than I was eptxecing. Thanks!

  • Niks

    I want to write one mobile application using Sencha Touch ..as i am new to this ..Can anybody explain step by step process to write “hello world application using this framework…

    Thanks

  • http://twitter.com/boubakr92 Boubakr Nour

    It’s a great framework, thank’s :)

  • sivakish

    Nice tutorial…Can i know any website developed using sencha touch sothat i can know look and feel…thanks in advance.

  • http://es.linkedin.com/in/agonzal Agustín González

    Hi there,

    All of us should know that Sencha Touch doesn’t have full access to all the Ext JS classes, as GridPanel, etc.

    It is suposed that Sencha team keep working to provide us with these useful classes, but new Sencha Touch developers must be aware about its limitations.

    Thank’s for this well explained and useful post.

  • http://premsfolio.in Prem

    A very interesting article to look into for developing mobile apps.

  • prasasd

    Hi,All Very nice Article

  • Cam Carnell

    Would be great to see an article on Sencha Touch 2 and how the framework has progressed since this was written back in 2010 =].