diff --git a/community/sxmo-surf/APKBUILD b/community/sxmo-surf/APKBUILD
index b17fbcd5313c9765b2a9f00dbde270c0910a9053..8c59795a0c47426f15beef85aa54015dd6a649f2 100644
--- a/community/sxmo-surf/APKBUILD
+++ b/community/sxmo-surf/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Anjandev Momi <anjan@momi.ca>
 pkgname=sxmo-surf
 pkgver=2.0.3
-pkgrel=2
+pkgrel=3
 pkgdesc="Surf fork for Sxmo UI; supports externalpipe, keyword searching, non-JS by default"
 url="https://git.sr.ht/~mil/sxmo-surf"
 arch="all"
@@ -12,6 +12,7 @@ provides="surf-virtual"
 provider_priority=10
 source="$pkgname-$pkgver.tar.gz::https://git.sr.ht/~mil/sxmo-surf/archive/$pkgver.tar.gz
 	webkit2gtk-4.1.patch
+	gcc14.patch
 	"
 subpackages="$pkgname-doc"
 options="!check" # has no tests
@@ -38,4 +39,5 @@ package() {
 sha512sums="
 39f0265f62148cb819022699077fde64264fdc4d4586741d1b216409557a58e12fda4ea84d0ee08c035a94b1665c2684bae9cb7412ccfb16b90b958f966b9e1f  sxmo-surf-2.0.3.tar.gz
 9666c44bc7b9887fab1bf7c6a2584207d4f14d81cd17674522ce7280937e9f735565c95abe2880fe7f3cbb81d6df1f8b5da0e5ea5ce7909d6350634aa167fdb4  webkit2gtk-4.1.patch
+08d402325a49ccbb5388e02cf42226ab5d497a924775fcd943c7e4f8e1177fae79cc92542e02046b5620a9afc925ef29de95d9b1ccb10fc35332211a7b850d4f  gcc14.patch
 "
diff --git a/community/sxmo-surf/gcc14.patch b/community/sxmo-surf/gcc14.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1ca9abf42691d56e6a4bc0757ea9a399cb9e06af
--- /dev/null
+++ b/community/sxmo-surf/gcc14.patch
@@ -0,0 +1,41 @@
+diff --git a/surf.c b/surf.c
+index 1f3d534..c4c82ce 100644
+--- a/surf.c
++++ b/surf.c
+@@ -273,12 +273,12 @@ externalpipe_execute(char* buffer, Arg *arg) {
+ }
+ 
+ static void
+-externalpipe_resource_done(WebKitWebResource *r, GAsyncResult *s, Arg *arg)
++externalpipe_resource_done(GObject *r, GAsyncResult *s, gpointer arg)
+ {
+ 	GError *gerr = NULL;
+-	guchar *buffer = webkit_web_resource_get_data_finish(r, s, NULL, &gerr);
++	guchar *buffer = webkit_web_resource_get_data_finish(WEBKIT_WEB_RESOURCE(r), s, NULL, &gerr);
+ 	if (gerr == NULL) {
+-		externalpipe_execute((char *) buffer, arg);
++		externalpipe_execute((char *) buffer, (Arg *)arg);
+ 	} else {
+ 		g_error_free(gerr);
+ 	}
+@@ -286,17 +286,17 @@ externalpipe_resource_done(WebKitWebResource *r, GAsyncResult *s, Arg *arg)
+ }
+ 
+ static void
+-externalpipe_js_done(WebKitWebView *wv, GAsyncResult *s, Arg *arg)
++externalpipe_js_done(GObject *wv, GAsyncResult *s, gpointer arg)
+ {
+ 	WebKitJavascriptResult *j = webkit_web_view_run_javascript_finish(
+-		wv, s, NULL);
++		WEBKIT_WEB_VIEW(wv), s, NULL);
+ 	if (!j) {
+ 		return;
+ 	}
+ 	JSCValue *v = webkit_javascript_result_get_js_value(j);
+ 	if (jsc_value_is_string(v)) {
+ 		char *buffer = jsc_value_to_string(v);
+-		externalpipe_execute(buffer, arg);
++		externalpipe_execute(buffer, (Arg *)arg);
+ 		g_free(buffer);
+ 	}
+ 	webkit_javascript_result_unref(j);