β All skills
Mobile Developer
Use when building performant cross-platform mobile apps with React Native or Flutter, including native bridge patterns.
About this skill
Use when building performant cross-platform mobile apps with React Native or Flutter, including native bridge patterns.
SKILL.md
mobile-developer.SKILL.mdPlace it in your Syntic skills folder. For Syntic Code, install in your local skills directory, review the contents and run it in a controlled environment first.
--- name: Mobile Developer description: Use when building performant cross-platform mobile apps with React Native or Flutter, including native bridge patterns. category: Engineering version: 1.0.0 tools: [] --- # Mobile Developer Build performant cross-platform applications. Understand both shared codebase and platform-specific nuances. ## Primary Frameworks - **React Native**: New Architecture (Fabric + TurboModules), Expo SDK 51+, TypeScript - **Flutter**: Dart 3.x, Material 3, Riverpod for state, GoRouter for navigation - Choose the framework matching the project. Do not mix both. ## React Native Architecture - Use New Architecture by default: Fabric for UI, TurboModules for native modules. - Use Expo managed workflow unless custom native code is required. - Structure: `src/screens/`, `src/components/`, `src/hooks/`, `src/services/`, `src/navigation/`. - React Navigation v6+ with typed route params defined in `navigation/types.ts`. - Handle platform differences with `.ios.tsx` and `.android.tsx` extensions. ## Flutter Architecture - Follow clean architecture: `presentation/`, `domain/`, `data/` layers. - Riverpod for dependency injection and state management; avoid StatefulWidget for complex state. - Freezed for immutable data classes with JSON serialization. - GoRouter for declarative, deep-link-ready navigation. ## Native Bridge Patterns - React Native: TurboModules for performance-critical native code; JSI preferred. - Flutter: MethodChannel for simple calls, EventChannel for streams, BasicMessageChannel for raw data. - Keep the native interface minimal: simple types (strings, numbers, maps) across the bridge; serialize complex objects to JSON. - Always handle missing native modules (e.g., running in web/desktop targets). ## Performance - Maintain 60fps on mid-range Android devices; profile on real device, not emulator. - React Native: `FlatList` with `getItemLayout` for fixed-height items, `FlashList` for dynamic content. - Flutter: `ListView.builder` with keys; avoid large widget tree rebuilds. - Minimize bridge calls in React Native; batch operations. - Lazy load screens and heavy components. ## Offline-First - SQLite for structured offline data. - Optimistic updates with rollback on sync failure. - Queue mutations offline and replay on reconnect, resolving conflicts via last-write-wins or server-authoritative merge. - Show clear UI for offline mode and sync status. ## Platform Conventions - Respect platform norms: bottom tabs on iOS, drawer on Android. - Use platform-appropriate haptic feedback, date pickers, action sheets. - `SafeAreaView` (React Native) or `SafeArea` (Flutter); never hardcode status bar heights. - Support Dynamic Type (iOS) and font scaling (Android) for accessibility. ## Testing - Unit test business logic and state management with Jest (RN) or `flutter_test`. - Integration test navigation and interactions with Detox (RN) or `integration_test` (Flutter). - Snapshot test UI for regressions. - Test on both iOS and Android physical devices. ## Release - Expo EAS Build for React Native CI/CD; Fastlane or Codemagic for Flutter. - OTA updates with Expo Updates or CodePush for non-native changes. - Feature flags to decouple deployment from release. - Semantic versioning; bump build number on every submission.
Install
Syntic App
- 1Create a dedicated folder for this skill in your local skills library.
- 2Place SKILL.md into that folder.
- 3Restart Syntic and invoke this skill on matching tasks.
Syntic Code (CLI)
- 1Save SKILL.md in your local Syntic Code skills directory.
- 2Keep related files in the same skill folder.
- 3Run in a safe environment and validate outputs.