PEP 0.4.0

Posted on by

Today, we’re happy to announce a new release of PEP: Version 0.4.0. Notable changes include better support for module bundlers such as webpack and browserify and the inclusion of a WIP build on the CDN. The WIP build can be found at but should only be used for testing (please don’t deploy the WIP build to a production site).

For full details on what’s included in this release, see the changelog.

To get started with PEP, you can get the files from npm, bower (pepjs), the jQuery CDN, or the GitHub release. Check out the samples or view the project README for more details. If you run into any issues using PEP, please file an issue or join us on IRC in #pep on freenode.

Thanks to all who helped with this release, specifically: Anders D. Johnson, Colin Snover, John-David Dalton, Jörn Zaefferer, Mike Mariano, Scott González, Stefan Neubert, Stuart P. Bentley, Will Binns-Smith.

jQuery Foundation Project Updates

Posted on by

In order to make it easier for jQuery Foundation Members and Web developers to quickly stay abreast of all our projects, we will periodically publish consolidated project updates here.

jQuery Core

Powering 2/3 of sites, jQuery is a fast, small, and feature-rich JavaScript library

Since last December’s release, the team has been hard at work on a major 3.0 release. This release – the alpha of which came out on July 8 – comes with many updates (including Promises/A+ compliant Deferreds) and bug fixes, and it finally removes some previously deprecated and underused features.

Links: download, meeting notes, full list of 3.0 changes

A big thank you to the core team and everyone who contributed – and will contribute – to the upcoming release.
Questions?  Contact Timmy Willison

globalize-mark-light (1) Globalize

JavaScript library for internationalization and localization that leverages the official Unicode CLDR JSON data.

Globalize version 1.0 was released in April and provides developers with localized number formatting and parsing, date and time formatting and parsing, relative time formatting, currency formatting, and message formatting (with pluralization and gender support) that runs in browsers and Node.js, consistently across all of them.

One exciting thing the community is focused on is the ability to compile Globalize for production. This will enable applications to generate custom runtime code that is extremely small and fast.

Links: git, mailing list,
Questions?  Contact Rafael Xavier de Souza

icn-jquerymobile-logo jQuery Mobile

Unified, HTML5-based user interface system for all popular mobile device platforms, built on the jQuery and jQuery UI foundation

The team has been heads down on version 1.5.0, which will bring numerous improvements including:

  • A new standalone enhancer module for customizable, fast declarative initialization of any javascript including jQuery widgets and plugins.
  • Improved and re-written shared with jQuery UI including button, checkboxradio, and controlgroup and the accordion widget which will replace the current collapsible and collapsible set widgets.
  • All of jQuery Mobile’s widget will now also feature the classes option for improved customizability and theming.
  • Re-written table and navbar widgets
  • Greatly improved modularity

Check out full release plans here

Links: download, meeting notes

Questions?  Contact Alexander Schmitz


High performance, standard-compliant ECMAScript parser written in JavaScript

In March, we released Esprima 2.1.0, introducing support for several new pieces of ES6 syntax. In the mean time, a lot of work has been done to complete its ES6 support (check the roadmap). We’ve also improved the testing infrastructure and workflow to make the codebase more contributor-friendly.

Links: git, mailing list

A big thank you to all those who contributed patches to this release: Ariya Hidayat, Bei Zhang, Brandon Mills, Mike Rennie, Mike Sherov.

Questions?  Contact Ariya Hidayat

icn-ui-logo jQuery UI

Curated set of UI interactions, effects, widgets, and themes built on top of the jQuery Library.

The team released jQuery UI 1.11.4 in March, bringing bug fixes for Draggable, Resizable, Sortable, Accordion, Dialog, Slider, and Tooltip.

We are focused now on support for Pointer Events, and splitting up UI Core and old jQuery support to enable smaller builds

Links: git, meeting notes
Questions? Contact Scott González


Creating open standards for CSS libraries, JavaScript UI libraries, and web developers in general.

The team is working on its Phase One release which will involve an initial CSS Framework – this is planned for later this summer.

Work is also underway for a themeroller.

