jQuery Core: Version 1.9 and Beyond

Posted on by

Please check out the followup post before jumping to the wrong conclusion.

As the last blog post discussed, jQuery version 1.8 is undergoing a spring cleaning to remove insecure, inefficient, ineffective, and inadvisable features. We’ve also begun the work to allow you to build custom versions that exclude parts of the library for even greater savings. Those efforts will make it possible for you to enjoy the jQuery API you need without carrying around the parts you don’t want.

Now that we’ve cleaned house, it’s time to take a look forward. There’s just one thing interfering with our vision of the future, and that’s the ghost of browsers past. Internet Explorer 6, 7, and 8–collectively, oldIE–have been a thorn in the side of web developers for a decade. Collectively, these browsers of a bygone era still represent up to one-third of users visiting some sites. That is a lot of users–people who still want the information, services and products that web sites provide. For many web sites that use jQuery, it’s not practical or profitable to ignore that audience.

jQuery was conceived specifically to address the differences in browsers, so we’re not going to abandon the essence of our philosophy and simply disregard the millions of active Internet users who (for whatever reasons) still use oldIE. Yet we also want to move ahead and take advantage of modern browsers, especially the growing mobile market.

The Road Ahead

jQuery 1.8 should arrive within a month. Here is our thinking about the next two versions of jQuery to follow it, and when they’ll arrive:

  • jQuery 1.9 (early 2013): We’ll remove many of the interfaces already deprecated in version 1.8; some of them will be available as plugins or alternative APIs supported by the jQuery project. IE 6/7/8 will be supported as today.
  • jQuery 1.9.x (ongoing in 2013 and beyond): This version will continue to get fixes for any regressions, new browser bugs, etc.
  • jQuery 2.0 (early 2013, not long after 1.9): This version will support the same APIs as jQuery 1.9 does, but removes support for IE 6/7/8 oddities such as borked event model, IE7 “attroperties”, HTML5 shims, etc.

Our goal is for 1.9 and 2.0 to be interchangeable as far as the API set they support. When 2.0 comes out, your decision on which version to choose should be as simple as this: If you need IE 6/7/8 support, choose 1.9; otherwise you can use either 1.9 or 2.0.

Questions and Answers

If jQuery 1.9 and 2.0 are basically the same API, what makes 2.0 compelling? Smaller size, better performance, and the lack of problems introduced by the need for oldIE support. We expect that we can improve error handling in the $.Deferred implementation in 2.0, for example, whereas we can’t do that as long as oldIE is supported.

My site still has many IE7/8 visitors but I want to use jQuery 2.0. Can I do that? If your web site needs oldIE support, and we expect most sites will need it for at least another year or two, you can use IE conditional comments to include version 1.9 only when visitors are using oldIE:

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->

Why not make an “oldIE plugin” for jQuery 2.0? Special dispensations for oldIE are sprinkled throughout jQuery. Refactoring the code to provide enough hooks so that oldIE support could be added as a plugin would complicate the code for the modern browser case. Plus, developers supporting oldIE and using a public CDN would then need to include two files (jQuery 2.0 and the oldIE plugin) instead of one.

Once jQuery 2.0 is released, what happens to 1.9? In a departure from the past, we’ll continue to fix bugs in 1.9 (as minor releases). Having just gone through a spring cleaning for 1.8 and 1.9, we don’t anticipate adding a lot of new APIs in the future. Instead, we prefer to add new functionality through plugins compatible with both versions where it makes sense. So don’t feel like you’re being left behind when using version 1.9.

Is jQuery 2.0 basically for mobile devices? No. Although jQuery 2.0 will be a great fit for HTML mobile apps, including ones written with jQuery Mobile, it is not a Webkit-only library that targets just iOS and Android. In addition to mobile browsers, 2.0 will support (and be tested!) with modern desktop versions of Internet Explorer, Opera, Firefox, Safari, and Chrome.

How much smaller/faster will jQuery 2.0 be? We won’t know until we’re done, or at least close to being done. You can bet that we’ll tell you more as the release date for 2.0 draws near. Better yet, you can try the beta when it is released and see for yourself!

