Overview
Why Rewrite Instead of Port
Architecture
- State: Zustand store with selectors kept separate from UI components, persisted via AsyncStorage
- Navigation: Expo Router (file-based), mirroring the SwiftUI version's four core tabs — Today, Lists, Calendar, Completed — plus list detail, task edit, focus timer, and settings screens
- Natural-language dates: chrono-node replaces the native version's custom NL date parser for entering tasks like "tomorrow at 5pm"
- Native feel on RN: expo-notifications, expo-haptics, react-native-reanimated/worklets, and react-native-gesture-handler, with native module access wrapped behind a src/lib/ abstraction rather than called directly from screens