The State of ExtJS

I’ve been a big fan of Sencha’s ExtJS since I started using it several years ago. When I was first exposed to the framework in its v2.0 days, it was a breath of fresh air compared to anything else out there. It had a well-documented, powerful framework and a comprehensive set of widgets. The grid widget alone scratched enough itches that the rest of the framework was gravy.

I haven’t been able to use it on any projects, though, for a couple years, but I have tried to stay up to date on the releases. Unfortunately for Sencha, in the intervening years, the internet has started to catch up and I’ve been taking a much more critical eye to ExtJS. There are still several good parts to ExtJS, but there are also a lot of bad things that will limit its suitability for any future projects.

The Good Parts

  • The Documentation : The guys at Sencha have continued to do an excellent job at creating documentation for ExtJS. As a Java developer, I found the API documentation pretty similar to JavaDoc, and thus instantly appealing. The documentation has continued to improve and now includes extensive sample code and even videos. This is an area where ExtJS leads the industry.
  • The MVC Framework : While there is significant competition in the JavaScript MVC space, most of the competition is still in catch-up mode. ExtJS still has one of the most well thought out and comprehensive MVC frameworks available. Similar to Rails, it even provides a consistent project configuration and directory hierarchy to improve the maintainability of ExtJS applications.
  • The Support : The support forums for ExtJS are first rate. Questions get answered quickly and the Sencha team does a good job staying on top of them. Sencha also offers commercial support and training, which is critical for enterprises where developer skillsets are hit and miss.
  • The Ecosystem : Sencha has built a comprehensive developer ecosystem around ExtJS. This includes command line tools (Sencha Command), design tools (Sencha Architect), and Eclipse plugin, charting and a mobile framework (Sencha Touch). Yes, these are commercial offerings, but from the perspective of the enterprise users they are targeting, Sencha provides a one-stop-shop for building rich JavaScript RIA applications.

The Bad Parts

  • Outdated Theme : This is the biggest area where Sencha has been caught with their pants down. When I started using ExtJS, everyone was trying to web-enable desktop applications. Sencha provided the typical desktop look-and-feel in HTML widgets which made it perfect for implementing intranet applications to ween users off of Visual Basic. Today, the objectives have completely flipped. Even Microsoft is working to desktop-enable web applications. Clean, modern web applications have set the standard for user interfaces and the theme for ExtJS still looks like Visual Basic for the web.
  • (Un)Resonsive Design : The ExtJS library is designed for desktop browsers. But the world is moving to a post-PC world with BYOD Tablets and Smartphones. Just try viewing the Feed Viewer demo application on an iPad to understand how badly ExtJS is being left behind in the area of responsive design. Yes, Sencha has a mobile framework, but we’re moving to a world of responsive designs that we expect to scale satisfactorily to an device.
  • The Competition : While the ExtJS MVC framework is still at the top of the heap, the competition is climbing fast. Frameworks like EmberJS, AngularJS and Backbone continue to close the gap, and due to their open source nature, there is a good chance they will overtake ExtJS in the near future.
  • Monolithic vs Micro : ExtJS is a monolithic framework. It has an answer for every problem and you need to embrace the complete paradigm. Using ExtJS means you don’t want to play nice with others. The web world has swung the other direction towards micro frameworks, or pulling together only the small, best-of-breed libraries you need. JQuery is usually the base, and then you pile other things on top it like RequireJS for code structure, Twitter Bootstrap for the user interface and LESS or Compass for CSS.
  • Learning Curve : ExtJS is not a casual framework. Learning the framework requires a lot of work and it is not something you decide to use for a small project every now and then. You would pull your hair out going through perpetual ramp-up. In some ways, ExtJS has become the PowerBuilder of web development. It is an extremely powerful framework that people build careers around, but is way too complex for a casual user. The high learning curve can make it extremely difficult to staff a qualified team for a large project.
  • Bad Blood : I do not fall in to this camp, but it still amazes me to this day how much bad blood there is in the developer world over the ExtJS licensing fiasco from a few years ago. A lot of developers I know who are familiar with ExtJS will literally start frothing at the mouth if the name comes up.
  • Uncertainty : Sencha is still a VC-funded startup that is going to have to get bought by someone for the vultures to get their pound of flesh back. As the web evolves, it is going to be increasingly difficult for them to find a suitor. Would anyone still have as much enthusiasm for ExtJS if it were owned by SAP or Oracle?

