diff --git a/extra/webkit2gtk/PKGBUILD b/extra/webkit2gtk/PKGBUILD
index 735444700..c79987d96 100644
--- a/extra/webkit2gtk/PKGBUILD
+++ b/extra/webkit2gtk/PKGBUILD
@@ -10,7 +10,7 @@ highmem=1
 
 pkgname=webkit2gtk
 pkgver=2.16.1
-pkgrel=1
+pkgrel=3
 pkgdesc="GTK+ Web content engine library"
 arch=(i686 x86_64)
 url="https://webkitgtk.org/"
@@ -27,11 +27,13 @@ options=(!emptydirs)
 source=(https://webkitgtk.org/releases/webkitgtk-${pkgver}.tar.xz{,.asc}
         0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch
         0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch
+        icu59.patch
         remove_atomics.patch)
 sha256sums=('eb92383232328ce655b703c64370ed3795662479719ad1b4a869ed46769d2945'
             'SKIP'
             '51541d4cb1f58d3b7c7112948ce0588e45ca445434350aec3e47c227651ff19f'
             '18219f8a016eeb001efb4788891d18d83804f03bda537da621bcf73615a68e2f'
+            'eb791b9c8dcb84996904846dedf8c3ddf1a5fde32330177f3f0071510bd8ca6d'
             '410449817b1b181737538be10d96d6d8aec134285f6288e80c96fbfdd5d19519')
 validpgpkeys=('D7FCF61CF9A2DEAB31D81BD3F3D322D0EC4582C3')
 
@@ -44,6 +46,7 @@ prepare() {
   #rm -r Source/ThirdParty/qunit/
   patch -Np1 -i ../0001-Merge-r214319-JSC-MachineThreads-does-not-consider-s.patch
   patch -Np1 -i ../0001-Show-a-log-message-when-an-invalid-message-is-receiv.patch
+  patch -Np1 -i ../icu59.patch
 
   if [[ $CARCH == "arm" || $CARCH == "armv6h" ]]; then
     patch -p0 -i ../remove_atomics.patch
diff --git a/extra/webkit2gtk/icu59.patch b/extra/webkit2gtk/icu59.patch
new file mode 100644
index 000000000..39ff89ee6
--- /dev/null
+++ b/extra/webkit2gtk/icu59.patch
@@ -0,0 +1,38 @@
+--- webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h.orig	2017-02-20 17:20:08.000000000 +0100
++++ webkitgtk-2.16.1/Source/JavaScriptCore/API/JSStringRef.h	2017-04-22 14:35:00.926530142 +0200
+@@ -32,6 +32,7 @@
+ #include <stdbool.h>
+ #endif
+ #include <stddef.h> /* for size_t */
++#include <uchar.h>
+ 
+ #ifdef __cplusplus
+ extern "C" {
+@@ -46,7 +47,7 @@
+  character. As with all scalar types, endianness depends on the underlying
+  architecture.
+ */
+-    typedef unsigned short JSChar;
++    typedef char16_t JSChar;
+ #else
+     typedef wchar_t JSChar;
+ #endif
+--- webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h.orig	2017-02-20 17:20:17.000000000 +0100
++++ webkitgtk-2.16.1/Source/WebKit2/Shared/API/c/WKString.h	2017-04-22 14:35:56.853196170 +0200
+@@ -28,6 +28,7 @@
+ 
+ #include <WebKit/WKBase.h>
+ #include <stddef.h>
++#include <uchar.h>
+ 
+ #ifndef __cplusplus
+ #include <stdbool.h>
+@@ -39,7 +40,7 @@
+ 
+ #if !defined(WIN32) && !defined(_WIN32) \
+     && !((defined(__CC_ARM) || defined(__ARMCC__)) && !defined(__linux__)) /* RVCT */
+-    typedef unsigned short WKChar;
++    typedef char16_t WKChar;
+ #else
+     typedef wchar_t WKChar;
+ #endif