HeadlinesBriefing favicon HeadlinesBriefing.com

Using Go Mobile for Digital Carrot

Hacker News •
×

I have been developing Digital Carrot with Go Mobile for the last year and it has been largely positive. The short answer: I love Go and wanted to use it. The longer answer: Digital Carrot is cross‑platform and I wanted something that compiles and runs everywhere. Go’s system libraries, such as Expr and Goja, make the app customizable.

I use Go Mobile for all business logic. While I liked Fyne for UI, it was immature, so I chose Flutter with a Go backend. Flutter calls native Swift/Kotlin via platform channels, passes binary‑encoded Protobuf messages, which Go decodes and responds to, keeping logic clean.

Communication from Go to native code requires a Go interface that the platform side implements. I defined an interface like IosMethods and generated Objective‑C/Kotlin stubs. The Swift implementation handles permissions, and the interface is passed back into Go, enabling calls such as setShields and hasScreenTimePermissions.

This stack gives me a seamless server integration—Digital Carrot’s sync server is also in Go, so tests run in under 20 seconds. The strict separation of UI and business logic makes testing trivial, and the lightweight Go daemon uses <60 MB RAM. Future UI swaps are also simple.