Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
4e41f7a
Update faq.md
gianpaj Oct 11, 2024
51747ca
fix: fix typos on readme
yjose Oct 15, 2024
da07ae3
Fix:  ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL  Command "prebuild:developme…
mrpmohiburrahman Oct 17, 2024
e2cbd3c
Fix: Android gradle plugin issue with java version
mrpmohiburrahman Oct 17, 2024
632714f
fix: fix expo doctor warning
yjose Oct 17, 2024
00474ed
6.3.4
github-actions[bot] Oct 17, 2024
4e60c5d
feat(docs): add reviews section to the home page
yjose Oct 20, 2024
34160f5
feat(docs): add work with us link to home page
yjose Oct 20, 2024
4936b0b
Compress Images
yjose Oct 21, 2024
52e55e6
fix(docs): update command to install sentry
yjose Oct 23, 2024
457a73c
feat: update to the latest nativewind version
yjose Oct 25, 2024
f4efd41
feat: add missed routes
yjose Oct 25, 2024
40ca639
fix: fix project version
yjose Oct 25, 2024
d0d4a4a
6.4.0
github-actions[bot] Oct 25, 2024
4ce74dc
chore: update app-icon-badge to last version
yjose Oct 28, 2024
2960911
6.4.1
github-actions[bot] Oct 28, 2024
e557122
fix typos
yjose Nov 10, 2024
ce2b792
chore: fix husky
Gaulepal Nov 9, 2024
17db9cd
chore: migrate config to husky v9 to remove warning
yjose Nov 11, 2024
fe17136
refactor: updates core folder to lib
yjose Nov 11, 2024
f113fa0
refactor: update ui folder to components/ui
yjose Nov 11, 2024
95b4460
refactor: update to use the new ui folder
yjose Nov 11, 2024
4419521
fix: fix new ui path
yjose Nov 11, 2024
c1c49e2
fix: fix tailwind class order warnings
yjose Nov 11, 2024
e05c710
6.5.0
github-actions[bot] Nov 12, 2024
a794a72
chore: update deps to expo sdk 52
yjose Nov 13, 2024
959385e
feat: add react compiler plugin to eslint
yjose Nov 13, 2024
8bd3cee
chore: prebuild with expo 52
yjose Nov 13, 2024
1e40152
chore: update mmkv and bottom sheet deps
yjose Nov 13, 2024
1610f11
feat: enable new architecture
yjose Nov 13, 2024
60394a1
feat: update to the new splash screen plugin config
yjose Nov 13, 2024
775aa2d
fix: fix doctor issues
yjose Nov 13, 2024
27a6194
chore: update lock files
yjose Nov 13, 2024
72966a7
feat: splash config tweaking
yjose Nov 14, 2024
013238f
fix: fix expo doctor checks
yjose Nov 14, 2024
026b624
chore: clean up eas.json + update pnpm dep
yjose Nov 14, 2024
4bda947
7.0.0
github-actions[bot] Nov 14, 2024
3f02d70
feat(ci): add expo doctor results as comment for PR
yjose Nov 16, 2024
ab85db5
chore: update expo deps
yjose Nov 16, 2024
186ed52
chore: upgrade expo deps
yjose Nov 16, 2024
b14ba58
chore(docs): fix broken links
yjose Nov 18, 2024
f79f307
feat: add more details on how to login #393
yjose Nov 19, 2024
938233b
fix: fix tests
yjose Nov 19, 2024
dae0907
feat: add react native edge to edge and fix images
hamzamekk Nov 20, 2024
93af8d8
fix: fix expo doctor checks
hamzamekk Nov 20, 2024
93fb5f8
feat: replace statu bar with edge to edge systembar in focuseawarest…
hamzamekk Nov 20, 2024
865fd22
fix: fix react native screens version
hamzamekk Nov 20, 2024
cccd765
7.0.1
github-actions[bot] Nov 21, 2024
68ebf13
fix(doctor): fix expo doctor warning
yjose Nov 21, 2024
5b7bc67
Fix grammatical error (sentence fragment)
maryam-khan-dev Nov 22, 2024
fbb52ca
fix: fix focuse aware statue bar crash in web
hamzamekk Nov 22, 2024
18878d6
7.0.2
github-actions[bot] Nov 23, 2024
a234ab1
fix(doctor): fix expo doctor warning
yjose Nov 23, 2024
adcadfc
refactor(docs): update docs home screen action
yjose Nov 25, 2024
9022642
fix(docs): fix review card styling
yjose Nov 25, 2024
c4cce7d
fix(docs): fix typo in authentication guides docs
abdenassar01 Nov 26, 2024
14a92cb
chore: upgrade actions/checkout from v3 to v4 across all workflows
yjose Dec 17, 2024
83ccc42
chore: update deps to fix expo warning
yjose Dec 17, 2024
15fb6ee
7.0.3
github-actions[bot] Dec 17, 2024
bf82c29
fix(docs): fix sentry setup
yjose Dec 20, 2024
db310a1
fix(ci): fix doctor permission issue
yjose Dec 25, 2024
c063b12
feat(docs): add cursor as recommended editor
yjose Dec 25, 2024
89a8af0
fix: fix prettier not working correctly with lint --fix ( fix #410)
yjose Dec 25, 2024
3a3e780
fix: fix expo doctor warning
yjose Dec 25, 2024
be032e7
7.0.4
github-actions[bot] Dec 25, 2024
462b237
typo(docs): Change sur to sure (#417)
ibbybuilds Dec 25, 2024
42ba291
fix: fix expo doctor
yjose Jan 20, 2025
aca9468
feat(docs): add llm file generation for docs
yjose Jan 29, 2025
7e7d158
chore(checks): added permissions for lint & type check workflows
kelmag Feb 18, 2025
80db1f4
chore: added permissions on expo doctor and stale workflows
kelmag Feb 18, 2025
38fc970
Merge pull request #438 from obytes/fix-checks-permissions
yjose Feb 18, 2025
c312294
fix: avoid the export complaince warning on the app store
yjose Feb 18, 2025
8b518f1
feat: add cursor rules + few prompts
yjose Feb 18, 2025
878fc49
7.0.5
github-actions[bot] Feb 18, 2025
35f360a
fix: fix doctor warnings
yjose Feb 18, 2025
cfe903d
feat: add encryption config
yjose Apr 29, 2025
e0fabd6
Compress Images
yjose Apr 29, 2025
2697e06
Merge pull request #457 from obytes/create-pull-request/patch-1745942732
yjose Apr 29, 2025
33cbe9e
refactor: upgrade to Expo 53 and eslint with flat configs
maksymilian-majer Jun 15, 2025
6c82035
refactor: prebuild native directories
maksymilian-majer Jun 15, 2025
531571c
chore: update @shopify/flash-list
maksymilian-majer Jun 15, 2025
943f01a
chore: update Podfile.lock after dependency upgrade
maksymilian-majer Jun 15, 2025
53d4f2d
chore: remove log file
maksymilian-majer Jun 15, 2025
0870a3c
chore: resolve expo doctor package version errors
maksymilian-majer Jun 25, 2025
7e2efca
fix(lint): ignore auto-generated types
maksymilian-majer Jun 25, 2025
4bdbde6
fix: bundle name in script
maksymilian-majer Jun 25, 2025
dbcdd72
Merge pull request #473 from maksymilian-majer/feature/expo-lint-upgrade
yjose Jun 27, 2025
ae94e50
fix: fix status bar theme based on the selected colorScheme
yjose Jun 27, 2025
865b6db
8.0.0
github-actions[bot] Jun 27, 2025
af37a04
fix: status checks not runinng on sync-with-upstream PRs
asdolo Oct 3, 2025
543a92e
chore: update upstream to v8.0.0
github-actions[bot] Oct 3, 2025
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
147 changes: 147 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# React Native/Expo Project

You are an expert in TypeScript, React Native, Expo, and Mobile UI development with Nativewind.

Every time you choose to apply a rule(s), explicitly state the rule(s) in the output. You can abbreviate the rule description to a single word or phrase.

## Project Context

## Code Style and Structure

- Write concise, technical TypeScript code with accurate examples
- Use functional and declarative programming patterns; avoid classes
- Prefer iteration and modularization over code duplication
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError)
- Ensure components are modular, reusable, and maintainable.
- Component Modularity: Break down components into smaller, reusable pieces. Keep components focused on a single responsibility and shouldn't be more than 80 lines of code.
- To install new packages use `npx expo install <package-name>`
- Structure repository files as follows:

```
src
├── api ## API related code, mainly using axios and react query
├── app ## the main entry point for expo router(file-based routing), when you can find screens and navigation setup
├── components ## shared components
│ ├── card.tsx
│ └── ui ## core ui components. buttons, inputs, etc
├── lib ## shared libraries, auth, env, hooks, i18n, storage, test-utils, utils
├── translations ## translations files for the app
├── types ## shared types

```

## Tech Stack

- Expo
- React Native
- TypeScript
- Nativewind ( Tailwind CSS for React Native )
- Expo Router
- React Query with React Query Kit
- Zustand
- React Native Keyboard Controller
- React Native SVG
- React Native MMKV

## Naming Conventions

- Favor named exports for components and utilities
- Use kebabCase for all files names and directories (e.g., visa-form.tsx)

## TypeScript Usage

- Use TypeScript for all code; prefer types over interfaces
- Avoid enums; use const objects with 'as const' assertion
- Use functional components with TypeScript interfaces
- Define strict types for message passing between different parts of the extension
- Use absolute imports for all files @/...
- Avoid try/catch blocks unless there's good reason to translate or handle error in that abstraction
- Use explicit return types for all functions

## State Management

- Use React Zustand for global state management
- Implement proper cleanup in useEffect hooks

## Syntax and Formatting

- Use "function" keyword for pure functions
- Avoid unnecessary curly braces in conditionals
- Use declarative JSX
- Implement proper TypeScript discriminated unions for message types

## UI and Styling

- Use Nativewind for styling and components
- Use built-in ui components such as Button, Input from `@components/ui`
- Ensure high accessibility (a11y) standards using ARIA roles and native accessibility props.
- Leverage react-native-reanimated and react-native-gesture-handler for performant animations and gestures.
- Avoid unnecessary re-renders by memoizing components and using useMemo and useCallback hooks appropriately.
- Make sure to use defined colors and fonts in the tailwind config file.

Here is a simple example of how a component should be written using :

```tsx
import * as React from 'react';

import { Text, View, Image, SavaAreaView } from '@/components/ui';

// Props should be defined in the top of the component
type Props = {
text: string;
};

export function Title({ text }: Props) {
return (
<View className="flex-row items-center justify-center py-4 pb-2">
<Text className="pr-2 text-2xl">{text}</Text>
<View className="h-[2px] flex-1 bg-neutral-300" />

<Image
source={require('@assets/images/demo.png')}
style={{ width: 24, height: 24 }}
contentFit="contain"
/>
</View>
);
}
```

## Error Handling

- Log errors appropriately for debugging
- Provide user-friendly error messages

## Testing

- Write unit tests using Jest and React Native Testing Library.
- Write unit tests for utilities and complex components
- The test file should be named like the component file but with the .test.tsx extension (e.g., component-name.test.tsx)
- Do not write unit tests for simple components that only show data

## Git Usage

Commit Message Prefixes:

- "fix:" for bug fixes
- "feat:" for new features
- "perf:" for performance improvements
- "docs:" for documentation changes
- "style:" for formatting changes
- "refactor:" for code refactoring
- "test:" for adding missing tests
- "chore:" for maintenance tasks

Rules:

- Use lowercase for commit messages
- Keep the summary line concise with a maximum of 100 characters
- Reference issue numbers when applicable

## Documentation

- Maintain clear README with the following sections:
- Setup ( how to install and run the project )
- Usage ( listing all the commands and how to use them )
- Stack ( the tech stack used in the project )
- Folder Structure ( the folder structure of the project only the important ones inside src )
43 changes: 43 additions & 0 deletions .github/workflows/eas-build-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# 🔗 Links:
# Source file: https://github.com/obytes/react-native-template-obytes/blob/master/.github/workflows/eas-build-prod.yml
# Starter releasing process: https://starter.obytes.com/ci-cd/app-releasing-process/

# ✍️ Description:
# This workflow is used to trigger a build on EAS for Prod environment.
# Can be triggered manually from the actions tab.
# This workflow will use ./actions/eas-build action to trigger the build on EAS with production env.

# 🚨 GITHUB SECRETS REQUIRED:
# - EXPO_TOKEN: Expo token to authenticate with EAS
# - You can get it from https://expo.dev/settings/access-tokens

name: EAS Production Build (Android & IOS) (EAS)

on:
workflow_dispatch:

jobs:
Build:
name: EAS Production Build (Android & IOS) (EAS)
runs-on: ubuntu-latest
steps:
- name: Check for EXPO_TOKEN
run: |
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi

- name: 📦 Checkout project repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 📦 Setup Node + PNPM + install deps
uses: ./.github/actions/setup-node-pnpm-install

- name: ⏱️ EAS Build
uses: ./.github/actions/eas-build
with:
APP_ENV: production
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
47 changes: 47 additions & 0 deletions .github/workflows/eas-build-qa.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# 🔗 Links:
# Source file: https://github.com/obytes/react-native-template-obytes/blob/master/.github/workflows/eas-build-qa.yml
# Starter releasing process: https://starter.obytes.com/ci-cd/app-releasing-process/

# ✍️ Description:
# This workflow is used to trigger a build on EAS for the QA environment.
# It will run on every GitHub release published on the repo or can be triggered manually from the actions tab.
# This workflow will use ./actions/eas-build action to trigger the build on EAS with staging env.

# 🚨 GITHUB SECRETS REQUIRED:
# - EXPO_TOKEN: Expo token to authenticate with EAS
# - You can get it from https://expo.dev/settings/access-tokens

name: EAS QA Build (Android & IOS) (EAS)

on:
workflow_dispatch:
release:
types: [published]

jobs:
Build:
name: EAS QA Build (Android & IOS) (EAS)
runs-on: ubuntu-latest
steps:
- name: Check for EXPO_TOKEN
run: |
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: 📦 Checkout project repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 📦 Setup Node + PNPM + install deps
uses: ./.github/actions/setup-node-pnpm-install

- name: ⏱️ EAS Build
uses: ./.github/actions/eas-build
with:
APP_ENV: staging
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
VERSION: ${{ github.event.release.tag_name }}
IOS: false # TODO: set as true when IOS account is ready

16 changes: 15 additions & 1 deletion .github/workflows/expo-doctor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,28 @@ jobs:
- name: 📦 Setup Node + PNPM + install deps
uses: ./.github/actions/setup-node-pnpm-install

<<<<<<< HEAD
- name: 🚑 Run Doctor Checks
run: |
chmod +x .github/scripts/expo-doctor.sh
=======
- name: Run prebuild
run: pnpm run prebuild

- name: 🚑 Run Doctor Checks
run: |
chmod +x .github/scripts/expo-doctor.sh
rm -rf ios android
>>>>>>> c7bb80d
.github/scripts/expo-doctor.sh

- name: Add doctor report as comment on PR
if: github.event_name == 'pull_request' && always()
uses: marocchino/sticky-pull-request-comment@v2
with:
header: expo-doctor
path: .expo/expo-doctor.md
<<<<<<< HEAD
path: .expo/expo-doctor.md
=======
path: .expo/expo-doctor.md
>>>>>>> c7bb80d
65 changes: 65 additions & 0 deletions .github/workflows/new-app-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# 🔗 Links:
# Source file: https://github.com/obytes/react-native-template-obytes/blob/master/.github/workflows/lint-ts.yml
# Starter releasing process: https://starter.obytes.com/ci-cd/app-releasing-process/

# ✍️ Description:
# This workflow is used to create a new version of the app and push a new tag to the repo.
# As this workflow will push code to the repo, we set up GitHub Bot as a Git user.
# This Workflow need to be triggered manually from the Actions tab in the repo.
# 1. Choose your release type (patch, minor, major)
# 2. The workflow will run the np-release script which runs the following steps:
# - Bump the version in package.json based on the release type using np
# - Run the prebuild of the app to align the package.json version with the native code
# - Create a new tag with the new version
# - Push the new tag to the repo
#

# 🚨 GITHUB SECRETS REQUIRED:
# - GH_TOKEN: A GitHub token with write repo access.
# You can generate one from here: https://docs.github.com/en/[email protected]/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
# make sure to add it to the repo secrets with the name GH_TOKEN

name: New App Version

on:
workflow_dispatch:
inputs:
release-type:
type: choice
description: 'Release type (one of): patch, minor, major'
required: true
default: 'patch'
options:
- patch
- minor
- major

jobs:
release:
name: Create New Version and push new tag
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 🔍 GH_TOKEN
if: env.GH_TOKEN == ''
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: echo "GH_TOKEN=${GITHUB_TOKEN}" >> $GITHUB_ENV
- name: 📦 Checkout project repo
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_TOKEN }}

- name: 📝 Git User Setup
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"

- name: 📦 Setup Node + PNPM + install deps
uses: ./.github/actions/setup-node-pnpm-install

- name: 🏃‍♂️ Run App release
run: |
pnpm app-release ${{ github.event.inputs.release-type }}
34 changes: 34 additions & 0 deletions .github/workflows/new-github-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 🔗 Links:
# Source file: https://github.com/obytes/react-native-template-obytes/blob/master/.github/workflows/new-github-release.yml
# Starter releasing process: https://starter.obytes.com/ci-cd/app-releasing-process/

# ✍️ Description:
# This workflow will be triggered automatically after the new app version workflow has been executed successfully.
# It will create a new GitHub release with the new app version and the release notes.

# 🚨 GITHUB SECRETS REQUIRED: None

name: New GitHub Release

on:
push:
tags:
- '*'

jobs:
release:
name: New GitHub Release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 📦 Checkout project repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 🏃‍♂️Create A Draft Github Release
uses: ncipollo/release-action@v1
with:
generateReleaseNotes: true
draft: false
Loading
Loading