wataru-maeda/react-native-boilerplate: Expo SDK 54, Expo Router v6 and Redux Toolkit in one template
Production-ready React Native boilerplate for iOS, Android, and Web with Expo SDK 54, React 19.1, Expo Router v6, Redux Toolkit, TypeScript, and AI-optimized development (Claude/Cursor). Features modern architecture, static web rendering, and automated deployment workflows.
At a glance
- What is it?
- A production-oriented React Native starter for iOS, Android and Web that ships Expo SDK 54, React 19.1, file-based routing and EAS deployment scripts. The value is in the wiring that is already done, and the cost is inheriting decisions you did not make.
- Who is it for?
- Adopt this template if you want Expo SDK 54, Expo Router v6 and Redux Toolkit wired together before you write a line of product code, and if you are comfortable with EAS as the build and deploy path. Skip it if you need a bare React Native project without Expo, or a navigation model that is not file-based.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The setup work this template removes
Starting a React Native project from scratch means assembling a router, a state container, a theme system, environment handling and a build pipeline before any feature exists. This repository packages those choices. The README frames the goal plainly: eliminate setup tasks such as restructuring files, installing libraries and writing reusable components.
The intended user is a developer or small team that has already decided on Expo and wants a working skeleton across three platforms. The package.json sets main to expo-router/entry, so routing is not optional here; it is the entry point. The scripts cover dev, iOS, Android, Web, linting, formatting, tests and EAS builds.
It is a template, not a library. You copy it, then own every file. That distinction matters more than any feature list, because nothing upstream will fix your fork.
How the routing, state and theme layers fit together
Expo Router v6 drives navigation from the filesystem. The README shows the pre-configured shape as a root drawer with a Home tab and a Profile tab, each holding a stack with a screen and a details screen. Adding a screen means adding a file, not registering a route object.
Redux Toolkit handles global state. The README directs you to the slices directory for existing slices and to app/_layout.tsx for usage, and it states that Redux logger is enabled by default, disabled by removing the logger from utils/store.ts. That default is a deliberate development convenience with a production cost you have to remember to undo.
Theming is centralized in a theme directory covering images, icons, fonts and colors, with a custom useColorScheme hook in hooks/useColorScheme.ts that returns the scheme name plus isDark and isLight flags. Asset preloading and SVG support are described as built in. The hook is the seam between platform detection and your conditional styles, so most theme work routes through one file.
Installing it and running a first screen
The README gives two paths: download the zip or use the template button on GitHub. Node 20.x or higher is required, along with Expo CLI and EAS CLI for builds and deployment. After obtaining the code, install dependencies and start the dev server.
npm install
npm run devThe dev script is not a bare expo start. It runs EXPO_NO_DOTENV=1 dotenvx run -f .env.dev -- expo start -c, so it reads .env.dev through dotenvx and clears the Metro cache. If .env.dev does not exist, the script has nothing to load. Rename the example file first.
cp .env.dev.example .env.devThen set owner in app.json to your Expo username and fill EXPO_SLUG and EXPO_PROJECT_ID in .env.dev, as the README instructs. To check what actually loaded, the README offers a console view of the public config.
npm run dev:config:publicFor a first screen, copy slices/app.slice.ts, rename it, and register it in utils/store.ts as the README describes. Platform-specific starts are available as npm run dev:ios, npm run dev:android and npm run dev:web.
Environment variables and the EAS secrets trade-off
This is the most opinionated part of the template and the one worth reading twice. The project uses dotenvx for both Expo CLI and EAS CLI builds, with .env.dev.example and .env.prod.example as templates and configuration split across app.config.ts and utils/config.ts.
The README states the project intentionally avoids the EXPO_PUBLIC_ prefix and instead uploads variables to EAS as secrets, accessible during build and submit. A script performs the upload: npm run dev:secret:push, which runs eas secret:push --scope project --env-file .env.dev --force.
The consequence is a real constraint. Values are not readable in the client bundle by default, which is the security intent, but it also means you cannot casually inspect them at runtime. The README acknowledges the alternative approach of direct process.env access, which is the standard Expo route. Choosing this template means choosing the secrets path unless you rewire it. Note that dev:build:mobile calls eas build with --profile development, while the secret push uses --scope project; the README does not document rollback if a push overwrites a value you needed.
Where this template gets in your way
The Redux logger is on by default. In a development build that is useful noise; in a release build it is something you must remember to strip, and the README's instruction is a manual edit to utils/store.ts.
File-based routing is a commitment. If your team prefers explicit navigator configuration, or needs navigation patterns that do not map cleanly onto files, you are fighting the entry point rather than using it. The package.json main field points at expo-router/entry, so opting out is not a small change.
Three platforms means three sets of edge cases. The README advertises iOS, Android and Web distribution, with static web rendering mentioned in the project description, but a template cannot pre-solve platform-specific layout or API gaps. Expect to spend time on the Web target specifically.
The README also does not document rollback for secret pushes, and it does not describe an upgrade path between major template versions. Release history shows v3.0.0, v4.0.0 and v5.0.0 as separate jumps tied to Expo SDK changes, so moving from one to the next is a migration, not a dependency bump.
How it differs from Ignite and other React Native starters
People searching for a React Native boilerplate usually end up comparing this against Ignite and against other GitHub templates in the same space. The difference is structural rather than cosmetic.
Ignite centers on its own CLI and generator workflow, scaffolding screens and components through commands. This repository is a copy-and-own template: you take the tree and edit it. There is no generator to keep you aligned with upstream conventions.
On navigation, this template is built around Expo Router v6 and file-based routing. Starters built on React Navigation directly require you to declare navigators and screens in code. Both work; the maintenance burden lands in different places. Expo Router keeps route structure visible in the directory tree, while explicit navigators keep it visible in one config file.
State management is another split. Redux Toolkit is included and pre-wired here. A lighter starter may ship with no state library or with React Context, leaving that decision to you. If your app is small, Redux Toolkit is more machinery than you need; if it is large and team-maintained, having slices, a store and hooks already connected saves a day of decisions.
Licence, maintenance and the cost of upgrading
The repository is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That is a permissive baseline, but it applies to this template only. The dependencies it pulls in carry their own licences, and the README does not enumerate them. Check package.json and each package's licence before shipping; this is a factual note, not legal advice.
On maintenance, the last push was on 2026-09-13, and v5.0.0 was released on 2025-09-14 with the label Expo SDK 54 with Enhanced Performance. The repository is not archived. Version history shows roughly one major release per Expo SDK cycle, which tells you the upgrade cadence is tied to Expo, not to a fixed schedule.
That cadence is the real upgrade cost. Each major version appears to align with a new Expo SDK, and Expo SDK upgrades routinely require dependency and configuration changes. Because this is a template rather than a dependency, you do not receive those changes automatically. You either port your code onto the new template or upgrade Expo yourself and reconcile the differences. Budget for that before adopting.
Editorial conclusion
Adopt this template if you want Expo SDK 54, Expo Router v6 and Redux Toolkit wired together before you write a line of product code, and if you are comfortable with EAS as the build and deploy path. Skip it if you need a bare React Native project without Expo, or a navigation model that is not file-based. Before committing, verify the Expo account setup the README asks for: rename .env.dev.example to .env.dev, set owner in app.json, and confirm EXPO_SLUG and EXPO_PROJECT_ID resolve, then run npm run dev:config:public to see which variables actually loaded.
Frequently asked questions
What is boilerplate in React?
It is the reusable starting structure you copy before writing features, so the same configuration work is not repeated on every new app. In this repository that structure includes routing, state management, theming, environment variables and CI workflows.
What is React Native exactly?
React Native is the framework this template targets, and the README lists React Native 0.81.4 alongside Expo SDK 54 and React 19.1. The project ships a single codebase for iOS, Android and Web.
What is boilerplate in simple terms?
It is the pre-written skeleton of a project: files, configuration and common components that are already in place so you start from a working app. Here the README describes it as eliminating setup tasks like restructuring files, installing libraries and crafting reusable components.
What does boilerplate mean in coding?
In coding, boilerplate is code you need in almost every project but that carries no product logic of its own. This repository's boilerplate is the Expo Router structure, the Redux Toolkit store, the theme directory and the EAS build scripts.
What is react native boilerplate?
It is a starter template for React Native apps. This one is built on Expo SDK 54 with Expo Router v6 and Redux Toolkit, and the README says it is intended to remove redundant setup work when starting from scratch.
Community notes