Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Test 🧪

on:
push:
branches: [master]
pull_request:
branches: [master]

jobs:
test:
name: Run tests 🃏
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.6
- name: Install dependencies
run: bun install
- name: Type check
run: bun tsc --noEmit
- name: Lint
run: bun check
4 changes: 3 additions & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
bun check --staged --no-errors-on-unmatched
bun knip
bun biome check --write --staged --no-errors-on-unmatched
bun tsc --noEmit
68 changes: 55 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,77 @@
# ⚛️ React Native Template

This is a [React Native](https://reactnative.dev) application powered by [Expo](https://expo.dev).

## Get Started
This is a template repository for a cross-platform mobile application powered by [React Native](https://reactnative.dev) and [Expo](https://expo.dev).

## Features

- 🚀 **Modern Stack**: Built with [Expo](https://expo.dev), [React Native](https://reactnative.dev), and TypeScript for cross-platform mobile development
- 📱 **Cross-Platform**: iOS, Android, and Web support from a single codebase
- 🧭 **File-Based Routing**: [Expo Router](https://docs.expo.dev/router/introduction) for intuitive navigation
- 🎨 **UI/UX**:
- [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated) for smooth animations
- [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler) for native touch handling
- [React Native Screens](https://github.com/software-mansion/react-native-screens) for native navigation primitives
- [Safe Area Context](https://github.com/th3rdwave/react-native-safe-area-context) for device-safe layouts
- 🔄 **Over-the-Air Updates**: [Expo Updates](https://docs.expo.dev/versions/latest/sdk/updates) for instant deployments
- 🎬 **Splash Screen**: [Expo Splash Screen](https://docs.expo.dev/versions/latest/sdk/splash-screen) for polished app startup
- 🛠️ **Developer Experience**:
- Hot reloading during development
- Code quality with [Biome](https://biomejs.dev) for linting and formatting
- Git hooks with [Husky](https://typicode.github.io/husky)
- TypeScript strict mode with comprehensive type safety
- [Knip](https://knip.dev) for unused dependency detection
- Easy spin up with [Tilt](https://tilt.dev)
- 🚢 **Production Ready**:
- Managed and bare workflow support
- [Expo Prebuild](https://docs.expo.dev/workflow/continuous-native-generation) for native project generation
- EAS Build and Submit for app store deployment

## Local Development

Use [Tilt](https://tilt.dev) for a unified development experience:

```bash
```sh
tilt up
```

If you don't want to use Tilt, follow these steps:
Or run manually:

### Installation

```sh
bun install
```

### Running

First, install dependencies with `bun install`.
```sh
bun start
```

Follow the instructions in the output to open the app on your device or emulator.

Then, start the app with `bun start` and follow the instructions in the output.
### Platform-Specific

Alternatively, you can start directly on a per-platform basis with `bun android`, `bun ios`, or `bun web`.
```sh
bun android # Start on Android
bun ios # Start on iOS
bun web # Start on Web
```

In the output, you'll find options to open the app in a
### Development Options

- [development build](https://docs.expo.dev/develop/development-builds/introduction)
In the output, you'll find options to open the app in a:

- [Development build](https://docs.expo.dev/develop/development-builds/introduction)
- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator)
- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator)
- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo

## Bare Workflow

If you want full native control over your project (sometimes known as a "bare" React Native project), you can use [Expo Prebuild](https://docs.expo.dev/workflow/continuous-native-generation/#usage):
If you want full native control over your project, you can use [Expo Prebuild](https://docs.expo.dev/workflow/continuous-native-generation):

```
```sh
bun expo prebuild
bun expo run:android
bun expo run:ios
Expand All @@ -41,4 +83,4 @@ bun expo run:ios

## License

The code in this repository is licensed under MIT, © Omni LLC. See [LICENSE.md](LICENSE.md) for more information.
The code in this repository is licensed under MIT, © [Omni LLC](https://omni.dev). See [LICENSE.md](LICENSE.md) for more information.
7 changes: 4 additions & 3 deletions Tiltfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# load environment variables
load("ext://dotenv", "dotenv")
dotenv(fn=".env.local")
v1alpha1.extension_repo(name='omni', url='https://github.com/omnidotdev/tilt-extensions')
v1alpha1.extension(name='dotenv_values', repo_name='omni', repo_path='dotenv_values')
load('ext://dotenv_values', 'dotenv_values')

env_local = dotenv_values(".env.local")
project_name = "template-react-native"

local_resource(
Expand Down
2 changes: 1 addition & 1 deletion biome.jsonc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// see https://biomejs.dev/reference/configuration
{
"$schema": "https://biomejs.dev/schemas/2.3.5/schema.json",
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
"assist": {
"actions": {
"source": {
Expand Down
Loading