[Feature Request] Explore feasibility for building Expo / React Native iOS apps on Linux
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
Línea de trabajo
Start by reading xtool’s SwiftPM build and Darwin SDK toolchain documentation or entry points; the issue names no specific files or tests. Assess whether its current pipeline can accommodate React Native’s CocoaPods, CMake, C++, and Objective-C dependencies alongside Expo’s iOS workflow. Done means documenting feasibility, architectural blockers, and a viable starting approach; this is exploratory design work.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature Description
Explore the feasibility of using xtool to compile and deploy Expo / React Native iOS projects directly from Linux (and WSL).
Background & Motivation
xtool provides an incredible workflow for compiling SwiftPM-based iOS applications on Linux without full Xcode. Meanwhile, Expo / React Native is the most widely adopted cross-platform framework in the JavaScript/TypeScript ecosystem.
Currently, building an Expo iOS application requires either physical Apple hardware or paid macOS runners in cloud CI/CD environments (e.g., EAS Build, GitHub Actions macOS runners). Being able to leverage xtool to produce iOS binaries for Expo apps on Linux would be a monumental milestone for cross-platform development.
Key Advantages of Supporting Expo / React Native
-
True Cross-Platform Native Mobile Development on Linux:
- Linux and WSL developers could build, sign, and install real iOS development builds onto physical iPhones connected via USB (
xtool dev) without ever needing a Mac. - Unlike hybrid/webview wrappers (e.g. WKWebView / Capacitor), this delivers 100% native UI performance running React Native's New Architecture (Fabric, TurboModules, Hermes).
- Linux and WSL developers could build, sign, and install real iOS development builds onto physical iPhones connected via USB (
-
Massive Cost and Time Reduction in CI/CD:
- Cloud macOS runners are significantly more expensive and often suffer from long queue times compared to Linux runners.
- Enabling standard Linux CI workers (Docker containers, GitHub Actions Linux runners, self-hosted Linux nodes) to build iOS test builds would drastically cut infrastructure costs for individuals and enterprise teams.
-
Bridging the Local Development Loop (Fast Refresh):
- Developers could pair a locally running Expo Metro bundler on Linux with a native iOS client built via
xtool, unlocking hot reloading and rapid UI iteration for non-macOS users.
- Developers could pair a locally running Expo Metro bundler on Linux with a native iOS client built via
-
Massive Community & Ecosystem Expansion for
xtool:- The React Native and Expo communities comprise hundreds of thousands of developers. Adding support for this workflow would establish
xtoolas an essential, industry-standard toolchain across the broader web and mobile engineering landscape.
- The React Native and Expo communities comprise hundreds of thousands of developers. Adding support for this workflow would establish
Technical Challenges & Considerations
We recognize that compiling React Native for iOS is significantly more complex than standard SwiftPM packages:
- Mixed-Language Pipeline: React Native heavily relies on C++, Objective-C, and Swift (Hermes JS engine, React Common, Folly/glog, TurboModules).
- Dependency & Build Systems: Historically, React Native iOS uses CocoaPods and CMake / Xcode build phases (
.xcworkspace), whereasxtoolfocuses on SwiftPM and the Darwin SDK toolchain. - SwiftPM in React Native: The React Native community is actively exploring SwiftPM integrations to modernize iOS builds.
Questions for Maintainers
- Is supporting mixed C++/Objective-C build targets or bridging into React Native’s prebuild artifact pipeline on your long-term roadmap?
- How does the team envision
xtoolhandling external non-SwiftPM build systems (or could an experimental SwiftPM-based React Native template be a viable starting point)? - Are there architectural blockers in
xtool's current Darwin SDK extraction/toolchain that would make compiling C++/Hermes on Linux prohibitive?
Thank you for your fantastic work on xtool!
- Lenguaje dominante
- Swift
- Estrellas
- 5.5k
- Forks
- 163
- Merge medio
- 19 h 33 min
- PR fusionados (30 d)
- 25
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de xtool-org/xtool
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
Error: exited(127)Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
xtool-org/xtool#365 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
xtool-org/xtool#359 · 3 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 1 día
Todos los issues de xtool-org/xtool
Issues similares
-
product / auth product / databases product / functions product / messaging product / storage product / vcs
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
storage: eliminate force-unwraps and fatalError in continueStreamingUploadPosiblemente ocupada @chingor13 la tomó hoy. Abiertoapi: storage type: cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
googleapis/google-cloud-swift#1527 ·
Los mantenedores suelen responder en 1 día
-
ci-failure ci:assertion test
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openwatersio/slackwater-ios#811 ·
Los mantenedores suelen responder en 1 día
-
ai-assisted
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
swiftlang/swift-testing#1979 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
foxglove/mcap#1907 · 1 comentario ·
Los mantenedores suelen responder en 1 día