diff --git a/jsaddle-webkit2gtk.cabal b/jsaddle-webkit2gtk.cabal
--- a/jsaddle-webkit2gtk.cabal
+++ b/jsaddle-webkit2gtk.cabal
@@ -1,5 +1,5 @@
 name: jsaddle-webkit2gtk
-version: 0.9.8.1
+version: 0.9.8.2
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -26,7 +26,7 @@
         base <5
     if !impl(ghcjs -any)
       build-depends:
-        aeson >=0.8.0.2 && <1.6,
+        aeson >=0.8.0.2 && <2.1,
         base <5,
         bytestring >=0.10.6.0 && <0.11,
         directory >=1.0.0.2 && <1.4,
@@ -35,7 +35,7 @@
         gi-gtk >=3.0.17 && <3.1,
         gi-webkit2 >=4.0.14 && <4.1,
         gi-javascriptcore >=4.0.14 && <4.1,
-        haskell-gi-base >=0.20 && <0.26,
+        haskell-gi-base >=0.20 && <0.27,
         haskell-gi-overloading >=0.0 && < 2.0,
         jsaddle >=0.9.4.0 && <0.10,
         text >=1.2.1.3 && <1.3,
diff --git a/src/Language/Javascript/JSaddle/WebKitGTK.hs b/src/Language/Javascript/JSaddle/WebKitGTK.hs
--- a/src/Language/Javascript/JSaddle/WebKitGTK.hs
+++ b/src/Language/Javascript/JSaddle/WebKitGTK.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE MonoLocalBinds #-}
 -----------------------------------------------------------------------------
 --
 -- Module      :  Language.Javascript.JSaddle.WebSockets
@@ -71,12 +72,11 @@
         userContentManagerRegisterScriptMessageHandler,
         javascriptResultGetJsValue,
         webViewGetUserContentManager,
-        mk_UserContentManagerScriptMessageReceivedCallback,
-        wrap_UserContentManagerScriptMessageReceivedCallback,
         webViewRunJavascript, LoadEvent(..),
         UserContentManagerScriptMessageReceivedCallback, webViewLoadHtml,
         onWebViewLoadChanged, setSettingsEnableDeveloperExtras,
-        webViewSetSettings, webViewGetSettings, ScriptDialogType(..))
+        webViewSetSettings, webViewGetSettings, ScriptDialogType(..), IsUserContentManager)
+import qualified GI.WebKit2
 
 import Language.Javascript.JSaddle (JSM, Results, Batch)
 import Language.Javascript.JSaddle.Run (runJavaScript)
@@ -124,9 +124,9 @@
     _ <- onWidgetDestroy window mainQuit
     widgetShowAll window
     pwd <- getCurrentDirectory
-    void . onWebViewLoadChanged webView $ \case
-        LoadEventFinished -> runInWebView main webView
-        _ -> return ()
+    let webViewLoadChangedCallback LoadEventFinished = runInWebView main webView
+        webViewLoadChangedCallback _                 = return ()
+    void $ onWebViewLoadChanged webView webViewLoadChangedCallback
     webViewLoadHtml webView "" . Just $ "file://" <> T.pack pwd <> "/index.html"
     installQuitHandler webView
     Gtk.main
@@ -142,17 +142,21 @@
         \_obj _asyncResult ->
             void $ forkIO start
 
-onUserContentManagerScriptMessageReceived :: (GObject a, MonadIO m) => a -> UserContentManagerScriptMessageReceivedCallback -> m SignalHandlerId
+onUserContentManagerScriptMessageReceived :: (IsUserContentManager a, MonadIO m) => a -> UserContentManagerScriptMessageReceivedCallback -> m SignalHandlerId
+#if MIN_VERSION_haskell_gi_base(0,26,0)
+onUserContentManagerScriptMessageReceived obj cb = GI.WebKit2.onUserContentManagerScriptMessageReceived obj Nothing cb
+#else
 onUserContentManagerScriptMessageReceived obj cb = liftIO $ connectUserContentManagerScriptMessageReceived obj cb SignalConnectBefore
 
 connectUserContentManagerScriptMessageReceived :: (GObject a, MonadIO m) =>
                                                   a -> UserContentManagerScriptMessageReceivedCallback -> SignalConnectMode -> m SignalHandlerId
 connectUserContentManagerScriptMessageReceived obj cb after = liftIO $ do
-    let cb' = wrap_UserContentManagerScriptMessageReceivedCallback cb
-    cb'' <- mk_UserContentManagerScriptMessageReceivedCallback cb'
+    let cb' = GI.WebKit2.wrap_UserContentManagerScriptMessageReceivedCallback cb
+    cb'' <- GI.WebKit2.mk_UserContentManagerScriptMessageReceivedCallback cb'
     connectSignalFunPtr obj "script-message-received::jsaddle" cb'' after
 #if MIN_VERSION_haskell_gi_base(0,23,0)
       Nothing
+#endif
 #endif
 
 addJSaddleHandler :: WebView -> (Results -> IO ()) -> (Results -> IO Batch) -> IO ()