The Sweet Spot

ExtJS really only has one sweet spot today: developing data-centric intranet applications that users will spend all day in front of. These are scenarios where you would have used a VB or WinForms application. Nothing comes close to ExtJS in solving this problem.

That sweet spot is shrinking. Users are expecting their work world to mimic their private worlds. They like the clean designs of Facebook, Twitter, Google+, etc… and are increasingly expecting even in house applications to function and look like what they’re accustomed to. ExtJS does not fit the bill for this future.

What to Do

If I were Sencha, I would be hiring some top UX talent and coming up with a cleaner, more internet ready theme for ExtJS while it still has a chance for relevancy. The theming framework also needs the equivalent of ThemeRoller and several pre-built, high-quality themes distributed with the framework. The theme also needs to be responsive. You can’t just steer people to Sencha Touch to solve the tablet problem.
If I was already invested in ExtJS, I wouldn’t change anything right away for existing applications but I would carefully think through using it for anything new. I would ensure I stayed current with the versions to ensure my teams could take advantage of the awesome MVC framework, but I would be keeping an eye to a future without ExtJS.
If I were building a new internet facing application, I wouldn’t touch ExtJS with a ten-foot pole. The outdated look-and-feel, and the difficulty in themeing it, is an absolute deal killer. I would start with a solid micro framework like AngularJS and layer it on top of Bootstrap and LESS.

I don’t want to be too harsh on the Sencha guys. I’ve met a lot of them, and I think they’re great and can absolutely rebound from their problems. But similar to an alcoholic, the first step is acknowledging you have a problem. And that problem for Sencha is that ExtJS is no longer ready for today’s internet. Sencha has to resolve this, because even if they only want to focus on enterprise intranets, that world is changing too.