Links: git, meeting notes

Thanks to Micheal Arestad, Alexander Schmitz and Rohit Mulange

Questions?  Contact Sarah Frisk


Powerful, easy-to-use JavaScript unit testing framework

The latest release, 1.18.0, made a lot of improvements to the HTML reporter, making it more efficient to debug failures. For example, a new diff algorithm makes it easier to spot the difference in failed expected/actual assertions.

We’re currently working on the js-reporters project, which QUnit will implement, along with hopefully many other JavaScript testing frameworks and tools. The goal is to standardize an API with events and event data for test runners. A tool like Karma could then adopt a single interface instead of having to support each testing tool individually.

If you want to help moving QUnit along, check out these issues.

Links: git, meeting notes

Questions?  Contact Jörn Zaefferer


PointerEvents Polyfill: a unified event system for the web platform

PEP’s First release (0.3.0) came out in April and the the project is presently working to automate and improve the W3C test suite.

Links: git, meeting notes,

Questions?  Contact Scott González

jQuery 1.11.3 and 2.1.4 Released – iOS Fail-Safe Edition

Posted on by

Here we are again. It’s too late for April Fools, so you can believe us when we tell you that we have two new patch releases for you: jQuery 1.11.3 and 2.1.4.

These releases include a hot-fix for a rare bug in iOS 8.2 and 8.3. This is the only change. As with 1.11.2 and 2.1.3, we do not anticipate any issues when upgrading. However, if you do encounter bugs in upgrading from the previous versions, please let us know.

You can include these files directly from the jQuery CDN if you like, or copy them to your own local server. The 1.x branch includes support for IE 6/7/8 and the 2.x branch does not.

These updates are already available as the current versions on npm and Bower. Information on all the ways to get jQuery is available at Please keep in mind that public, third-party CDNs receive their copies today and it can take a few days to post the files. If you’re anxious to get started, our CDN is always available.

Many thanks to all of you who participated in this release by testing, reporting bugs, or submitting patches, including John-David Dalton, Michał Gołębiowski, Oleg Gaidarenko, Richard Gibson, Dave Methvin, Benjamin Poulain, and Oz Solomon.

Thanks for all your support, and we look forward to showing you all we have in store for jQuery 3.0!


Announcing Globalize 1.0

Posted on by

The jQuery Foundation is excited to announce the 1.0 release of the Globalize project, our internationalization (i18n) library. This release has been a long time coming and as Globalize picks up steam and gains more and more adoption every day, we are proud to finally announce the first stable release of this project. We could go on about the features and benefits of this latest release but we felt it was important that you hear it from the source. Below, Rafael Xavier, the lead for the Globalize project, details everything you need to know about the 1.0 release of Globalize and what is yet to come.

An always up-to-date, modular and simple i18n library

Allow me to skip the details and jump to the fun part. Below is what you get with Globalize today, which provides number formatting and parsing, date and time formatting and parsing, currency formatting, message formatting (ICU message format pattern with gender and pluralization support).

Date formatting and parsing

The date module provides methods that convert dates and times from their internal representations to textual form (formatting) and back again (parsing) in a language-independent manner. Your code can conveniently control the length of the formatted date, time, datetime.

locale .dateFormatter({ datetime: "medium" })( new Date() );
en "Feb 20, 2015, 12:15:00 PM"
zh "2015年2月20日 下午12:15:00"
zh-u-nu-native "二〇一五年二月二〇日 下午一二:一五:〇〇"
es "20 de feb. de 2015 12:15:00"
ar "٢٠‏/٠٢‏/٢٠١٥ ١٢،١٥،٠٠ م"

Your code can even select the fields individually, completely independent of the locale conventions. The pattern “GyMMMd” selects era in its abbreviated form, year, month in its abbreviated form, and day.

locale .dateFormatter({ skeleton "GyMMMd" })( new Date() );
en "Feb 20, 2015 AD"
zh "公元2015年2月20日"
es "20 feb. de 2015 d. C."
ar "٢٠ فبراير، ٢٠١٥ م"


Relative time formatting

