11 open source tools compared. Sorted by stars. Scroll down for our analysis.
By Erik Loyd, SaaS CEO and former COO/CFO of an AWS Premier Partner.
| Tool | Stars | Velocity | Score |
|---|---|---|---|
Expo Platform for universal React apps | 52.4k | +132/wk | 91 |
lynx Empower the Web community and invite more to build across platforms. | 15.1k | - | 86 |
web-to-app The most full featured web-to-app toolkit on Android, a complete APK workshop that runs entirely on your phone | 6.5k | +94/wk | 78 |
androidx Development environment for Android Jetpack extension libraries under the androidx namespace. Synchronized with Android Jetpack's primary development branch on AOSP. | 6.1k | +6/wk | 84 |
agent-device Mobile app automation and verification for AI coding agents. CLI, MCP server, and typed Node.js API for iOS, Android, HarmonyOS, TV, web, macOS, and Linux. | 4.8k | +128/wk | 80 |
serve-sim The `npx serve` of Apple Simulators. | 2.8k | +16/wk | 74 |
LicensePlist A license list generator of all your dependencies for iOS applications | 2.5k | - | 72 |
baguette Headless iOS Simulator manager/farm + host-side input injection for iOS 26: taps, swipes, multi-finger gestures, and 60 fps streaming | 2.1k | +244/wk | 74 |
| 1.9k | +2/wk | 65 | |
app-store-preflight-skills AI agent skill to scan iOS/macOS projects for App Store rejection patterns before submission | 1.4k | +2/wk | 57 |
| 1.3k | +5/wk | 72 |
Stay ahead of the category
New tools and momentum shifts, every Wednesday.
Expo is the layer that makes React Native tolerable. The SDK hands you camera, notifications, filesystem, and a hundred other native modules without ever opening Xcode, and the framework itself is MIT licensed and completely free. What costs money is EAS, the cloud service that builds, submits, updates, and monitors the app. You can skip EAS entirely. Local builds are free forever if you have a Mac with Xcode and the Android SDK installed, and plenty of teams run exactly that way. The tradeoff is that you own the toolchain: signing certificates, provisioning profiles, SDK version drift, and whatever machine runs the builds. EAS exists because that is genuinely annoying, not because Expo gates the framework behind it. EAS free gives you 15 iOS and 15 Android builds a month. Starter is $19/mo with $45 of credit, Production is $199/mo with $225 of credit, and past the credit you pay per build: $1 for a medium Android build, $4 for a large iOS one. Over-the-air updates bill by monthly active users, 3,000 on Starter and 50,000 on Production. Solo developers live on the free tier. Small teams shipping weekly land on Starter. Production is for teams building on every pull request. The catch is that this pricing moves. Build allowances, credit amounts, and tier names have all been revised, so check expo.dev before you put any of it in a budget, including the numbers here. The framework stays free. The cloud bill is the part that surprises people.
Lynx lets you write native mobile and web UIs using CSS and React-like syntax from a single codebase. It renders natively on Android, iOS, and web, with a multithreaded engine designed for fast startup and smooth interaction. Think React Native's promise, built from the ground up with web developers in mind. Setup requires macOS for the best experience (Windows and Linux are not yet verified). You will need platform SDKs for Android and iOS builds, plus their Lynx Explorer app for testing. The toolchain is still young, so expect some rough edges in the build pipeline. Completely free under Apache 2.0. No paid tier, no commercial version. Solo devs and small teams who already know CSS and React can start building immediately. Larger teams should evaluate carefully since the ecosystem is still maturing. The catch: this is early-stage. The community and plugin ecosystem are tiny compared to React Native or Flutter. If you need production stability and a deep library of third-party components, those established frameworks are still the safer bet.
web-to-app builds Android APKs on the phone itself. Point it at a website, a folder of HTML, or a WordPress install and it patches the binary manifest, prunes permissions, signs with V1, V2, and V3 schemes, and hands back an installable APK or a Play-ready AAB. No PC, no Android Studio, no cloud build server. Released under the Unlicense, which is about as free as a license gets. It goes well past wrapping a WebView. It can fork and exec real server runtimes on device: Node 18.20, PHP 8.4 with Composer, Python 3.14, Go 1.26, and WordPress over SQLite, all running as native processes out of app storage. Keystore management covers PKCS12, PFX, and JKS. GeckoView is available as an alternate engine, and it loads Tampermonkey userscripts and MV3 Chrome extensions. Android 6.0 and up, with releases landing about weekly. Use it for prototypes, kiosk apps, internal tools, and getting a site onto someone's phone without a build pipeline. Solo builders: a real shortcut, and free. Teams shipping to the Play Store still want Capacitor or expo/expo for CI, code review, and reproducible builds. tauri-apps/tauri is the answer if one codebase has to cover mobile and desktop. The catch: the networking feature list reads like an evasion toolkit. TLS fingerprint spoofing through a local proxy bridge, Encrypted Client Hello, CORS bypass, and device disguise, which the project itself flags as demonstration-only and consent-gated. A repackaged-website APK is already what Play review teams look for. Sideload freely, read the store policy before you submit.
AndroidX is the foundation under almost everything you build on Android. AndroidX is Google's official library collection for Android development. It provides backwards-compatible versions of Android platform APIs so your app works on older devices without you writing compatibility code yourself. It's the standard library that Android should have shipped with. This repo is the development source for Jetpack libraries: RecyclerView, Room (database), Navigation, Compose (UI toolkit), WorkManager (background tasks), CameraX, and dozens more. If you've used any modern Android API, it probably came from here. Apache 2.0. The star count is low because most Android developers consume these as Gradle dependencies; they don't star the monorepo. The actual usage is in the millions of apps. Everything is free. Google maintains this as part of the Android platform. No paid tier, no premium features, no enterprise edition. The catch: this is a monorepo, not a standalone tool. You don't clone this unless you're contributing to Android itself. As a developer, you pull individual libraries via Gradle. And Google's deprecation cycle is aggressive; APIs get marked deprecated fast, and migration guides aren't always clear.
agent-device gives a coding agent a live app to poke at. It drives iOS, Android, and HarmonyOS across simulators, emulators, and physical hardware, plus tvOS, Android TV, web, macOS, and Linux, through a CLI, a built-in MCP server, or a typed Node.js API. MIT, from Callstack, the consultancy behind a lot of the React Native ecosystem. The design choice that matters is the accessibility tree. Rather than feeding an agent screenshots and hoping it reasons over pixels, agent-device hands it a text snapshot with element refs, so the agent presses the element it was handed, at-e2, instead of guessing at coordinates. Cheaper in tokens and far more reliable. Install is a global npm install on Node.js 22.12 or newer, and the bundled doctor command checks your setup before you hand the keys to an agent. It also arbitrates device ownership across parallel agent worktrees, which is the problem you hit the moment two agents want the same simulator. Solo devs and small mobile teams get value immediately, and it plugs into Claude Code, Codex, Cursor, Windsurf, Cline, and Goose with no custom work. Bigger teams can point the same commands at BrowserStack, AWS Device Farm, or Limrun instead of local hardware. Free at every size. The catch is that this is glue, not a device farm. It drives hardware you already own or a cloud you already pay for, so iOS still wants a Mac with Xcode and the cloud path still wants a cloud bill. Your app also has to be accessible: snapshots come from the accessibility tree, so if labels, roles, and test IDs are a mess, the agent is back to squinting at screenshots.
serve-sim streams an iOS Simulator to a browser. You get the framebuffer, gestures, keyboard input, and logs over the network or piped to AI coding tools like Cursor or Claude Desktop. Built by Evan Bacon (Expo). Apache-2.0. Run npx serve-sim and you have a preview server on localhost:3200. Multiple booted simulators work in parallel, daemon mode runs it in the background, and there is middleware for embedding it inside your existing dev server. Solo: easy way to share what you are building with a teammate over Tailscale. Small teams testing iOS apps: stream the simulator to AI agents for visual feedback during development. Teams building infra: this is the foundation if you want to host simulators centrally instead of tying every test session to one engineer's laptop. The catch is macOS. Apple's simulator only runs on Apple hardware, so this serves what you have, it does not conjure a simulator on Linux.
LicensePlist solves a boring but mandatory iOS chore: showing the open source licenses your app depends on. Apple expects you to credit the libraries you bundle, and doing it by hand is tedious and error-prone. This command-line tool scans your CocoaPods, Carthage, and Swift Package Manager dependencies, then generates the Settings bundle that displays every license inside your app's settings screen. Free and MIT licensed. Setup is trivial. Install through Homebrew, CocoaPods, Mint, or Swift Package Manager, run license-plist in your project, and drop the generated folder into your Settings bundle. It caches results and skips work when nothing changed, so it runs in well under a second. Wire it into a build phase or CI and you can forget it exists, which is exactly what you want from a compliance tool. Anyone shipping an iOS app with third-party dependencies should use this. There is no team-size calculus and no paywall: it is free at every scale. The only reason to skip it is if you have zero dependencies, which almost no real app does. The catch is scope. This is iOS only and it only handles license attribution. It will not audit licenses for legal risk or flag a GPL library sneaking into your closed-source app. It lists what you use; deciding whether you should use it is still on you.
Baguette is a Swift CLI that spins up iOS Simulator devices, streams their screens at 60fps, and injects taps, swipes, and multi-finger gestures without booting the Simulator GUI. Run it on your Mac and you get a headless device farm and an automation harness in one tool. Apache 2.0, requires macOS 15+ and Xcode 26. The hard parts (host-HID input, accessibility tree extraction, frame streaming over MJPEG or H.264) are handled through SimulatorKit and the private accessibility framework, no dylib injection or DYLD_INSERT_LIBRARIES hacks. A web UI runs on localhost:8421 with per-simulator streams and a multi-device farm view. The CLI exposes everything for CI use. Solo iOS developers: free, fast, and the gesture API is more useful than waiting for Simulator.app to boot. Small teams running iOS CI: a real device farm replacement that skips Linux-hosted runners or a third-party cloud. Mid-sized to large teams: useful for screenshot generation, regression sweeps, and integration testing across many simulator configurations. Cloud device farms still win on real hardware coverage. The catch: it relies on private Apple frameworks and Xcode 26 internals. Apple changes those across major releases, so expect breakage when Xcode 27 ships.
Codename One compiles Java or Kotlin into native mobile binaries for iOS and Android from a single codebase, without learning Swift or platform-specific languages. Not a webview wrapper. Actual native compilation. Write once in Java/Kotlin, build to iOS (via ParparVM or iKVM), Android (native), web (via JavaScript transpilation), and desktop. The UI toolkit is custom, not native widgets, but rendered to look native. Includes a visual designer, simulator, and build cloud. The free tier lets you build and test locally. The build cloud, which compiles your iOS builds without needing a Mac, starts at $19/month (Basic). Professional is $99/month with additional features. Enterprise pricing available. Solo developers learning Java who want mobile: the free tier gets you started, but you'll need the $19/month plan for iOS builds unless you have a Mac with Xcode. Small teams: $99/month Professional for the full toolchain. Larger teams: evaluate against Flutter or React Native first. The catch: the community is small for a cross-platform framework. StackOverflow answers are sparse, and if the company behind it stops, you're stuck with a niche framework and no ecosystem. Flutter and React Native have massive communities. Codename One's Java angle is its differentiator, but it's also its limitation. The mobile world moved to Dart and JavaScript/TypeScript.
This skill scans your project for common App Store rejection patterns before you submit. It's a pre-flight checklist that catches the stuff Apple will flag so you don't waste a week waiting for a rejection email. It checks for missing privacy descriptions, incorrect entitlements, deprecated API usage, and dozens of other patterns that trip up developers. You run it as a Claude Code skill. Point it at your Xcode project and it tells you what's going to get flagged, still early . MIT licensed, completely free. The catch: Apple's review guidelines change constantly, and this is a community-maintained skill, not an Apple product. It catches the known patterns, but Apple can always find new reasons to reject you. And it's a static analysis. It can't test runtime behavior or UI guidelines that require human judgment.
Fabulous lets you build cross-platform mobile apps using F# with a functional programming approach. If you're an F# developer (or want to be) and need to ship iOS and Android apps, this is your path. It sits on top of .NET MAUI and gives you a declarative, Elm-style architecture. The pitch: instead of the imperative, state-mutating approach of most mobile frameworks, you describe your UI as a function of your state. State changes, UI re-renders. If you've used React or Elm, the mental model is the same. Small community but dedicated. F# is a niche language and Fabulous serves that niche well. Completely free under Apache-2.0. No paid tier, no cloud service. You need a .NET development environment and the platform SDKs (Xcode for iOS, Android SDK). The catch: F# is niche. Finding F# mobile developers is hard. The ecosystem is small. Fewer libraries, fewer Stack Overflow answers, fewer tutorials compared to React Native, Flutter, or even Kotlin Multiplatform. If you're not already committed to F# and .NET, there's little reason to choose this over more popular options. But if you ARE an F# shop, this is the only real option and it's good at what it does.