It is the dream of every developer to write code once and then deploy it frictionlessly to every available platform (macOS, Windows, Linux, iOS, Android, …). This is of course very hard to do in practise, as each platform does just about everything differently. “Viva la différence!”
As consumers this is a good thing, and gives us options. As developers, it is a huge pain in the neck. Because this is a big problem for devs, a lot of people have had a crack at solving it. Every so often, we stray from the path of native development and are tempted by the sweet promise of “write once, run anywhere!” The problem is if you need to do anything close to the metal or complicated, you usually have to drop down into native code, which kind of defeats the purpose. There are some applications that are categorically not suited to cross-platform solutions. Anything that requires deep system-level integration, minimal latency, or specialized use of hardware features, probably falls into this bucket.
Adding a User Interface to ChatGPT with BeeWare — Part 1
Trying to massage user inputs and output in ChatGPT is painful. We spent hours trying to print some coloured text using…
However, there are some applications that do lend themselves to a cross-platform approach. If your plan is to develop cross-platform, you need to approach it differently. In particular, your UI design should be based on what is available in the framework already. Any other approach leads to madness!
Based on our review, all the frameworks fall into three camps:
- Native Wrappers — This approach encases a web-based application within a native application container. The UI will look like a web app.
- Native User Interface — Looks and behaves the same as an app written with tools native to the platform. The downside is that only a subset of components will be available, those that translate across different OS approaches and work on both mobile and desktop.
- Custom Interface — The framework has its own UI which will be consistent across platforms but not look 100% native.