diff --git a/contrib/mobile/mobile.go b/contrib/mobile/mobile.go
index f4f8c22fd..85ff63f1d 100644
--- a/contrib/mobile/mobile.go
+++ b/contrib/mobile/mobile.go
@@ -6,7 +6,6 @@ import (
 	"fmt"
 	"net"
 	"regexp"
-	"runtime/debug"
 
 	"github.com/gologme/log"
 
@@ -45,7 +44,7 @@ func (m *Yggdrasil) StartAutoconfigure() error {
 // StartJSON starts a node with the given JSON config. You can get JSON config
 // (rather than HJSON) by using the GenerateConfigJSON() function
 func (m *Yggdrasil) StartJSON(configjson []byte) error {
-	debug.SetMemoryLimit(1024 * 1024 * 40)
+	setMemLimitIfPossible()
 
 	m.logger = log.New(m.log, "", 0)
 	m.logger.EnableLevel("error")
diff --git a/contrib/mobile/mobile_mem_go120.go b/contrib/mobile/mobile_mem_go120.go
new file mode 100644
index 000000000..853f1abaf
--- /dev/null
+++ b/contrib/mobile/mobile_mem_go120.go
@@ -0,0 +1,10 @@
+//go:build go1.20
+// +build go1.20
+
+package mobile
+
+import "runtime/debug"
+
+func setMemLimitIfPossible() {
+	debug.SetMemoryLimit(1024 * 1024 * 40)
+}
diff --git a/contrib/mobile/mobile_mem_other.go b/contrib/mobile/mobile_mem_other.go
new file mode 100644
index 000000000..729d9c2a5
--- /dev/null
+++ b/contrib/mobile/mobile_mem_other.go
@@ -0,0 +1,8 @@
+//go:build !go1.20
+// +build !go1.20
+
+package mobile
+
+func setMemLimitIfPossible() {
+	// not supported by this Go version
+}