Syntic
← All skills
EngineeringFreeCommunityv1.0.0

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.md

Place 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.

SKILL.md
---
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

  1. 1Create a dedicated folder for this skill in your local skills library.
  2. 2Place SKILL.md into that folder.
  3. 3Restart Syntic and invoke this skill on matching tasks.

Syntic Code (CLI)

  1. 1Save SKILL.md in your local Syntic Code skills directory.
  2. 2Keep related files in the same skill folder.
  3. 3Run in a safe environment and validate outputs.