A universal iOS News app clone built with React Native and Expo, delivering a native experience across iOS, Android, and Web platforms.
- Web: https://applenews.expo.app
- iOS/Android: Instruction below
- π£ Works on Android, iOS, and Web
- π Native gestures and transitions
- π΅ Podcast Player with full playback controls
- π² iOS-specific features:
- Live Activities for sports scores
- Home Screen Widgets
- Watch support
- Context menus and peek previews
- π€ Swipe actions like π (Twitter)
- π Smart search with keyword highlighting
- β‘οΈ Example Server Components (RSC) integration
βοΈ Drag & sort favorites
- Expo - Universal app development platform
- React Native - Cross-platform native UI
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first styling
- Expo Router - File-based universal routing
- React Navigation - Native navigation primitives
- Reanimated 4 - Native animations
- Gesture Handler - Native gestures
- MMKV - Ultra-fast storage
- WidgetKit - iOS widgets
- ActivityKit - Live Activities
- Expo AV - Audio playback
- Clone the repository:
git clone https://github.com/saulamsal/apple-news-ui- Install dependencies (using bun or npm):
cd apple-news-ui
bun install
# or
npm install- Start the development server:
bun run start
# or
npm start- Run on your preferred platform:
# iOS
bun run ios
# Android
bun run android
# Web
bun run webSome features are in development and may be unstable:
- React Server Components integration
- Watch app support
- Background audio controls
- Enhanced Live Activities
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is MIT licensed.
- @baconbrix for
create-target - @mrousavy for
react-native-mmkv - @fernandotherojo for Zeego
- Expo team for the amazing tooling
- Source: Apple Podcasts API
- Example URL: https://podcasts.apple.com/us/room/1589753370
- Image URL format: Replace
{w}x{h}with/376x376bb.webp
- Replace expo-av with expo-audio
- Lock screen player implementation
- Lock screen controls
- Pending react-native-track-player support for new architecture
- Alternative: Wait for expo-audio lock screen control support
- Shared transitions (Currently broken in Expo 52)
- Fix long press behavior - Details view and context menu conflict
- Optimize navigation performance during audio playback (25% complete)
- Fix /audio/[id] not playing on web when not loaded via MiniPlayer click
- More robust RSC examples