Native Development

I’ve been on a long-term quest to find a simple, fast, and user-friendly way to develop native applications for a variety of platforms, and this page holds the results of that research.

What I am looking for is something that is:

  • Not Electron: I want to be able to write code that runs natively on the target platform without having to rely on a web browser or a large runtime.
  • Fast: I want to be able to iterate quickly and not have to wait for a long time for builds or deployments.
  • Simple: I want to be able to write code that is easy to understand and maintain.
  • Native Looking: I want to be able to write code that looks and feels like a native application on the target platform.
  • Portable: I want to be able to write code that runs on a variety of platforms without having to rewrite it from scratch.
  • Open-source: I want to be able to use code that is open-source and doesn’t have a lot of restrictions on how it can be used.

We have lost the ability to do RAD (Rapid Application Development) due to the prevalence of web applications, and I personally don’t like that, so I’ve been looking for a way to fix that within a small set of tools I want to build.

Resources

Core Language Date Platform Link Notes
C 2024 Windows, Linux, macOS FLTK

a classic, but aesthetically challenged

C# 2023 Avalonia

XAML-based. Likely the best approach for bigger apps. Not very native-looking on the Mac, but has good documentation.

C++ wxWidgets

an old classic with completely native looks and lots of language bindings

Clojure HumbleUI

a cross-platform GUI toolkit. Not aiming to look native.

Lua 2024 GLU

a Lua GUI toolkit using wxWidgets

macOS, iOS Bounces

a macOS/iOS IDE that allows for live reloading. Very nice, severely let down by a subscription model.

2023 Windows, Linux, macOS wxlua

Lua bindings for wxWidgets

macOS lua-macos-app

a pure Lua/FFI implementation of a macOS app. Mind-bending.

Rust 2024 Windows, Linux, macOS Tauri

Uses native web renderer and widgets. Still requires JavaScript and CSS.