99 thoughts on “jQuery Core: Version 1.9 and Beyond

  1. River on said:

    Early 2013 is pretty optimistic, 2015 would be a bit more realistic looking at past development and since that’s just way too early to drop IE7/8.

    Now that we’re talking about goals, the entire jQuery plugin section has been down for over 6 months now. Development on that has stalled to the point where it’s become a hobby project. It might look better to just put the old site back while developing instead of having a “we’ve fucked up” banner with a link to it.

  2. Awesome, looking forward to using jQuery 2 in the mid 2020′s when it makes sense to do so.

    Sarcasm aside, this is a really poor decision. As stated in your post, a large percentage of people use IE and a huge reason people [including me] use jQuery is to alleviate a lot of cross-browser issues. That being said there’s really no reason for me to use jQuery 2 for a very long time and I feel like I’m not alone.

    I suspect jQuery will drop a big chunk of its Javascript library share by 2015 which is sad as I’ve loved jQuery since I started using it and thought that it was on its way to even more dominance and a bigger share in that area.

    All in all a sad day for the project.

  3. No, Andrew, it marks a great day for this project.

    jQuery is a library; just because it is compatible with many browsers, it does not mean it should be used as a cross-browser abstraction layer. If you rely on jQuery to solve browser quirks, then either you are working on some edge-case projects, or I should advise you use other methods to tackle these problems.

    jQuery 1.8 is modular, jQuery 1.9 will be smaller, and jQuery 2.0 will trim the fat out of the 110kB library. If you rely on IE support, chances are that you are developing for a company so large (and momentus) that you are free to choose your own library (e.g. jQ 1.4).

    Being used in 1/3 of the world’s websites means that jQuery has the power to move the world forward, standards or otherwise. For IE developers, previous versions jQuery are not going away; they will do just fine.

  4. @Brian – come on now, crack open your Analytics. You’re not going to tell me that IE6/7/8 is not a HUGE percentage are you?

  5. Jimmy Smits on said:

    Come on guys, why the hate, IE is awesome. Developing for IE is a dream. IE6 especially is probably my favourite browser of all time.

  6. hakantio on said:

    @Jimmy Smits Totally agree. IE6 is a piece of engineered art, amazing work by devs

  7. dFores on said:

    Looks like the solution will be conditionally loading 1.9 or 2.0 based on feature detection. It seems counter-intuitive and against the core idea of jQuery to not include this kind of functionality transparently to the developer / user. The entire reason I started using jQuery was the dead-simple cross-browser AJAX functionality; the primary reason I continue to use jQuery is the solid support for “oldIE”.

  8. Alec on said:

    @Andrew Your points are addressed in the blog post, they clearly acknowledge that oldIE support is important and widely needed and that is why the 1.9 branch will be updated with bug fixes. The post also says that 1.9 and 2.0 will hopefully have the same API so 1.9 users won’t be left behind. I think if anything, jQuery will increase their market share as people who have migrated away from jQuery to use something like xui.js or other small JS libraries because of jQuery file size concerns, will come back and use v2.0.

    All in all a great day for the project.

  9. @Andrew I will: IE6/7/8 is not a huge percentage. IE6 is at 0.66%, IE7 at 1.53%, and IE8, while having a currently-significant 14.35% worldwide market share, has dropped to that from 30% a year ago. By the time jQuery 2.0 comes out—early 2013 at the very earliest—it’ll probably have dropped to ~7%. That means that all of them combined, IE6, 7 and 8, will be less than 10% of the market.

    90% of people) get a really great experience.

    (source for the stats: http://gs.statcounter.com/#browser_version_partially_combined-ww-monthly-201105-201205 )

  10. [fixed & reposted my comment since the previous one got mangled by the server]

    @Andrew I will: IE6/7/8 is not a huge percentage. IE6 is at 0.66%, IE7 at 1.53%, and IE8, while having a currently-significant 14.35% worldwide market share, has dropped to that from 30% a year ago. By the time jQuery 2.0 comes out—early 2013 at the very earliest—it’ll probably have dropped to ~7%. That means that all of them combined, IE6, 7 and 8, will be less than 10% of the market.

    Less than 10% is not a significant percentage by any standard. Most websites made today cater to specific audiences, and very few have a real need to offer full functionality and content fidelity to ALL potential audiences.

    My upcoming content platform will cater to any browser on any device, but what’s so great about the Web, as a platform and a technology stack, is that we can offer tiered support quite easily. We can easily support IE6/7/8 with a much simpler site experience and focus our efforts on the forever-growing audiences using newer browsers, making sure that *they* (the >90% of people) get a really great experience.

    (source for the stats: http://gs.statcounter.com/#browser_version_partially_combined-ww-monthly-201105-201205 )

  11. I guess I’ll have to just agree to disagree with you all. As stated oldIE is anywhere from 15-40% for me and my clients depending on site. I agree that what I’ll probably end up doing at least at launch is something along the lines of: if (user.isOldIE) load_jQuery1.9(); else load_jQuery2.0();.

    My problem actually isn’t so much with the launch of 1.9 & 2.0, I think on that day the quick check will be enough and everything will continue to work, however I am worried that 2.1 and on will start adding features, bug fixes, etc that won’t be added to 1.9 and we’ll all be presented with the question of: “support old IE users or get new jQuery stuff” — not a question I’m looking forward to.

    Also I think saying a drop to 7% is lowballing it but for the sake of argument I’ll accept that number. I imagine 99% of people using jQuery rely on it for the Javascript portion of their sites, does that mean that oldIE users will essentially get a javascript disabled version of your site? 7% is still a significant portion of the pie and that’s a big kick the teeth to those users, even if the number was a few points lower I’d make the same argument.

  12. Thank you guys. I stopped using jquery for html5 and abandoning antiquated browsers is a great move I can’t wait to try your new versions

  13. If what I’m reading means “We’ll have an oldIE version called 1.9 and a modern browser version called 2.0 and will maintain both equally and ensure you don’t end with writing code differently based on which one of them is referenced”, then great and perfect direction.

    If it means “Dismiss oldIE” instead, then I can see jQuery losing its lead very quickly.

  14. Kevin Cooper on said:

    Here’s hoping we can still shim these OldIE browsers and don’t just get left behind. Over 20% of my userbase is IE 6/7/8 (most of this is 8. I would be more than happy to drop 6 & 7 however 8 is still a big fish for us and as it’s the ceiling for winXP based systems it will be very important for a long time to people that cater for a large corporate audience.

  15. SpragueD on said:

    What’s changed in 20 months? That’s when “ajpiano”, responding to a user request for a version of jQuery w/o legacy IE support in ticket bugs.jquery.com/ticket/7487 wrote: “There is almost no code in the library that exists solely to support IE6. Instead, most IE-specific code deals with IE 6 and 7, and there is just as much, if not more, special code in the library to handle Safari oddities as IE. jQuery is a cross browser library and IE6, much as it sucks, is still in wide use in many circles. We’d all like to live in a world where IE6 is a thing of the past, but until it is, jQuery cannot remove support for it in order to save a KB or two.” I’d hate to think something political drove the decision to fork the library.

  16. Truely a strange and I think a wrong decision. As we can see on many aspects of the whole project ressources are limited. Now they will be used for maintaining two codebases. While I dream of a world without oldIE, too, I must reconsider that those browsers will last for a while.

    The main purpose of jQuery was the abstraction of different JS-implementations and the fixing of several shortcomings in all browsers. If you only need to look for webkit-browsers, take zepto.js. If you only target modern browsers: write modern JS. There will be no need for jQuery.

    As I commented months ago it would have been truely a great investment of time to get jQuery chopped into small pieces, just like mootools and YUI. If you care for filesize and want to reduce the monster, ship nearly everything into a plugin. Then I can choose if I need an animation-plugin and an AJAX-plugin or not.

    That would have helped all of us. Splitting up the development into two branches is no good decision in my opinion. We’ll see if it will work or if I have to learn using YUI.

  17. Lane on said:

    There’s a lot of argument here about oldIE support. It sounds to me like the real issue at play is that we as DEVELOPERS will feel like we’re being left behind by jQuery if we can’t use the latest and greatest. I have to support oldIE and will use 1.9 (if I ever upgrade from 1.6, that is), and so some small part of me will feel like I’m missing out on something.

    The key that I think a lot of people are missing is the fact that they don’t plan to add many new APIs to the jQuery CORE, but will add new features with plugins. Those will be the new shiny toys to play with, and nobody will be left behind because they will be plugins that either group can use, in most cases.

    I think it’s a positive change to move the jQuery CORE towards a compact and efficient core engine that is capable of driving all of the features you want to add, but that isn’t bloated by requiring you to load code for dozens of excellent features that you don’t want.

  18. shawn on said:

    I’m all for shrinking/optimizing jQuery. But IE8 was released in 2009 (8 years after IE6), is the latest version of IE installable on XP, and is the default browser on Windows 7. According to the statcounter link above it’s currently several times more popular than all versions of desktop Safari combined. IE8 will (unfortunately) be around for a long time, forcing jQuery usage to become fragmented and more complicated for the significant portion of developers who need to support all mainstream browsers with at least a few percent market share.

    IE8 is definitely downlevel compared to the other popular browsers, but perhaps it could be part of the non-legacy branch of jQuery that receives future development, avoiding most of the fragmentation and hassles for a large portion of developers when new features are added to jQuery next year that don’t support “oldIE”? IE6/7 should hopefully be less of an issue a couple years down the road.

    Or perhaps the naming can be changed, so instead of 1.9 and 2.0, with the complete dead end that gives 1.9 in terms of future major version numbers, they could both have the same version number but a different name (“jQuery Classic”, “jQuery Legacy”, “jQuery Slim”, etc), at least keeping open the possibility that developers using jQuery to support all mainstream browsers could hope to get major new features in the future, especially if IE8 doesn’t fade away as quickly as some might hope or there is a larger backlash than expected to dropping support for browsers that have historically been supported as a core feature of the library. Then when the two branches eventually drop feature parity in the future you could freeze the “legacy” version number, without closing that door prematurely.

  19. John Meyer on said:

    Well guys, thanks for the warning that jQuery 2.0 will not be appropriate to use for public facing websites until Microsoft is no longer supporting Windows XP, since it will not be compatible with the most recent browser that ships with that OS. Effective immediately, I will not be using jQuery in any new development going forward, and will be looking to replace it for in-progress sites before 2.0 comes out, as it is extremely unlikely that 1.9 will remain functionally compatible and API compatible with the latest release for long enough to see XP & IE8 usage drop to the point where it can safely be ignored without alienating a typical public site’s user base.

  20. Jake on said:

    So glad you’re dropping support for oldIE. I get that people are worried because a significant percentage of their users are on one of the oldIE versions, but if we keep developing sites that cater to oldIE, people will keep using it. We need to stop enabling our users (drug dealer pun intended).

    DEATH TO OLD IE!

  21. this will be a great turning point for jQuery development, but it seems we need exact answer to this question:
    What will happen when jQuery 2.1 is released? If it introduces new API, will next versions of jQuery 1.9 support them?

  22. Callum on said:

    John Meyer, I’m baffled by your comment. You’re going to stop using jQuery now, because they announced they’re going to maintain two branches next year – one that continues to support oldIE until support is no longer needed, and one that doesn’t (for projects that don’t need to support oldIE, like several of mine). And even sites that DO need to support oldIE will be able to get the performance benefits of 2.0 by using conditional comments – because 1.9 will *continue to receive updates* to keep its API compatible and to patch bugs. Did you get all those points from the post?

  23. mike on said:

    Completely agree with Andrew. This basically means I can no longer develop business applications with 2.1. Regardless of what your statistics say there is a significant portion of users still bound to oldIEs – take a look at industry specific usage in things like legal and education.

    I love jQuery and have used it for years but this shifts a massive amount of burden to the developers to understand what new features beyond 2.0 will break things, otherwise freeze us in time.

    All for progress and the end of older IEs but this is a crotch kick to the already wounded developers and users suffering with these browsers.

  24. mike on said:

    @Callum
    well after re-re-reading you might be right, the section titled “Once jQuery 2.0 is released, what happens to 1.9?” is a bit ambiguous but I guess it’s a wait and see regarding how many new plugins. I rescind my above comment but am still a bit nervous.

  25. Keith on said:

    After reading the whole post, I just read almost all the comments. I think everyone’s questions and concerns would be addressed if they simply reread the post. Seriously, just read it, word for word, again. These guys know what they’re doing.

  26. @Kieth

    I know! This all sound like an awesome, well thought out plan, which I am excited for.

    Just read people!

  27. Brian on said:

    I laugh so hard at all the “Thanks, I cannot use 2.0 now” FUD going on here. This is a great move by the core team. Give modern browsers a smaller, quicker jQuery and give old browsers what they need. Win/Win? All with a very minimal additional developer task of adding a conditional to load the right version for the right browse segment. Awesome!

  28. Mike on said:

    Sounds good to me I just worry about jQuery 2.1 and so on. If new features are added I won’t be able to take advantage since I’ll have to assume x% of my users are on oldIE. Or I can branch my code whenever I use a new feature, and add my own support for oldIE. Sounds like a headache.

    Regardless, I see no good way around the problem jQuery faces. If oldIE is supported the library as a whole may be held back for years. If oldIE is dropped it may make life harder for developers. There’s no perfect solution.

  29. Spudley on said:

    I can definitely understand the decision to drop support for IE6.

    IE7 is also well on the way to oblivion.

    However, IE8 is still in use. It has a strong userbase and isn’t going away any time soon. I know of corporates are currently upgrading *to* IE8.

    I don’t know how much of the IE-related code in jQuery is specific to each of the IE versions, but it strikes me that you could have achieved almost all of your goals of tidying up the codebase simply by removing support for IE6 and IE7, without needing to compromise IE8 support.

    The other goal it would have helped you achieve a lot better is uptake of the new version. As things stand, uptake of v2.0 (and therefore of any subsequent versions) is going to be slow because people need IE8 support. Even if they can get away without supporting IE6 and IE7, they aren’t going to be able to make the switch to jQ2.

    Seriously, guys: I’d ask you to reconsider this one. What you’re doing here is a good thing, but you need to take it a bit more slowly. Release version 2.0 without IE6 and IE7 support, but keep IE8 support. You can always drop it in a later version.

    Doing it that way will make the transition process smoother for your users, and also probably smoother for you, the jQ developers too.

  30. Aaron on said:

    I applaud this change of stance and am excited to see better performing jQuery in 2.0! Don’t let the few negative commenters here dissuade you, the key is that new features largely will be attached to new innovations that only new browsers support anyway. You’re not going to magically patch features into an obsolete browser. I know the decision to include IE8 on the chopping block is the most controversial but isn’t the Microsoft plan to push Vista/7 users to IE9+ anyway? XP is a decade old now, and next year it’ll obviously be even older. I think it’s time to let old IE go to life support status via 1.9.

  31. Alec on said:

    To all who are worried about not being able to use features in 2.1 and above because you will being using 1.9 for IE users, what type of features are you looking for or worried about missing out on? For a while now jQuery’s API has fulfilled the needs and goals of the project. Most recent major API changes have been syntactic sugar (eg, new events binding with .on() & .off() ) and I imagine many future API changes will be similar.

    All the new features I can think of which could be added to jQuery fall outside the scope of the project and should exist outside the library.

  32. Good news! It looks like you are going to lose a bunch of users who are either too stupid to understand what you wrote or too lazy to even bother reading it. Not having to deal with those people might speed up development even more than dropping oldIE.

  33. FrancoB411 on said:

    This move by the jQuery team seems sensible.

    The market for modern browsers on PCs is growing, and will continue to grow.
    http://bot24.blogspot.com/2012/06/pc-volume-to-grow-almost-5-in-2012-but.html

    The market for mobile browsers is exploding.
    http://www.techjournal.org/2012/06/demand-for-smartphones-tablets-to-remain-red-hot-through-2017/

    The market for IE 6-8 is shrinking and will continue to shrink.
    http://www.w3counter.com/trends

    The pros of serving a growing market in this case seem to outweigh the cons of asking a shrinking market to write an extra two lines of code.

    jQuery 2.0 appears to be targeted at the more resource constrained mobile market.

    Even if a competitor successfully replaces jQuery as the go-to library for “old IE” on the desktop, all they will win is a shrinking niche market that will get smaller year over year.

    From this perspective, the jQuery team’s move seems well thought out.

  34. I find it amusing the uproar over this announcement. It’s not that bad, really people.

    1) The reason IE8 is included along with IE6 and IE7 is because they all share the same codebase. IE9 was a major rewrite to lose the bloat and move the browser into the future (catchup).

    2) What “features” would you expect to be added that you’d need more than a year from now?

    3) Look at the current desktop browser usage stats. Chrome is on the rise, IE is on the decline. Many of those Chrome users still think they are using IE because they don’t know the difference. Just imagine what this is going to look like a year from now… IE will be a very small portion if this trend continues, and a large portion of those will be IE8, which will still be supported by jQuery 1.9.

    So, nothing to get *worried* about. Don’t stress over a situation that doesn’t exist yet. :)

  35. Richard C on said:

    IE 6 may now be a virtually unused thing of the past and IE 7 is nearly there, but IE 8 is HEAVILY used and will still have a plenty of market share come early 2013. Surely we can save some space by trimming IE 6-7 fat without (yet) dropping support for IE 8?

    New projects I start today already drop IE 6 and 7 as supported browsers, but we’ll be stuck working with IE 8 for some time to come.

  36. Anonymous Coward on said:

    I support your decision to drop IE6 and IE7 support but isn’t it a bit soon to drop IE8 support?

  37. xunuo on said:

    I don’t support your decision to drop IE6 IE7 and IE8! Considering 22% of users in China are still using IE6, however IE7 and IE8?

  38. Web Browsers are all racing to HTML5 compliance that this will be a moot point once 2013 rolls around. I think we will find fewer users using old IE version than in years past, b/c I believe more users are browser informed than before.

  39. Matt Webb on said:

    I think this is a poor decision to drop IE support. @Faruk Ates, Those stats don’t mean much unless your clients stats match it as well. Example, I currently have a client who’s analytics show 54% IE and 48% of that IE is 8 and below. And funny enough 35% of their traffic is mobile(mostly iPhone).

    If 1.8 is supposed to have custom builds, why not make IE support part of that option in the build?

  40. cshin9 on said:

    I’d say goodbye, but good riddance is more like it. Although considering that IE users on XP can’t upgrade beyond IE8, I consider leaving support for that.

  41. Jaap on said:

    Will you also be able to cut down on the lengthy ajax code?
    Line 6971 to 8357 of v1.7.2 is about ajax.

    Any chance for a more modular setup of jQuery 2.0?

  42. Brian Gallagher on said:

    The main reason I use jQuery is for polyfills and “compatibility” fixes to make IE 8 and under behave like modern browsers so while I understand that progression is inevitable it bothers me that people would drop support for IE before MS does. It’s kind of catch 22 honestly though, if we don’t force IE users and MS to upgrade their browsers then we are stuck developing for it, and chances are if the statistics show its a popular browser because we support it, then MS likely will to. But it’s also bad practice not to provide support for such a large base of users just because they are either unable to upgrade (XP can’t get IE9+ and most corporate env’s don’t allow their staff to use anything but IE) or they are just to lazy/stupid. Either way I still appreciate that jQuery is grasping some legacy support for a little while longer anyways.

  43. kasakka on said:

    At the moment at my company we charge extra for IE6 and 7 support already and eventually IE8 will join that group as well as it’s just as big a nightmare on the JS side.

    I’m all for cutting the fat out of jQuery. Those who truly need old IE support can simply use an older version and it will most likely work perfectly fine for most things even if it isn’t as bug free as the newer ones.

  44. Robert on said:

    Anyone bitching here obviously didn’t read the entire article or skipped over the lines, because nowhere are they saying that they are completely dropping support for older browsers or that jQuery will not work with older browsers anymore going forward…

    I think the architecture is a good move ..too bad we have to wait till 2014 :)