What’s New in Firefox 34

Share this article

It’s time for another (mostly painless) browser upgrade. Mozilla has released Firefox 34 with a number of new features for users and developers plus a controversial switch of default search engine. Let’s take a look under the hood…

Goodbye Google, Hello Yahoo

The decade of default Googling is over. Mozilla’s lucrative partnership with Google has ended and Firefox users will have an alternative for the 100 billion searches they perform every year. According to the press release:

In evaluating our search partnerships, our primary consideration was to ensure our strategy aligned with our values of choice and independence, and positions us to innovate and advance our mission in ways that best serve our users and the Web. In the end, each of the partnership options available to us had strong, improved economic terms reflecting the significant value that Firefox brings to the ecosystem.

For those who can’t read marketing BS, this roughly translates to “Yahoo will give us more money”. As per the deal, for the next five years:

  • Yahoo will be the default search engine for US users.
  • Yandex will be the default for Russian users.
  • Baidu will continue to be the default for Chinese users.
  • Google will remain to be the default for other users throughout the world. There will inevitably be some commercial payback but there’s no official arrangement.
  • Google, Bing, DuckDuckGo, eBay, Amazon, Twitter and Wikipedia will continue to be built-in search options.

As well as monetary concerns, I suspect Google’s commercial vision and own browser didn’t sit well with Mozilla. There are rumors negotiations broke down because Google were not eager to follow Do Not Track privacy standards. Interestingly, Yahoo ignores DNT but will now enable it — but only for Firefox users.

What’s most interesting is what’s not being said. Yahoo no longer power their own search engine; below the surface, it’s Microsoft’s Bing.

Ultimately, little of this matters to users: you can continue to use whichever engine you prefer. Mozilla doesn’t need to make a profit but it’ll be intriguing to discover how the deal affects the income which is plowed back into Firefox development.

Firefox 34 search bar

Improved Search Bar

A new one-click search bar offers suggestions and an icon set with alternative engines. Bizarrely, only US users receive this enhancement so I guess it’s somehow part of the Yahoo deal?

Firefox Hello

Hello is a real-time video chat built by tokbox using WebRTC. In essence, it’s Skype or Google Hangouts without the need for additional software, plugins or a user account. Or even Firefox — a “Hello” link can be sent to anyone with a WebRTC-compatible browser such as Chrome or Opera.

Unlike the competitors, WebRTC is a peer-to-peer service so you chat without a provider eves-dropping on your conversation. It’s being rolled out gradually — if you can’t see it, enable loop.throttled in about:config and restart the browser. You may need to use Customize to drag the “Hello” icon somewhere on your toolbar or menu.

Firefox Hello

The service is in beta and I received several failures but it’s a promising start.

Windows “Firefox is already running” Fix

Now and again, Firefox won’t start on Windows because it’s already running in the background — normally, it’s because the user’s profile is locked. The only solution was to open the Windows Task Manager and kill the Firefox process — not something the average user would know.

While the problem is not exactly fixed, Firefox 34 shows a message which allows you to terminate the process.

CSS Updates

A number of new CSS Fonts Level 3 features have been added:

  • font-kerning controls how letters are spaced: auto, normal or none.
  • font-synthesis controls how missing bold or italic typefaces are synthesized: none (neither should be synthesized), weight, style or weight style (both can be synthesized).
  • font-variant-position can be set to normal, sub and super to define smaller subscript and superscript characters respectively. Firefox attempts to use the correct glyphs for the font — such as the 2 squared character. Where this does not exist, it will now create synthetic alternates.
  • font-variant-caps controls alternative glyphs for capital letters, e.g. small-caps, titling-caps.
  • font-variant-numeric controls alternate glyphs for numbers, fractions, and ordinal markers, e.g. slashed-zero, diagonal-fractions, stacked-fractions, etc.
  • font-variant-east-asian controls alternative glyphs for East Asian scripts, such as Chinese and Japanese, e.g. simplified, traditional, jis90, etc.
  • font-variant-ligatures controls typographic ligatures where two or more letters are joined as a single glyph, e.g. common-ligatures, historical-ligatures, etc.
  • font-variant-alternates controls alternate glyphs associated to alternative names defined by @font-feature-values.
  • font-variant is supported which is a shorthand for font-variant-caps, font-variant-numeric, font-variant-alternates, font-variant-ligatures, and font-variant-east-asian.