25 thoughts on “The State of ExtJS”

  1. Hi Tim,

    Thanks for all the kudos on the good stuff we’re doing 🙂 Architect 2 has been received really well, and we’ve really put a huge effort into our docs in the last two years.

    As far as the other stuff goes – we’ve known that we need a better default theme for a while. We’ve seen many more modern themes built in the community with Ext JS. The Neptune theme that we demo’d at SenchaCon has been put behind other more critical work – like performance – for some time, but it’s on our imminent to-do list. Acknowledged on the need for a theme builder as well.

    On responsive design – we do plan to enhance Ext JS widgets to work better in a tablet – but we still believe that developing a separate touch-optimized application experience using sencha touch is a much better end-user solution – because most users are trying to do different things on a tablet, the display area is much smaller and the UI action areas need to be much bigger.

    One of the great values of Ext JS has always been that everything works together and you don’t have to cobble together 15 different libraries to get your work done. It means our tech support can understand what you’ve done without learning a third party library. It means we can completely doc everything. It means that Architect can work with your whole app. It means we can train you effectively on how to build a complete app.

    The downside – its harder to unplug one particular thing you don’t like and plug something else in. Tradeoffs.

    On the bad blood side, it’s now been over four years since the license kerfuffle and hopefully by now we’ve established a good track record of license stability as well as support of permissive open source like jqtouch, connect and raphael. (But some people will never be happy.)

    As far as uncertainty goes, there is as much uncertainty in non-commercial open source projects (sometimes more) as commercial open source projects. The history of open source acquisitions (if Sencha were to ever go that way – we’re growing nicely by ourselves) is actually pretty good – jboss, springsource, the many many RedHat open source acquisitions etc, have prospered post-acquisition. On the other hand, many developers suffer when non-commercial libraries decide they’re not very interested in that area any more, or that they want to take the project in a different direction.

    As far as our problems go, if all we need to do is better theming and theme enablement and better cross-device widgets, then it’s a short list.

    But we’re not satisfied with just that, we want Sencha frameworks and tools to be the fastest, easiest way to build the best web apps for any device. We’re building the best integrated frameworks, tools and cloud services for doing that. And we’re not done yet.

  2. Thanks for the reply MIchael. I would be shocked if you all weren’t aware of everything I brought up — especially the theme. Monolithic vs micro frameworks can be argued about for hours. ExtJS has a compelling story around a solid monolithic framework, as long as you get the other stuff right.

    It really feels like you all have pulled an Austin Powers and spent a few years frozen in time. Times have changed and you need to get your mojo back. Much better themes and responsive design will go a long way towards making it happen.

    You guys have done great with Sencha Architect, and I’m speaking as a license holder. And yes, your docs have improved tremendously, which was much needed. Hopefully you all have put to bed enough of the perf issues to get back to focusing on the UX part of ExtJS which what originally got people hooked. I know you all are capable of pulling it off, but your window is closing.

    -Tim

  3. Great post Tim. Fully agree on the time warp factor. We’ve been hanging on to our v3 app for what seems like an inordinately long time because we want to incorporate a move to v4 with a UX upgrade.

    For Sencha to continually push-back Neptune with very little communiation as to what is happening with it, or any firm timelines does not demonstrate to me that they have an appreciation of how important UX is in the modern-web environment.

    And there’s been a fair degree of arrogance about it, which again comes through in Michael’s response. “If all we have to do” makes it sound so simple. Well, for something so simple that the community believes is so important, its been a hell of a long-time with absolutely no visible movement on that front.

    I also note on the Ext JS website that when they talk about Ext JS its with a screenshot of the Neptune theme. While I would also be embarrassed about the default theme, its absolutely misleading to suggest that the Neptune theme is what you get with Ext JS.

    Sencha have a pretty-short window for us. We’ve just about got our core functionality in place and now we’re looking toward usability and design as the next phase of our development. It will be painful to change horses but I just can’t risk having competitors with better looking, more usable alternatives to what we offer anymore.

  4. “but we still believe that developing a separate touch-optimized application experience using sencha touch is a much better end-user solution – because most users are trying to do different things on a tablet, the display area is much smaller and the UI action areas need to be much bigger.”

    Don’t modern tablets blur this distinction? Every extjs widget ought to be fully functional on a touchscreen, I don’t see how there’s even a question about this.

  5. @Phil. I think you’re reading arrogance where a certain dry humor was intended. Can you link where we’re showing the Neptune theme in a misleading way, and I’ll fix it? (The only place I see it, it’s clearly marked as preview.)

    We can definitely do a better job communicating roadmaps. We chose to deprioritize Neptune because the community survey showed that performance was the #1 thing the community wanted improved for 4.1. We’re hopeful we can get Neptune or a neptune variant in 4.2, (but that’s not a firm commitment). The Neptune theme has proven to be challenging to backport to IE6/8 with pixel perfection.

    @Christina. No, I don’t think “modern tablets” blur things unless you’re talking about Microsoft Surface (and try click & drag on that device – it’s quite challenging). Yes Ext JS apps should be “usable” without modification when you pull them up on a tablet, but have you ever tried to hit a tree expander with your finger on iPad? Or hit the next caret on a paged grid? Not a good UX. I’m currently living this experience on the Microsoft Surface and it just doesn’t work very well.

  6. Thanks for all the dialog, folks. Ironically, I’m jumping on to a pretty large ExtJS project and the biggest issue is the theme. We’ve got beautiful comps out of the design group, and laying the ExtJS widgets on top of it makes it look like some kid’s MySpace page from five years ago.

    -Tim

  7. Michael, the page I was referring to is the Sencha Complete page:
    http://www.sencha.com/products/complete/

    It uses a screen shot with the Neptune theme as representing Ext JS.

    It’s frustrating not even having an ETA on 4.2 and Neptune. We’re trying to do projections for our development schedule and not even having a rough guide to go by means we’re simply flying in the dark.

    If IE8 and backward pixel-perfect compatability is the big issue then just leave it behind. We already tell our customers that we only support IE9 forward and with IE10 now out, its pretty reasonable expectation to be on one of the last two versions of the software.

  8. Thanks Phil – we’ve fixed that page. On the theme stuff – we’re really aiming for a theme that works all the way back through IE7 – although there’s definitely an increase in people on modern browsers, most ISV’s plan to support IE8 (because of XP) through next year at least.

  9. I agree with everything said here. In my company, we noticed a big problem with Ext Js themes and decided to build our own theme which supports custom ui styles. Although it’s not responsive, it brings a fresh look to existing Ext Js apps. After 4 years I hate gray and blue default Sencha themes. Our theme is commercially available at http://goo.gl/gSlDQ.

  10. The framework is called Extend for a reason, extend it like everyone else.

    If you’re part of the community, I’d also expect you to contribute the missing pieces, this is how the community has worked since day 1 and works today also.

  11. I’m a website owner. I paid a King’s ransom to create a complex app in Adobe Flex. I made the mistake of repeating the process with Sencha. Unfortunately, I’m stuck for now. My theme is beautiful, my app works decently and we’re about to enter the marketplace. But I’m done with frameworks that supposedly enable you to get your app to market in less time. Adobe is a master in hype and Sencha is making similar mistakes. If they don’t listen to the complaints, they’re history. BTW, I was around when IBM 370/165 mainframes were cutting edge. I’ve watched this pattern for 40 years.

  12. Hi, great post! You really said a lot of things I totally agree.

    I’ve been a extjs developer for the past 4 years and I created a dozen projects using this framework. I’m having a big dilema right now: to continue the use of extjs or not and start using bootstrap and the whole responsive concept wich is hot right now.

    Also hot right now, are the so called “single page applications” wich by the way, a ExtJs developer has been doing for ever, and It’s funny to see people calling it a new thing when we, as extjs developers have been doing it forever, using card layouts and other out of the box features extjs provides.

    I agree with the fact that extjs blue and gray themes are totally outdated because they simply look like windows forms applications running on a web browser and, also the “new” neptune theme is great but it looks more like a desperate attempt of sencha to get up on the “bandwagon” of the new layout thing that’s going out there.

    Problems aside, I still think I will stay with ExtJs and my reasons are very simple: not all businesses can be run on mobile phones or tablets, like you said: big intranet applications need to be run on desktops/laptops simply because of the larger screens and of course: these “devices” are still much more responsive and easy to use than tablets or smartphones.

    But then again, I totally agree with you when it comes to sencha getting fast on the bandwagon – while they still have time! The option of creating a new framework like sencha touch was for me total nonsense. They should have sticked to extjs and improve It to work on every device and, to work with native html declared on a web page rather than generate it using only the framework wich has we all know, is a memory consuming problem on most of the mobile devices this days. Of course you can do it but then again, extjs is not supposed to be used like that.

    Then again, have you seen bootstrap applications running on a tablet or phone? they really look great and resize really fast according to the screen size BUT, they still lack responsiveness in terms of simple things like clicking on some page element and waiting for something to happen. It usually takes to much time for something to happen so, most of the businessess who need responsiveness in every detail won’t work well with bootstrap. It looks great but it still lacks responsiveness.

    I really hope sencha solves all these problems and again, I totally agree with you when you say: “I would be hiring some top UX talent and coming up with a cleaner, more internet ready theme for ExtJS while it still has a chance for relevancy”

    ps: sorry for my english, I’m from Portugal.

  13. Thanks for the comment, Jose. I was pretty impressed with where Sencha is heading after seeing all the new stuff at SenchaCon this year. They’ve addressed pretty much all the points I made, and then tossed in a lot of other great new things. I’ll be putting up a follow-up post to this one shortly. And your English is great!

    -Tim

  14. This post addresses a problem I am thinking. If I am to build a website/webapp that handles complex tree/list/data-field structure, but also need a modern slick web-style look and feel, would you recommend ext.js or other alternatives? How hard it is to theme ext.js to look like youtube, twitter, etc?

  15. What is really worrying is that 16 months on – this post is still completely relevant. It does not appear that Sencha listen. Stupid little things like when you save a model, the posted json does not include child collections.

    The big one for me though was when I tried to override the $font-size scss var for the whole app to ‘1em’ (for responsive design) it created a build error.

    The response on the forums from a forum community dude: “Sencha apps only support the px unit”

    pfft.

  16. @bob Tim did a followup post after SenchaCon last year where he said that we have been listening. We’ve shipped and previewed many of the things that Tim hit on. 4. 2 contained Neptune and a lot of theming enhancements: http://www.sencha.com/blog/introducing-ext-js-4-2. And at Senchacon we previewed tablet support, grid gadgets and other good stuff for our next release of Ext JS: http://www.sencha.com/blog/senchacon-recap. I hope you’ll check out the beta of Ext JS 5 when it comes out soon.

  17. “I hope you’ll check out the beta of Ext JS 5”
    This sums up Sencha for me.
    It’s always just around the corner.

    Your pros and cons did not mention the cost.
    A fat wallet is required.
    They are pushing their professional services these days.
    Help is only $2000 per diem, one week minimum.
    Training starts at $3000 (plus your time for one full week)

    Why is their documentation always on the “pro” side of any pros and cons list? Because it looks so good and it’s fun to navigate. Show me a guy who can complete a task using the docs alone and I will show you a sencha engineer. Used to be some real gold among the user comments, but comments have now been removed (about the same time as they started pushing professional services hmm).

    Yes forums posts are quickly answered.
    I heard some guys get points or credits or money for answering.
    So you get a fast answer. They jump to answer.
    Now let’s talk about the quality of the answers…..

  18. @David – the best version of everything is just around the corner in this industry. I don’t fault Sencha for the cost of ExtJS because you should never consider ExtJS if you aren’t in an enterprise and aren’t willing to shell out the dollars for commercial licenses and support. You make it sound like the Sencha guys are a bunch of turds for trying to run a profitable business. Sencha Touch is free for any use, which is a pretty big gift to the community. ExtJS isn’t for everyone, but if you’re in the sweet spot of their target market, it is a powerful tool. If you’re just doing casual hacking or the startup thing, you probably want to be looking at something like Dojo or use Bootstrap or Foundation + AngularJS.

  19. Well this was my first look at the Ext JS 5 documentation. http://i.imgur.com/ez7tKZ2.png . Not great.

    Also, whilst there are some great examples in the examples library, when you get deep down into the documentation many properties, methods, events etc have limited documentation (very few working examples). I used to rely heavily on user comments in the API docs. I myself used to contribute too where I could. We have been without that user-generated content for 6 months. I understand that you are in the process of upgrading to a new system. If it ain’t broke don’t fix it – but at least leave us with what we have until you are ready to replace? Sounds like commercial decisions ruling sense – smells high.

  20. On October 1, 2014 Sencha changed the license of all of their products to be “Up to 5 Developers”. This is a very ill-considered move IMO. Solo developers, who make up the heart of the community and are the training ground for enterprise customers are walking away. Sencha need to reconsider this decision. The forum thread Is Sencha screwing single developers? runs at 28 pages so far – lots of unhappy people and no response whatsoever from Sencha. Nobody should touch their products unless this decision is reversed. Even if the decision is reversed they have seriously damaged their relationship with the community.

  21. Wow, I didn’t realize they did this. I have to agree, it’s pretty brutal of them. This clearly means they are only targeting enterprise development shops. The age of the independent ExtJS/Sencha Touch user has come to an end.

  22. when i was follow a article about plugin extJS in Eclipse I read a line which is not understandable for me .This line is ” Create a subdirectory ext under WebContent and copy there all files from the Ext JS distribution ” .Here Ext JS distribution means what.please help me

Leave a Reply

Your email address will not be published. Required fields are marked *


*