{"id":47676190,"url":"https://github.com/maximcoding/react-native-bare-starter","last_synced_at":"2026-04-02T13:31:44.696Z","repository":{"id":329459440,"uuid":"1109184675","full_name":"maximcoding/react-native-bare-starter","owner":"maximcoding","description":"Bare React Native starter with TypeScript, feature-first structure, TanStack Query, MMKV, i18n, theming, CI, and offline-ready support.","archived":false,"fork":false,"pushed_at":"2026-03-25T10:37:43.000Z","size":3126,"stargazers_count":6,"open_issues_count":5,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-25T10:42:45.618Z","etag":null,"topics":["bare-react-native","biome","boilerplate-template","feature-first-architecture","i18next","mmkv","offline-ready","react-native","react-native-bare-starter","react-navigation","starter","tanstack-query","zustand"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximcoding.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-03T13:05:31.000Z","updated_at":"2026-03-25T05:06:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maximcoding/react-native-bare-starter","commit_stats":null,"previous_names":["maximcoding/react-native-starter","maximcoding/react-native-bare-starter"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/maximcoding/react-native-bare-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcoding%2Freact-native-bare-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcoding%2Freact-native-bare-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcoding%2Freact-native-bare-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcoding%2Freact-native-bare-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximcoding","download_url":"https://codeload.github.com/maximcoding/react-native-bare-starter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximcoding%2Freact-native-bare-starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bare-react-native","biome","boilerplate-template","feature-first-architecture","i18next","mmkv","offline-ready","react-native","react-native-bare-starter","react-navigation","starter","tanstack-query","zustand"],"created_at":"2026-04-02T13:31:42.157Z","updated_at":"2026-04-02T13:31:44.691Z","avatar_url":"https://github.com/maximcoding.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React Native Bare Starter\n\n[![Use this template](https://img.shields.io/badge/Use%20this%20template-2ea44f?logo=github\u0026logoColor=white)](https://github.com/maximcoding/react-native-starter/generate)\n![CI](https://github.com/maximcoding/react-native-starter/actions/workflows/ci.yml/badge.svg)\n![React Native](https://img.shields.io/badge/React%20Native-0.82.1-61DAFB?logo=react\u0026logoColor=white)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.8-3178C6?logo=typescript\u0026logoColor=white)\n![License](https://img.shields.io/badge/license-MIT-green)\n\nReact native starter project (no Expo) - modern state management, fast storage, and a production-minded foundation.\n\n## ✨ Features Included\n\n- **🧱 Bare React Native 0.82.1** — full native control, (no Expo lock-in)\n- **🧭 React Navigation 7.x** — stacks, tabs, modals, predefined presets and options\n- **📦 TanStack Query 5.x** — Framework agnostic powerful server data fetching library. Caching, updating, retries, invalidation, and persistence.\n- **🪶 Zustand 5.x** — A small 1KB size, fast state management hook-based API. Eliminating boilerplates and prop drilling.\n- **⚡ MMKV Storage 4.3** — `react-native-mmkv` via Nitro Modules, commonly described as up to **30× faster than AsyncStorage**\n- **📡 Offline-ready** — query persistence, queue/replay, cache restore, and transport-level offline mode for a solid experience on flaky networks\n- **🔌 Pluggable transport** — adapters for REST, GraphQL, WebSocket, and Firebase, so you can change backend strategy without rewiring the app\n- **🎨 Theming** — light/dark mode with semantic tokens, ```ThemeProvider``` and ```useTheme()``` hook.\n- **🌍 i18next 25.x** — typed translations with a typed `useT()` hook\n- **🖼️ SVG via script** — `react-native-svg 15.x` with scripted icon generation ```npm run gen:icons```\n- **🚀 BootSplash 6.x** — Shows a splash screen, put your icon into assets/logo.png and execute ```npm run bootsplash:generate```.\n- **🧪 Developer experience** — Biome 2.x, Jest 29.x, GitHub Actions CI, and Maestro E2E\n- **AI / agent workflow docs** — includes `.claude` agents and repo rules for more consistent AI-assisted changes\n\n\u003cdiv align=\"center\"\u003e\n\n[![Demo video](thumbnail.png)](https://github.com/user-attachments/assets/f7e1c02d-bdcd-4ecc-96f8-ad315038b1eb)\n\n\u003c/div\u003e\n\n## 🧭 Project structure\n\nFeature-first structure with clear boundaries.\n\n```text\nsrc/\n├── config/       # Env, constants, feature flags\n├── navigation/   # App navigation, it's persistence and helpers\n├── session/      # App bootstrap and session flow\n├── i18n/         # Localization setup and typed translations\n├── shared/       # Cross-app code used by multiple features\n│   ├── components/\n│   ├── hooks/\n│   ├── services/\n│   ├── stores/   # Global UI state only\n│   ├── theme/    # context, provider , tokens\n│   ├── types/    \n│   └── utils/   \n└── features/     # auth, home, settings, user\n\nassets/\n├── svgs/                # Source SVGs\n├── logo.png             # BootSplash source of truth (`npm run bootsplash:generate`)\n├── bootsplash/          # Splash PNGs + manifest (`npm run bootsplash:generate`)\n└── icons.ts             # Auto-generated icon registry\n```\n\n* **Repository layout** → [docs/development.md#repository-layout](docs/development.md#repository-layout)\n* **Code rules \u0026 ownership** → [AGENTS.md](AGENTS.md)\n\n## 🛠️ Getting started\n\n### Prerequisites\n\nStandard bare react native toolchain:\n\n- Node.js ≥ 20\n- Xcode for iOS\n- Android Studio + SDK for Android\n- CocoaPods for iOS\n\n```bash\ngit clone https://github.com/maximcoding/react-native-starter.git\ncd react-native-starter\nnpm install\nnpx pod-install ios\ncp .env.example .env\n```\n\n**Launcher icon (optional):** `npm run gen:app-icon` is independent from splash generation and uses `assets/app-icon.png`. See [docs/development.md](docs/development.md#assets--guards).\n\nEdit `.env` as needed, then:\n\n```bash\nnpm start       # Metro bundler\nnpm run ios     # or: npm run android\n```\n\n## 🔐 Environment variables\n\nValues are read at build time via `react-native-config`.\nSee [`.env.example`](.env.example). Rebuild the app after changing `.env`.\n\n| Variable                                    | Required     | Purpose                                               |\n| ------------------------------------------- | ------------ | ----------------------------------------------------- |\n| `API_URL`                                   | For real API | Backend base URL                                      |\n| `USE_MOCK_API`                              | No           | `true` / `1` uses the mock transport in dev           |\n| `WS_URL`                                    | No           | WebSocket base URL                                    |\n| `ENV`                                       | No           | Runtime label: `development`, `staging`, `production` |\n| `SENTRY_DSN`                                | No           | Enables Sentry when non-empty                         |\n| `SENTRY_ENABLE_IN_DEV`                      | No           | `1` sends Sentry events from `__DEV__`                |\n| `SENTRY_TRACES_SAMPLE_RATE`                 | No           | Performance sampling value from `0` to `1`            |\n| `CODEPUSH_KEY_IOS` / `CODEPUSH_KEY_ANDROID` | No           | Reserved for OTA; no CodePush SDK ships by default    |\n\nUseful docs:\n\n* [Sentry setup](docs/OPERATIONS.md#sentry)\n* [OTA / updates policy](docs/OPERATIONS.md#over-the-air-updates)\n* [Publishing / discoverability](docs/OPERATIONS.md#publishing--discoverability)\n\n---\n\n## ⌨️ Key Commands\n\n| Command                           | What it does                       |\n| --------------------------------- | ---------------------------------- |\n| `npm start`                       | Start Metro (cache reset)          |\n| `npm run ios` / `npm run android` | Run on simulator or device         |\n| `npm run lint`                    | Biome check (read-only)            |\n| `npm run format`                  | Biome format + safe fixes          |\n| `npm test`                        | Jest                               |\n| `npx tsc --noEmit`                | Typecheck                          |\n| `npm run i18n:all`                | Extract i18n keys + generate types |\n| `npm run gen:icons`               | Regenerate SVG icon registry       |\n| `npm run android:clean`           | Clean Android build artifacts      |\n\nFull command reference: [docs/development.md#key-commands](docs/development.md#key-commands)\n\n---\n\n## 🔐 Permissions (A gift pack)\nList of full existing native permissions for IOS, and Android , declare only what you actually use. Full catalog: [docs/permissions-bare-rn.md](docs/permissions-bare-rn.md)\n\n---\n\n## 📚 Documentation\n\n| Topic                                | Location                                                   |\n| ------------------------------------ | ---------------------------------------------------------- |\n| Rules, structure \u0026 contribution flow | [AGENTS.md](AGENTS.md)                                     |\n| Developer reference                  | [docs/development.md](docs/development.md)                 |\n| Offline behavior                     | [docs/OFFLINE.md](docs/OFFLINE.md)                         |\n| Permissions catalog                  | [docs/permissions-bare-rn.md](docs/permissions-bare-rn.md) |\n| Roadmap                              | [docs/TODO.md](docs/TODO.md)                               |\n| Changelog                            | [CHANGELOG.md](CHANGELOG.md)                               |\n\n---\n\n## 🤝 Contributing\n\nContributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) for branch/PR rules, quality checks, and PR checklist.\n\n---\n\n## 🚢 CI/CD \u0026 Release\n\nGitHub Actions, local release builds, store secrets, Sentry, Maestro, OTA policy, and publishing notes: [docs/OPERATIONS.md](docs/OPERATIONS.md)\n\nVersion history: [CHANGELOG.md](CHANGELOG.md)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximcoding%2Freact-native-bare-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximcoding%2Freact-native-bare-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximcoding%2Freact-native-bare-starter/lists"}