In addition, a number of minor updates and fixes have been applied to min-width, max-width and transitions which change display, position or overflow.

JavaScript Updates

Templates are strings containing other variables which are parsed — similar to the evaluation of double-quote strings in PHP. Template strings are enclosed with back-tick quotes (`) and use ${} to hold each expression, e.g.

var a = 5, b = 10;
console.log(`Fifteen is ${a + b} and not ${2 * a + b}.`);
// same result as:
console.log("Fifteen is " + (a + b) + " and not " + (2 * a + b) + ".");

A new ES6 shorthand for functions can now be adopted. For example, rather than:

var myObject = {
  methodOne: function() {},
  methodTwo: function() {},
  generator: function*() {}
};

you can use:

var myObject = {
  methodOne() {},
  methodTwo() {},
  * generator() {}
};

The Object.assign method copies enumerable and own properties from one or more source objects to a target object without requiring your own recursive loops, e.g.

var o1 = { a: 1 }, o2 = { b: 2 }, o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj);
// { a: 1, b: 2, c: 3 }

The Element.matches() method returns true if an element would be selected by the specified selector string, e.g.

var e = document.getElementById("myelement");

console.log( e.matches("body #myelement") ); // true
console.log( e.matches("#anotherelement") ); // false

The Performance.now() method returns a floating point date stamp measured in milliseconds, accurate to one thousandth of a millisecond! It’s similar to the less accurate Date.now() which returns whole milliseconds. A value of zero represents:

  • the Unix epoch of 1 January 1970
  • if running from a web worker, the moment that worker started
  • if running from a web worker created by another worker, the parent worker’s epoch time

(Yet to be documented) smooth scrolling methods have been added to window.scroll(), window.scrollTo() and window.scrollBy(). It’s about time!

Finally, ES6 weakset has been implemented.

Developer Tool Updates

A new Storage Inspector allows you to view site data in cookies, localStorage, sessionStorage and IndexDB. It needs to be enabled by opening the tools, clicking the Settings cog icon and checking the Storage option.

While you’re in the settings, enable Select an iframe as the currently targeted document. This allows you to examine iframe content separately rather than viewing it as as child of the parent document.

The Page Inspector shows events attached to DOM nodes with an ev icon. However, in previous editions, an event defined using jQuery would show jQuery’s internal handler functions. From version 34, the Inspector shows the parent handler function — which is far more useful.

The Performance tool and frame rate timeline have been redesigned to help assess responsiveness.

Firefox 34 performance

The console now supports console.table which can be useful for outputting structured data stored in arrays and objects.

Finally, you can access the Web Audio inspector and WebIDE as provided in the Firefox Developer Edition.

If that’s not enough, a new dev/panel API allows you to build your own Developer Tool extensions and plugins. Are Firebug’s days numbered?

Miscellaneous Updates

And there’s more…

Firefox 34 themes

  • A new Themes button is shown in Customize.
  • HTTP/2 implementation.
  • Wikipedia uses HTTPS for secure searching (again, it’s US-only for some reason?)
  • fullscreen video disables sleep and screen dimming on Mac.
  • (Yet another) re-design for the Android edition.
  • Firefox on Android supports mirroring for Google Chromecast devices.
  • Various security fixes.

Phew. That’s an impressive number of updates for a six-week development schedule.

It’s early days, but Firefox 34 also seems a little faster and more stable than version 33. Perhaps it’s the combination of add-ons I use, but I experienced various problems and crashes and considered downgrading to v32. Hopefully, the main issues are fixed.

While the Yahoo switch is largely irrelevant and I’m slightly alarmed by the number of US-only features, Firefox 34 is a great update. Firefox 35 will appear in early 2015.

Craig BucklerCraig Buckler
View Author

Craig is a freelance UK web consultant who built his first page for IE2.0 in 1995. Since that time he's been advocating standards, accessibility, and best-practice HTML5 techniques. He's created enterprise specifications, websites and online applications for companies and organisations including the UK Parliament, the European Parliament, the Department of Energy & Climate Change, Microsoft, and more. He's written more than 1,000 articles for SitePoint and you can find him @craigbuckler.

firefoxMozilla
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week