Introducing QtWebKit 2.3

Welcome back, it is has been a long long time since I last made a blog post. Since then I have moved from working on KHTML in my free time to being payed to work on QtWebKit full time. I was hired by Nokia last December and was transferred to Digia in September together with most of the Qt team. At Digia most of our work goes into getting ready for Qt 5. We do however have a small side project for Qt 4.x I would like to tell you about, QtWebKit 2.3.

QtWebKit 2.3 was branched from WebKit trunk in early August, but has been merging almost all commits since, only skipping those that removed Qt4 support or used Qt5 specific features. It is our plan to stop following WebKit trunk once QtWebKit for Qt5 also branches, QtWebKit 2.3 will then follow the Qt5 branch, so that it will provide roughly the same underlying features for Qt4 that the next QtWebKit version will provide for Qt5.

It should be pointed out that QtWebKit 2.3 is intended as a community project, it is not part of any official Qt release and is not scheduled to be. QtWebKit 2.3 got started because there was a show of interest from the community to continue to support WebKit for Qt 4.x, so please note that we rely on your help make it work. From the feedback we already get on the webkit-qt mailing list it looks like there are already several developers trying it out.

So what is actually new? The same things as in QtWebKit for Qt 5 minus the QQuickWebView interface or the rename of libraries.

New features:

  • WebGL
  • CSS shaders/filters
  • CSS regions/exclusions
  • window.requestAnimationFrame
  • Remote web inspector

All the small stuff:

  • Latest WebKit (bleeding edge in fact)
  • Lots of performance improvements and reduced memory usage.
  • Incremental image loading by prefering WebKit image-decoders over Qt image decoders.
  • Interface for automatic spell-checker (which wasn't ready for QtWebKit2.2 which is in Qt 4.8).
  • Better support for "BLOB" URLs (Used by some Google services when uploading images among other things).
  • Caret navigation (option)
  • Smooth animated scrolling (option)
  • MHTML coming in a merge soon (multipart MIME documents such as emails),

So where can you find it?

How do I build it?
Set QTDIR (even it is to /usr), call Tools/Scripts/build-webkit --qt --no-webkit2.

How do I build kwebkitpart against my new build of QtWebKit2.3?
You add these flags to cmake:
-DQT_QTWEBKIT_INCLUDE_DIR={{your QtWebKit 2.3 dir}}/WebKitBuild/Release/include/QtWebKit/ \
-DQT_QTWEBKIT_LIBRARY_RELEASE={{your QtWebKit 2.3 dir}}/WebKitBuild/Release/lib/

How do I file bugs?
Bugs for QtWebKit 2.3 are currently tracked in the WebKit bug tracker ( When making a bug report for QtWebKit 2.3, please add [Qt4] to the beginning of the bug title, and make it block bug 88186 which tracks QtWebKit 2.3 issues. Note that since QtWebKit 2.3 lives in a separate branch, features such as the Early-Warning System will not work, and the regular review process does not strictly apply, so you should never request reviews with r? or commits with cq? on any patches for the branch.

I guess that is all. If you have more questions, ask them in the comments.


What's the difference between a community project and an official project? ;)

Looks cool, the project I work on depends critically on QtWebKit so keep up the good work.

By eean at Fri, 11/16/2012 - 02:27

In this case that the branch is not automatically tested on all platforms, so users may experience some configurations not building and may need to fix it and hopefully contribute the fixes back.

By Allan Sandfeld at Fri, 11/16/2012 - 07:40

Of course Qt is by definition a community project, but you know what I mean ;)

By Allan Sandfeld at Fri, 11/16/2012 - 07:50

Does it mean that there will be ubuntu packages with recent webkit finally?

By highsciguy at Sat, 11/24/2012 - 12:26