In addition to formatting dates and times, the relative time module provides internationalized messages for date and time fields, using customary word or phrase when available.

locale, value .relativeTimeFormatter( "day" )( value );
en, -15 "15 days ago"
en, 0 "today"
en, 1 "tomorrow"


Number formatting and parsing

The number module provides methods that format and parse numbers. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal. Though, it can still conveniently control various aspects of the formatted number like the minimum and maximum fraction digits, integer padding, rounding method, display as percentage, and others.

locale .numberFormatter()( Math.PI );
en (English) "3.142"
es (Spanish) "3,142"
ar (Arabic) "٣٫١٤٢"

Formatting thousands-separators:

locale .numberFormatter()( 1000000 );
en-US (English as spoken in the United States) "1,000,000"
en-IN (English as spoken in India) "10,00,000"

Formatting percentages:

locale .numberFormatter({ style: "percent" })( 0.15 );
en (English) "15%"
es (Spanish) "15 %"
ar (Arabic) "١٥٪"


Currency formatting

The currency module provides methods that allow to format a currency. Your code can be completely independent of the locale conventions for which currency symbol to use, whether or not there’s a space between the currency symbol and the value, the side where the currency symbol must be placed, or even decimal digits used by particular currencies. Currencies can be displayed using symbols (the default), accounting form, 3-letter code, or plural messages.

Formatting currencies using symbols:

3-letter currency code en (English) de (German) zh (Chinese) ar (Arabic)
.currencyFormatter( "USD" )( 1 ); "$1.00" "1,00 $" "US$ 1.00" "US$ ١٫٠٠"
.currencyFormatter( "EUR" )( 1 ); "€1.00" "1,00 €" "€ 1.00" "€ ١٫٠٠"
.currencyFormatter( "CNY" )( 1 ); "CN¥1.00" "1,00 CN¥" "¥ 1.00" "ي.ص ١٫٠٠"
.currencyFormatter( "JPY" )( 1 ); "¥1" "1 ¥" "JP¥ 1" "JP¥ ١"
.currencyFormatter( "GBP" )( 1 ); "£1.00" "1,00 £" "£ 1.00" "£ ١٫٠٠"
.currencyFormatter( "BRL" )( 1 ); "R$1.00" "1,00 R$" "R$ 1.00" "R$ ١٫٠٠"

Formatting currencies in their full names:

locale .currencyFormatter( "USD", { style: "name" })( 1 );
en (English) "1.00 US dollar"
de (German) "1,00 US-Dollar"
zh (Chinese) "1.00美元"
ar (Arabic) "١٫٠٠ دولار أمريكي"

Formatting currencies in the accounting form, which, for example, in the English locale uses parens instead of the minus sign for negative numbers:

locale .currencyFormatter( "USD", { style: "accounting" })( -1 );
en (English) "($1.00)"


ICU message format support (with gender and pluralization support)

