Luna is an open-source React Native and Next.js boilerplate that builds one TypeScript codebase into Android, iOS, and web apps concurrently.
What is Luna?
Luna combines React Native, React Native Web, and Next.js so a single app can target mobile and web without a monorepo. It was created by LunatiqueCoder and released under the MIT License. The author currently marks the project as obsolete, recommending expo-router as a simpler setup achieving the same goal.
Key Features
- Cross-platform output — Run the same code on Android, iOS, and web using React Native for mobile and React Native Web for the browser.
- Next.js integration — The web app is powered by Next.js, with
yarn buildfor production builds andyarn next-startto serve them. - Solito — A navigation and code-sharing layer that unifies React Native and Next.js URLs.
- Tamagui styling — Tamagui provides cross-platform styling that works consistently across native and web.
- TypeScript throughout — The entire template is typed with TypeScript.
- Single-app structure — No monorepo; all shared code lives in one app directory.
- CLI scaffolding — Create a project with
yarn create luna-appand an interactive prompt. - React Native CLI support — Uses the new React Native CLI; the legacy global
react-native-climust be uninstalled.
Who is it for?
- React Native developers planning to also ship a web version of their product without maintaining a separate frontend.
- Indie developers and startups wanting Android, iOS, and web from one TypeScript project with minimal wiring.
- Developers evaluating Solito and Tamagui who want a working reference implementation integrated with Next.js.
- Teams that prefer a single app over a monorepo for cross-platform code sharing.
What can you do with Luna?
- Cross-platform app builders: scaffold a project with
yarn create luna-app, then runyarn startto launch Metro for iOS/Android simulators andyarn webto open the web app atlocalhost:3000. - Web production testers: build the web app with
yarn buildand serve it in production mode withyarn next-startto see the Next.js output. - Learners: read the Luna Wiki to understand the implementation of Solito, Tamagui, and the no-monorepo approach, or inspect the react-native-firebase-authentication-example built on top of Luna.
How does Luna work?
Create a new project by running yarn create luna-app, which asks interactive questions. Then use yarn start to run the Metro bundler for native apps (press i or a for iOS or Android), yarn web for web development with hot reload, and yarn build followed by yarn next-start for a production web server.
Pros and cons
- Pros: Single codebase for three platforms; no monorepo overhead; TypeScript; MIT-licensed; scaffolding via
create-luna-app. - Cons: The author officially labels the template obsolete and suggests expo-router instead; requires the new React Native CLI and a correct native environment setup.
Pricing
Luna is free and open source under the MIT License.
Alternatives
- expo-router — The author explicitly recommends it as a simpler setup that achieves the same cross-platform results.
FAQ
Is Luna free to use?
Yes, Luna is released under the MIT License, so you can use it freely for personal and commercial projects.
Why is Luna marked as obsolete?
The author, LunatiqueCoder, states that expo-router with a simpler setup achieves the same result as this template, so they recommend new projects use expo-router instead of Luna.
What commands does Luna provide?
yarn start starts Metro for native apps; yarn web runs the web app in development; yarn build creates a production Next.js build; and yarn next-start serves that build in production mode.
Does Luna use a monorepo?
No, Luna deliberately keeps everything in a single app, avoiding a monorepo structure.
What is the web development URL?
When running yarn web, the app is served at http://localhost:3000 in your browser.








