| .. | ||
| assets | ||
| src | ||
| .gitignore | ||
| app.json | ||
| App.tsx | ||
| index.ts | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
GitHub Mobile App - Expo
A React Native mobile app inspired by Claude Code, built with Expo. This is a port of the SwiftUI iOS app to React Native/Expo for cross-platform support.
Features
- Session list view with repository info and status
- Chat view with collapsible tool executions (Write, Bash, Read, Edit, Glob, Grep)
- Message input with model/repo/branch selection chips
- PR creation flow simulation
- Dark theme matching Claude Code aesthetic
- Mock data for repos, sessions, and tool calls
Tech Stack
- React Native with Expo SDK 54
- TypeScript
- React Context for state management
- Expo Vector Icons (Ionicons)
Project Structure
src/
├── components/ # Reusable components
│ ├── MessageInputView.tsx
│ ├── SessionRow.tsx
│ ├── MessageView.tsx
│ ├── ToolCallView.tsx
│ ├── Chip.tsx
│ └── NewSessionSheet.tsx
├── contexts/ # React Context providers
│ └── AppContext.tsx
├── models/ # TypeScript types and data
│ └── types.ts
├── theme/ # Colors, spacing, styling
│ ├── colors.ts
│ └── types.ts
└── views/ # Screen components
├── SessionListView.tsx
└── ChatView.tsx
Running the App
# Install dependencies
npm install
# Start development server
npx expo start
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Run on web
npm run web
Colors & Theme
The app uses a dark theme matching Claude Code's aesthetic:
- Background:
#141414 - Card:
#292929 - Accent (warm orange):
#D98C33 - Tool colors: Write (green), Bash (blue), Read (purple)
Models & Data
Mock data includes:
- 6 repositories (clawdbot, systemss, Awesome-Prompts, etc.)
- 7 sessions with various titles
- Active session with tool call examples (Write, Bash commands)
Port Notes
This is a direct port of the SwiftUI app at ../ios-github-mobile/. Key differences:
- Uses React Native components instead of SwiftUI
- Ionicons instead of SF Symbols
- React Context instead of
@Observable - Modal-based sheets instead of SwiftUI sheets