The message module provides methods that allow for the creation of internationalized messages, with optional arguments (variables/placeholders) allowing for simple replacement, gender and plural inflections. The arguments can occur in any order, which is necessary for translation into languages with different grammars.

  en: {
   likeIncludingMe: [
      "{count, plural,",
      "    one {You have one task remaining}",
      "  other {You have {count} tasks remaining}",


locale, count .messageFormatter( "likeIncludingMe" )({ count: count });
en, 1 "You have one task remaining"
en, 99 "You have 99 tasks remaining"


Built on standards

Globalize is based on the Unicode Consortium standards and specifications (UTS#35) and it uses its Common Locale Data Repository (CLDR), the largest and most extensive standard repository of locale data available. CLDR is constantly updated and is used by many large applications and operating systems, so you’ll always have access to the most accurate and up-to-date locale data.

CLDR content

Globalize needs CLDR content to function properly, although it doesn’t embed or host such content. Instead, Globalize empowers developers to load CLDR data the way they want. Vanilla CLDR in its official JSON format (no pre-processing) is expected to be provided. As a consequence, (a) Globalize avoids bugs caused by outdated i18n content. Developers can use up-to-date CLDR data directly from Unicode as soon as it’s released, without having to wait for any pipeline on our side. (b) Developers have full control over which locale coverage they want to provide on their applications. (c) Developers are able to share the same i18n dataset between Globalize and other libraries that leverage CLDR. There’s no need for duplicating data. For more information read our documentation on CLDR Usage.

Browser and Node.js Support

Globalize is systematically tested against desktop and mobile browsers and Node.js. So, using it you’ll get consistent results across the various browsers and between client and server. For more details read our Browser Support section.

Get Started

Install it and use it today. See examples for AMD + bower, or Node.js + npm, or plain JavaScript in our Usage section.

If you’re coming from Globalize 0.x, don’t panic. We’ve created a migration guide for you.

Team and Community

We’re grateful for all the support we have received, specifically from Jörn Zaefferer and Scott González for their help with the initial rewrite concept and for being constant advisors; John Emmons, Steven R. Loomis, and Mark Davis (Unicode) for their help with CLDR and UTS#35 specification questions; Alex Sexton and Eemeli Aro for their messageformat.js and make-plural.js libraries that power respectively our MessageFormat and Plural modules; and the jQuery Foundation for the community building, collaborative efforts and its continued support of Globalize and web internationalization.

We want to also thank Nebojša Ćirić, Mihai Niță, and Shanjian Li (Google); Steven Loomis, Steven Atkin, and John Emmons (IBM); Rick Waldron (Ecma-402 2nd Edition editor); Caridy Patiño and Eric Ferraiuolo (Yahoo); Christophe Jolif and Clement Mathieu (Dojo); Cameron Dutro and Kirill Lashuk (Twitter); Craig Cummings and Tex Texin (; Santhosh Thottingal and Kartik Mistry (Wikipedia); Axel Hecht (Mozilla); Bruno Lewin and Daniel Goldschmidt (Microsoft); Lily Wen (Adobe); Edwin Hoogerbeets (LG); Eirik Rude (Oracle); Xiang Xu (Paypal); Iskren Chernev (moment.js); and Tingan Ho ( to have joined us in an effort to better coordinate the globalization (internationalization and localization) activity of the JavaScript community. If you want to get involved or read more about it, head over to the [email protected] mailing list or take a look at our JavaScript Globalization overview page.


We’re working on even more exciting features that will soon be part of Globalize. To name a few: runtime optimization and non-gregorian calendar support. So, if any of these are of your interest, make sure you chime in. Express your thoughts and your needs (e.g., which calendars you want to be supported).
We are always looking for contributors to join our team. If you want to get involved, please read the contributing guide. Your help is very welcome.

Announcing PEP 0.3.0

Posted on by

Today, we’re happy to announce the first release of PEP (jQuery Foundation’s Pointer Events polyfill) since Google transferred the Pointer Events polyfill to the jQuery Foundation. There’s more work to do in order to address changes to the Pointer Events specification and flesh out our test suite, but you can start using Pointer Events in your projects today! Other projects, like jQuery UI, jQuery Mobile, and Dojo are in the process of switching to Pointer Events with PEP.

To celebrate our first release, Alex Schmitz built a little demo which he used to show PEP working on different devices.

P drawn on desktop ChromeE drawn in Chrome on AndroidP drawn in Mobile Safari

Since the transfer, we’ve been focusing on moving over to new infrastructure to allow easier contributions and faster development. We’ve switched the tests over to using Intern and set up continuous integration with Travis CI, using BrowserStack to run the tests in all of our supported browsers. We’ve also switched away from plain file concatenation to using ES6 modules via Esperanto to make the cross-file dependencies explicit. Lastly, we’ve moved to our common release infrastructure to ensure consistent releases.

To get started with PEP, you can get the files from npm, bower (pepjs), the jQuery CDN, or the GitHub release. Check out the samples or view the project README for more details. If you run into any issues using PEP, please file an issue or join us on IRC in #pep on freenode.

Come help the jQuery Foundation

Posted on by

For many years now the jQuery team first, and then the jQuery Foundation as an organization, has helped developers all over the world to write simple, concise, and clean code that isn’t affected by all the browser incompatibilities that developers are well-accustomed to. As you know, all the jQuery Foundation projects are maintained by a group of volunteers who keep the libraries relevant and in line with modern browser APIs and issues. The team also keeps the API documentation and educational guides up to date.

In the next few months, the team will work on the several jQuery-related websites to ensure an even higher standard of quality to help millions of users write their code. There is so much to do and our resources are limited, so today we are asking you for help. Part of the team is currently focusing their attention on the Learning Center, but we appreciate help in any repository. If ever the jQuery Foundation projects have saved you work and frustration, this is the right time to give something back. There are many ways in which you can contribute, and you don’t have to be an expert developer. You can help the project by fixing issues in the code or improving the documentation. Everything counts. The jQuery Foundation welcomes contributions from anyone willing to put in the time and effort to help us and our community of users.

To learn more about how you can contribute, visit the Contribute website, sign our Contributor License Agreement and start helping. In case you can’t help us by addressing code or documentation problems but you still love our projects, you can help us by making a small donation.

Esprima 2.1 Released

Posted on by

We’ve just released Esprima 2.1.0! This release introduces support for several new pieces of ES6 syntax: Classes, Rest Parameters, Computed Property Names, let and const. See the release notes below for full details. We’ve also made various improvements to our testing infrastructure to make the codebase more contributor friendly. A big thank you to all those who contributed patches to this release: Ariya Hidayat, Bei Zhang, Brandon Mills, Mike Rennie, Mike Sherov.

While working on bringing more ES6 features to Esprima, we began collaborating with other JavaScript parsers and parser consumers to help define a community standard for JS AST generation. The result of that effort is the ESTree spec, located here: We wanted to say thank you to all who are contributing, which includes members from Esprima, the Mozilla SpiderMonkey parser, the Acorn parser, and Babel, to name a few. A full list of contributors is located here:

Expect a 2.2 release to follow in a few weeks bringing even more ES6 support. If you’d like to help contribute, we hang out in the #esprima room on Freenode IRC, and have a weekly meeting at 2PM ET on Wednesdays in #esprima-meeting on Freenode IRC as well. We look forward to seeing you there!

Release Notes

  • Support ES6 class #1001
  • Support ES6 rest parameter #1011
  • Support ES6 computed property name #1037
  • Support ES6 lexical declaration #1065
  • Expand the location of property getter, setter, and methods #1029
  • Enable TryStatement transition to a single handler #1031
  • Tolerate unclosed block comment #1041

Getting on Point

Posted on by

We’re excited to announce that the Pointer Events specification has become a W3C Recommendation! As we’ve said before, we love Pointer Events because they support all of the common input devices today – mouse, pen/stylus, and fingers – but they’re also designed in such a way that future devices can easily be added, and existing code will automatically support the new device. While reaching Recommendation status is a monumental moment, there’s still much work to do.

Pointer Events aren’t a viable solution until they’re usable in all of the browsers that developers are supporting. While that day may seem far away, the jQuery Foundation is dedicated to getting usable Pointer Events in every developer’s hands as soon as possible. We’re working on PEP, our Pointer Events polyfill that Google transferred from the Polymer project to the jQuery Foundation. PEP will be integrated into projects such as jQuery UI, jQuery Mobile, and Dojo. We’re hoping to get out our first release in the next few weeks. If you’re interested in helping out, let us know.

Microsoft is already shipping a full implementation of Pointer Events in IE11 and they had a mostly complete, prefixed implementation in IE10. Mozilla also has a full implementation for Firefox on Windows Metro, though it’s not currently enabled. Both implementation are passing 100% of the W3C Pointer Events test suite. You can follow Mozilla’s progress for all of their supported platforms on

Of course, the world ain’t all sunshine and rainbows. There’s still no sign that Apple will ever implement Pointer Events. Because of this, Google has decided not to ship Pointer Events in Blink, but rather to try to extend Touch Events to have the power of Pointer Events. The work to extend Touch Events is happening in the Touch Events Community Group to ensure interoperability and standardization. However, there is reasonable concern that adding several extensions to Touch Events will just result in an even more fragmented landscape, eventually worsening the situation rather than improving it. It’s not clear that Apple would implement all of these features anyway, and adding support for hover would require awkward APIs due to the logic that already exists in Touch Events. Even if the power of Pointer Events were added to Touch Events, the awkward event interface isn’t nearly as nice or easy to transition to from Mouse Events.

Despite Google’s current position, they’re willing to continually re-evaluate if shipping Pointer Events will help move the web forward. We’re hopeful that Google will reverse their decision in the future and Apple will eventually be compelled to implement Pointer Events once Safari is the only major browser without support. The Chromium issue for implementing Pointer Events is already in the the 99th percentile of all issues (open and closed) based on number of stars.

As a community, we can shape the future of the web right now. We need to stop letting Apple stifle the work of browser vendors and standards bodies. Too many times, we’ve seen browser vendors with the best intentions fall victim to Apple’s reluctance to work with standards bodies and WebKit’s dominance on mobile devices. We cannot let this continue to happen. The jQuery Foundation is dedicated to driving standards, like Pointer Events, to improve the developer experience and in turn, make the web a better, more accessible place for everyone. Together, we can push the web forward and let standards and better APIs win. We can choose Pointer Events over Touch Events. And we can do it right now, with PEP.

jQuery UK: Europe’s jQuery Conference

Posted on by

jQuery UK will take place on March 6, 2015 in Oxford, UK. This event is organised by White October Events with support from the jQuery Foundation.

jQuery UK is the UK’s largest front-end developer conference. Now in its fourth year, two packed tracks will feature the biggest names in front-end, including Bootstrap creator Mark Otto, Standardista Estelle Weyl, Google Engineer Addy Osmani and Jenn Schiffer of Bocoup.

Practical sessions will cover topics including architecting client-side code for resilience, making your code more readable and expressive, and designing for displays that don’t exist yet.

There are four hands-on workshops taking place the day before the conference. Choose from:

  • Practical & powerful HTML, CSS, and JavaScript
  • Advanced jQuery Techniques
  • AngularJS Foundations
  • Web Developers Workflow

Space for these workshops is strictly limited, so book early to secure your spot!

Tickets are on sale now at £190 + VAT.

To book tickets or sign up for updates, visit You can also track jQuery UK on and follow @jquk for updates. Joins the jQuery Foundation

Posted on by

In case you haven’t heard, Famous Industries ( announced today that they are joining the jQuery Foundation as a Founding-level member. joins our other Founding-level members, WordPress and IBM, and our growing list of member companies, who recognize the power and importance of the jQuery Foundation’s open governance for JavaScript technologies.

For those who are not familiar with, they offer a free, open source JavaScript platform that enables engineers to build beautiful, cross-platform web apps. It is the only framework that provides an open source 3D layout engine fully integrated with a 3D physics-based animation engine that can render to DOM, Canvas, or WebGL. also provides extensive free training, examples, and tutorials through University. Their live coding environment allows students to see their code rendered in real time and work through topics at their own pace. We plan on taking advantage of their passion for education by partnering with to deliver a top notch developer event in San Francisco in mid 2015 (stay tuned!).

Today, jQuery continues to be one of the most preferred JavaScript libraries available with 8 out of 10 of the top JavaScript enabled websites and over 60% of the top one million websites* choosing jQuery-enabled libraries. As our community grows and continues to innovate, so do we. This makes the support of our members more critical than ever.

We are working on a number of new initiatives: Making improvements to how our innovative technical community collaborates. has a number of widgets they intend to make available as jQuery plugins and we look forward to taking advantage of their support and expertise as we work to improve the extended community guidance around jQuery plugins. developers will be joining our technical efforts so please say ‘hello’ and make them feel welcome. Co-founder and CEO Steve Newcomb has been elected to the jQuery Foundation board of directors. We look forward to benefiting from the unique perspectives, business acumen and life experiences Steve will bring to our board in helping us move forward toward accomplishing our mission.

It’s going to be a great partnership and a busy New Year. With that, please join us and give a shout out and welcome them to the jQuery Foundation!

*stats from