Last updated: 2024-10-25 - also published to dev.to What are the general technology choices when building an app that should run on both mobile and web/desktop? Let's list them and detail some important factors and gotchas with each approach. You cou...
magnemg.eu25 min read
Recent honorable mention:
Crux - "Cross-platform app development in Rust" - github.com/redbadger/crux
Why? - From the repo:
Shared Core for Behavior - Crux helps you share your app's business logic and behavior across mobile (iOS/Android) and web — as a single reusable core built with Rust.
Thin Shell for UI - Crux recognizes that the best experiences are built with modern declarative frameworks such as SwiftUI, Jetpack Compose, React/Vue, or a WebAssembly based framework (like Yew) — however, it aims to keep this UI layer as thin as it can be, with all other work done by the shared core.
With the arrival of WASM GC, recently announced by Google, then Kotlin Multiplatform + Jetpack Compose has surfaced as a potential option for cross-platform apps. See more here:
2 other honorable mentions:
Quasar for Vue.js. "One source code for all platforms simultaneously with all the latest and greatest best practices out of the box."
CodenameOne - "Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web."
Honorable mention:
Hyperview - Lets you use Server-Driven UI Rendering of a native app, via rendering server-generated XML. Could be used with Rails, Django or any HTTP server on the back-end etc.
"Hyperview is our open-source project to bring the benefits of thin-client, HATEOAS development to native mobile apps. The project consists of two parts:
Hyperview XML (HXML) is an XML-based format to describe native mobile UIs. It supports common UI elements like headers, scroll views, lists, text field, and much more. It also supports styling and a behavior syntax for describing user interactions (touches, gestures, input interaction) without the need for scripting.
Hyperview Client is a cross-platform library for rendering HXML in mobile apps. Implemented in React Native, it can be embedded in existing apps, or you can use it to create a new app from scratch."
I'd like to mention a new exciting option (for a crossplatform app) that I recently came across, that AngelRs github.com/angel-rs is working on:
11. Qwik (City) + React Native, using shared qwikified React components. An especially promising alternative for those that care greatly about performance and SSR/SEO on Web.
Quote from AngelRs on 2022-09-23 from the #qwik-help-archive channel on the Builder.io Discord:
Some progress on Qwik + React Native:
Simple demo showcasing shared component & navigation logic drive.google.com/file/d/1Gf2z1Mw_1otVYFi1wz5D-4vH… Shared component between React Native Mobile App (Expo) & a Qwik (Qwik City) web app.
Styles: Qwik: Tailwind RN: Nativewind
Navigation: Qwik:
<a>tags RN:<Link>component (abstraction on top of react-navigation)Pending:
- Animations
- Better configuration (Currently needs vite config setup to patch some dependencies & a metro config for RN)
- Use in real applicatino (dogfooding)
- Monorepo setup
- web (qwik-city app)
- native (expo app)
- design-system (shared)
- Open source
Not a priority right now, but making slow progress towards it. Currently mantaining a simple qwik city app & a react-native app. So really excited to 'merge' the two.
J
I thought this was great and come back to it every now and then! do you have any updates, or similar articles/sources to recommend now, in late 2025?