Skip to content

FAQ

No. Development builds use a mock backend inside the app, with a demo account (demo@example.com / password123). When your API is ready, set API_URL and API_MOCKS=false in the environment’s .env file. The mock handlers in src/mocks show every request the app makes. See Use your API.

Do I need Firebase, or an Apple or Google account?

Section titled “Do I need Firebase, or an Apple or Google account?”

Not to build and run the app. Without Firebase, crash reports and analytics go to the console, feature flags use their defaults and notifications stay local. You need an Apple Developer team to put the iOS app on a phone with push or web links, and store accounts to publish. Going live lists each step.

Which platforms and versions are supported?

Section titled “Which platforms and versions are supported?”

iOS 15.1 and later, and Android 7.0 (API 24) and later, on React Native 0.87 with the New Architecture only. There’s no web target. Version matrix lists every library version.

Only to create the app: the React Native CLI downloads the template from npm. After that, install and run everything with pnpm. The supply-chain policy (packages younger than 3 days are refused, install scripts need approval) and the lockfile are pnpm’s. Run corepack enable and the pinned pnpm version is used. Decision 0003 explains why.

Run pnpm strip-examples once, before you build your own screens. It removes the feed, its sample data and the component showroom, and leaves a blank Home tab. Sign-in, onboarding and settings stay.

Use the generators: pnpm gen feature, pnpm gen screen and pnpm gen endpoint. They write code that follows the project’s rules and passes its checks. See Generators.

Data from the server belongs to TanStack Query, which caches it and saves it on the device. Zustand holds only small client state, such as the session and preferences. Screens never call the HTTP client directly; they use their feature’s hooks. See Architecture.

With Unistyles 3 and the theme’s roles (theme.colors.text, theme.spacing.md), never raw colours. Light and dark themes switch without re-rendering. See Styling.

Add a locale file next to en.json and ar.json in src/shared/i18n/locales, import it in src/shared/i18n/index.ts, and add it to LANGUAGES there with its text direction. Layouts use start and end rather than left and right, so right-to-left languages mirror correctly. If the language needs relative dates, add its locale to src/shared/lib/format.ts; a test fails if you forget.

The app code in src/ reaches native libraries only through small interfaces in src/shared/ports, and every native change is listed with its Expo equivalent in Native changes. Moving to Expo’s prebuild means following that list.

There’s an interface for them, but no provider is wired in. Add one, such as hot-updater, behind src/shared/ports.

Not yet. Unit and component tests run with Jest and React Native Testing Library against the mock backend; there are no device-level end-to-end flows.

With fastlane: bundle exec fastlane bump sets the version, and the build and beta lanes build and upload to TestFlight and Google Play internal testing. Building needs no accounts. See Releasing.

How do I get template updates into my app?

Section titled “How do I get template updates into my app?”

Your app owns its copy of the code, so nothing updates on its own. Each new version of the template is published to npm and listed in the changelog and the GitHub releases. Copy the changes you want.

Which version of the template should I use?

Section titled “Which version of the template should I use?”

The latest, which --template bareship picks for you. To start from an earlier one, name it: --template bareship@0.1.0.

What does it cost, and what’s the license?

Section titled “What does it cost, and what’s the license?”

Nothing. It’s open source under the MIT license. Apps you make from it carry the template’s notice in TEMPLATE-LICENSE; your own code is yours to license.