Mobile App Developer Tools

Mobile app development for Cursor, Claude Code, and MCP-compatible editors. 43 skills covering React Native/Expo and Flutter - project setup through app store submission, monetization, analytics, OTA updates, testing, CI/CD, animations, maps, i18n, forms, real-time, security, offline sync, background tasks, debugging, production monitoring, theming, feature flags, accessibility testing, native modules, config plugins, and SDK upgrades - plus 12 rules. Companion MCP server provides 36 tools.

0
Skills
0
Rules
0
MCP Tools
Cursor 0.49+ Windows / macOS / Linux Node 18+ Claude Code compatible
Get started in seconds
npm install -g @tmhs/mobile-mcp

Skills

43
Skills list
Mobile Accessibility Testing Automated and manual accessibility auditing, WCAG compliance, and screen reader testing for mobile apps
Triggers
  • Accessibility (a11y) testing or auditing
  • WCAG 2.1 AA compliance for mobile
  • Screen reader testing with VoiceOver or TalkBack
  • Missing accessibility labels, roles, or hints
  • Touch target sizing requirements
  • Dynamic type / font scaling support
  • Reduced motion preferences
  • Color contrast ratio validation
  • CI integration for accessibility checks
mobile-accessibility-testing
Mobile AI Features Integrate AI APIs (OpenAI, Anthropic, Google AI) into a React Native/Expo app. Covers vision, text generation, and audio transcription with secure API key management. Use when the user wants to add AI
Triggers
  • Wants to add AI-powered features to a mobile app
  • Needs to send images to a vision API (GPT-4o, Claude, Gemini)
  • Wants text generation or chatbot functionality
  • Needs audio transcription (Whisper)
  • Asks about securing API keys in a mobile app
  • Mentions "AI", "GPT", "Claude", "Gemini", "vision", "transcription", "chatbot", or "LLM"
mobile-ai-features
Mobile Analytics Add crash reporting and event tracking to a React Native/Expo or Flutter app. Covers Sentry, Firebase Crashlytics, PostHog, source map upload, user identification, session recording, and GDPR complian
Triggers
  • Wants crash reporting or error tracking in production
  • Needs event analytics or user behavior tracking
  • Asks about Sentry, Firebase Crashlytics, PostHog, or Mixpanel
  • Wants to understand how users interact with their app
  • Mentions "analytics", "crash reporting", "crashlytics", "sentry", "tracking", "events", or "session recording"
mobile-analytics
Google Play Store Submission Submit an Expo/React Native app to the Google Play Store. Covers Play Console setup, signing keys, AAB format, EAS Build and Submit, service accounts, content ratings, and staged rollouts. Use when th
Triggers
  • Wants to submit their app to the Google Play Store
  • Needs help with Android signing keys or Play App Signing
  • Asks about Play Console, AAB format, or staged rollouts
  • Gets a build or submission error for Android
  • Mentions "play store", "android submit", "google play", "aab", "signing key", or "eas submit android"
mobile-android-submission
Mobile Animations Add animations to a React Native/Expo or Flutter app. Covers Reanimated 3 (shared values, worklets, gesture-driven), Lottie and Rive for vector animations, implicit and explicit Flutter animations, He
Triggers
  • Wants to add animations to components, screens, or transitions
  • Asks about Reanimated, Lottie, Rive, or Animated API
  • Needs gesture-driven animations (swipe to dismiss, drag to reorder)
  • Mentions "animation", "transition", "motion", "parallax", "spring", "fade", or "slide"
  • Wants loading spinners, skeleton screens, or progress animations
mobile-animations
Mobile API Integration Integrate REST and GraphQL APIs into a React Native/Expo app. Covers fetch, Axios, React Query, urql, auth headers, retry logic, offline queuing, and optimistic updates. Use when the user needs to con
Triggers
  • Needs to connect their app to a REST or GraphQL API
  • Asks about data fetching, caching, or offline support
  • Wants to add auth headers to API requests
  • Needs retry logic or error handling for network calls
  • Mentions "API", "fetch", "Axios", "REST", "GraphQL", "React Query", "offline", or "cache"
mobile-api-integration
Mobile App Monitoring Add production application performance monitoring (APM) to a React Native/Expo or Flutter app. Covers Sentry Performance, Datadog RUM, and Instabug for error tracking, performance tracing, session rep
Triggers
  • Wants production error tracking and crash reporting beyond basic Crashlytics
  • Asks about APM, performance monitoring, or production observability
  • Needs to track app launch times, screen load durations, or API latency
  • Mentions "Sentry Performance", "Datadog", "Instabug", "APM", "Apdex", "session replay", or "release health"
  • Wants dashboards, alerts, or user impact analysis for production issues
  • Is preparing for a production launch and needs monitoring infrastructure
mobile-app-monitoring
App Store Prep Prepare a mobile app for App Store and Play Store submission. Covers app icons, screenshots, metadata, privacy policy, age ratings, and review guideline compliance. Use when the user is getting ready
Triggers
  • Wants to publish their app to the App Store or Play Store
  • Asks about app store requirements, screenshots, or metadata
  • Needs help with app icons, descriptions, or keywords
  • Mentions "publish", "submit", "app store", "play store", "release", or "store listing"
mobile-app-store-prep
Mobile Auth Setup Add authentication to a React Native/Expo app using Supabase, Firebase, or Clerk. Covers email/password, OAuth, token storage with expo-secure-store, protected routes, and session management. Use when
Triggers
  • Wants to add user authentication to their app
  • Asks about sign-in, sign-up, or session management
  • Needs OAuth (Google, Apple, GitHub) in a mobile app
  • Asks how to store auth tokens securely
  • Wants protected routes that redirect unauthenticated users
  • Mentions "auth", "login", "sign-in", "Supabase", "Firebase Auth", "Clerk", or "session"
mobile-auth-setup
Mobile Background Tasks Schedule and manage background tasks in React Native/Expo and Flutter apps. Covers expo-task-manager and expo-background-fetch for React Native, WorkManager (Android) and BGTaskScheduler (iOS) for nat
Triggers
  • Needs periodic data sync while the app is backgrounded or closed
  • Asks about background fetch, background processing, or scheduled tasks
  • Wants background location tracking or geofence monitoring
  • Mentions "background task", "WorkManager", "BGTaskScheduler", "headless JS", "background fetch", or "periodic sync"
  • Needs to run code when the app is not in the foreground
mobile-background-tasks
Mobile Camera Integration Add camera functionality to an Expo app using expo-camera. Covers permissions, photo capture, barcode scanning, video recording, and saving to the camera roll. Use when the user wants to take photos,
Triggers
  • Wants to add camera functionality to their app
  • Needs to capture photos or record video
  • Wants barcode or QR code scanning
  • Asks about camera permissions on iOS or Android
  • Mentions "camera", "photo", "barcode", "QR code", "scan", or "video recording"
mobile-camera-integration
Mobile CI/CD Set up CI/CD pipelines for React Native/Expo or Flutter apps. Covers GitHub Actions workflows, EAS Build integration, build caching, code signing in CI, secrets management, PR preview builds, and cond
Triggers
  • Wants automated builds or tests on push or PR
  • Asks about GitHub Actions, EAS Build, or CI/CD for mobile
  • Needs code signing (certificates, keystores) in CI
  • Mentions "continuous integration", "CI", "CD", "pipeline", "automated build", "github actions", or "deploy on merge"
  • Wants PR preview builds or staged deployment
mobile-ci-cd
Mobile Component Patterns Build reusable, maintainable React Native components. Covers compound components, custom hooks, style patterns (StyleSheet vs NativeWind), screen vs component separation, and testing with React Native
Triggers
  • Wants to build reusable UI components for React Native
  • Asks about component architecture or project structure
  • Needs help organizing screens vs shared components
  • Asks about styling approaches (StyleSheet, NativeWind, styled-components)
  • Wants to add component tests
  • Mentions "component", "reusable", "pattern", "StyleSheet", "NativeWind", "testing", or "RNTL"
mobile-component-patterns
Mobile Config Plugins Expo config plugin authoring, CNG patterns, native project modification, and Xcode/Gradle automation
Triggers
  • Creating or customizing Expo config plugins
  • Modifying app.json/app.config.js programmatically
  • Continuous Native Generation (CNG) patterns
  • Modifying Xcode project settings (Info.plist, entitlements, build settings)
  • Modifying Android manifest, build.gradle, or proguard rules
  • Prebuild hooks and native project automation
  • Adding native configuration without ejecting from Expo
mobile-config-plugins
Mobile Debugging Debug React Native/Expo and Flutter apps effectively. Covers Flipper, React DevTools, React Native Debugger for RN and Flutter DevTools (widget inspector, timeline, memory view) for Flutter. Includes
Triggers
  • Has a bug they cannot find or fix
  • Asks about debugging tools (Flipper, DevTools, Debugger)
  • Needs to inspect network requests, state, or component trees
  • Wants to detect memory leaks or performance issues
  • Mentions "debug", "Flipper", "DevTools", "memory leak", "profiler", "breakpoint", or "network inspector"
  • Is troubleshooting crashes, freezes, or unexpected behavior
mobile-debugging
Mobile Deep Links Set up universal links (iOS), app links (Android), URL schemes, and deferred deep links in a React Native/Expo or Flutter app. Covers AASA hosting, assetlinks.json, Expo Linking API, link-to-screen ro
Triggers
  • Wants URLs to open specific screens in their app
  • Needs universal links (iOS) or app links (Android)
  • Asks about URL schemes, deferred deep links, or install attribution
  • Wants to share content links that open the app (or the store if not installed)
  • Mentions "deep link", "universal link", "app link", "URL scheme", "expo-linking", or "branch.io"
mobile-deep-links
Mobile Dev Environment Detect and set up mobile development prerequisites across macOS, Windows, and Linux. Use when the user needs to verify their environment, install missing tools, or fix common setup issues.
Triggers
  • Asks if their machine is ready for mobile development
  • Gets build errors related to missing tools or SDKs
  • Needs to install Node, Watchman, Xcode, Android Studio, or JDK
  • Mentions "setup", "install", "environment", "prerequisites", or "can't build"
  • Is starting mobile development for the first time
mobile-dev-environment
Mobile E2E Testing Set up end-to-end testing for React Native/Expo or Flutter apps. Covers Detox, Maestro, Patrol, device farm integration, CI pipeline setup, and flaky test mitigation. Use when the user wants automated
Triggers
  • Wants automated tests that tap buttons, fill forms, and verify screens on a device or emulator
  • Asks about Detox, Maestro, or Patrol
  • Needs to test full user flows like onboarding, login, or checkout
  • Mentions "end-to-end", "e2e", "integration test on device", "device farm", or "UI automation"
  • Wants to run automated tests in CI against real devices
mobile-e2e-testing
Mobile Feature Flags Feature flag management with PostHog, LaunchDarkly, or Firebase Remote Config for React Native/Expo and Flutter
Triggers
  • Feature flags, feature toggles, or feature switches
  • A/B testing or experimentation frameworks
  • Staged rollouts or percentage-based releases
  • Kill switches for disabling features remotely
  • PostHog, LaunchDarkly, or Firebase Remote Config integration
  • Typed flag definitions with default values
  • User targeting or segmentation for features
mobile-feature-flags
Flutter Navigation Set up navigation in a Flutter app using GoRouter. Covers declarative routing, route guards, shell routes for tabs, typed routes, deep linking, and platform-adaptive transitions. Use when the user wan
Triggers
  • Wants to add navigation to a Flutter app
  • Asks about GoRouter, Navigator 2.0, or routing
  • Needs tabs, drawer, or nested navigation in Flutter
  • Wants auth-protected routes or route guards
  • Asks about deep linking in Flutter
  • Mentions "go_router", "routes", "navigation", "tabs", or "deep link" in a Flutter context
mobile-flutter-navigation
Flutter Project Setup Create a new Flutter project with recommended structure, linting, and packages. Covers flutter create, directory conventions, analysis_options.yaml, pubspec.yaml management, and flavors. Use when the
Triggers
  • Wants to create a new Flutter app from scratch
  • Asks how to set up a Flutter project with good structure
  • Needs help with `flutter create` options
  • Wants recommended project structure or directory conventions
  • Mentions "flutter create", "new Flutter project", "Flutter scaffold", or "Dart project"
mobile-flutter-project-setup
Flutter Run on Device Run a Flutter app on a physical phone or tablet. Covers USB and wireless debugging, hot reload vs hot restart, build modes, common connection issues, and platform-specific setup. Use when the user wan
Triggers
  • Wants to run their Flutter app on a physical phone or tablet
  • Is stuck on emulator and wants real hardware
  • Gets device connection errors
  • Asks about USB debugging, wireless debugging, or `adb`
  • Mentions "run on phone", "hot reload", "device not found", or "flutter run"
mobile-flutter-run-on-device
Flutter State Management Choose and implement state management in a Flutter app. Covers Riverpod (recommended), Bloc, Provider, and setState. Patterns for async data, code generation, and testing. Use when the user needs to m
Triggers
  • Asks which state management to use in Flutter
  • Needs to share state across multiple widgets
  • Wants to manage async data (API calls, streams)
  • Mentions "Riverpod", "Bloc", "Provider", "setState", "state management", or "Cubit"
  • Asks about code generation with `riverpod_generator` or `freezed`
mobile-flutter-state-management
Mobile Forms and Validation Build validated forms in a React Native/Expo or Flutter app. Covers React Hook Form with Zod, TextFormField with validators, keyboard avoidance, multi-step wizard forms, accessible error messages, and
Triggers
  • Wants to build a form with validation (login, registration, profile edit, checkout)
  • Asks about React Hook Form, Zod, Yup, or form validation
  • Needs keyboard avoidance, multi-step forms, or dynamic field arrays
  • Mentions "form", "validation", "input", "text field", "form wizard", or "keyboard avoiding"
  • Wants accessible error messages on form inputs
mobile-forms-validation
Mobile Internationalization Add internationalization (i18n) to a React Native/Expo or Flutter app. Covers i18next, react-intl, flutter_localizations, locale detection, RTL layout, pluralization, date/number formatting, translati
Triggers
  • Wants to support multiple languages in their app
  • Asks about i18n, localization, or translations
  • Needs RTL (right-to-left) layout support for Arabic, Hebrew, or similar
  • Mentions "internationalization", "localization", "translate", "multi-language", "locale", "RTL", or "pluralization"
  • Wants to format dates, numbers, or currencies for different regions
mobile-i18n
iOS App Store Submission Submit an Expo/React Native app to the iOS App Store. Covers Apple Developer account, certificates, provisioning profiles, EAS Build and Submit, TestFlight, build versioning, and common rejection reas
Triggers
  • Wants to submit their app to the iOS App Store
  • Needs help with Apple certificates or provisioning profiles
  • Asks about TestFlight, EAS Submit, or App Store Connect
  • Gets a build or submission error for iOS
  • Mentions "app store", "ios submit", "testflight", "eas submit", "apple review", or "provisioning profile"
mobile-ios-submission
Mobile Local Storage Persist data locally in a React Native/Expo app. Covers AsyncStorage for key-value, expo-sqlite for relational data, expo-secure-store for sensitive tokens, and react-native-mmkv for fast synchronous
Triggers
  • Needs to persist data locally on the device
  • Asks about offline storage or caching
  • Wants to store auth tokens securely
  • Needs a local database (SQLite)
  • Mentions "storage", "AsyncStorage", "SQLite", "SecureStore", "MMKV", "offline", or "cache"
mobile-local-storage
Mobile Maps and Location Add maps and geolocation to a React Native/Expo or Flutter app. Covers react-native-maps, google_maps_flutter, expo-location, geofencing, background location tracking, marker clustering, and permissio
Triggers
  • Wants to show a map with markers, routes, or polygons
  • Needs to get the user's current location
  • Asks about react-native-maps, google_maps_flutter, or expo-location
  • Mentions "map", "geolocation", "GPS", "geofencing", "directions", "coordinates", or "location tracking"
  • Wants background location tracking or location-based notifications
mobile-maps-location
Mobile Monetization Add in-app purchases, subscriptions, or one-time payments to a React Native/Expo or Flutter app. Covers RevenueCat, StoreKit 2, Google Play Billing, receipt validation, sandbox testing, and subscripti
Triggers
  • Wants to add in-app purchases or subscriptions
  • Asks about RevenueCat, StoreKit 2, or Google Play Billing
  • Needs help with receipt validation or sandbox testing
  • Wants to offer a paywall, freemium model, or premium features
  • Mentions "monetization", "IAP", "in-app purchase", "subscription", "paywall", or "RevenueCat"
mobile-monetization
Mobile Native Modules Building native modules with Expo Modules API, Turbo Modules, JSI bridging, and Flutter platform plugins
Triggers
  • Creating a native module or native extension
  • Expo Modules API (Swift/Kotlin module definitions)
  • Turbo Modules or JSI bridging for React Native
  • Native view components (Fabric components)
  • Flutter platform plugins (MethodChannel, EventChannel)
  • Bridging Swift/Kotlin/ObjC code to JS or Dart
  • Custom native functionality not available via existing packages
mobile-native-modules
Mobile Navigation Setup Set up file-based navigation in an Expo Router project. Covers tab layouts, stack navigation, drawer navigation, typed routes, dynamic segments, deep linking, and layout composition. Use when the user
Triggers
  • Wants to add tabs, a drawer, or stack navigation to an Expo app
  • Asks how Expo Router file-based routing works
  • Needs to add a screen or route group
  • Wants to set up deep linking or typed routes
  • Mentions "navigation", "tabs", "stack", "drawer", "routes", or "linking"
mobile-navigation-setup
Mobile Offline Sync Build offline-first mobile apps with local databases, background sync, conflict resolution, and operation queuing. Covers WatermelonDB, PowerSync, Realm for React Native and Drift, Isar for Flutter. I
Triggers
  • Wants the app to work without internet connectivity
  • Asks about offline-first architecture or local-first data
  • Needs background sync, conflict resolution, or operation queuing
  • Mentions "offline", "sync", "local database", "conflict resolution", "CRDT", or "queue"
  • Wants optimistic UI that updates instantly and syncs later
  • Builds apps for unreliable network environments (field work, travel, rural areas)
mobile-offline-sync
Mobile OTA Updates Deploy over-the-air JavaScript updates to a React Native/Expo app using EAS Update. Covers channels, runtime versions, staged rollouts, rollback, bandwidth management, and testing published updates. F
Triggers
  • Wants to push bug fixes or content changes without a store release
  • Asks about EAS Update, CodePush, or Shorebird
  • Needs staged rollouts or rollback for updates
  • Wants to manage multiple update channels (production, staging, preview)
  • Mentions "OTA", "over-the-air", "eas update", "hot update", "code push", or "shorebird"
mobile-ota-updates
Mobile Permissions Handle runtime permissions in a React Native/Expo app. Covers camera, location, contacts, media library, notifications, and microphone with iOS rationale strings and Android manifest config. Use when
Triggers
  • Needs to request a device permission (camera, location, contacts, etc.)
  • Gets a permission denied error
  • Asks about iOS usage description strings or Android manifest permissions
  • Wants to handle the "don't ask again" / permanently blocked state
  • Mentions "permission", "Info.plist", "NSCameraUsageDescription", "rationale", or "settings"
mobile-permissions
Mobile Project Setup Create a new Expo (React Native) project with TypeScript, file-based routing, and opinionated defaults. Use when the user wants to start a new mobile app or needs help choosing project configuration.
Triggers
  • Wants to create a new mobile app from scratch
  • Asks how to set up an Expo or React Native project
  • Needs help choosing between Expo templates
  • Wants a recommended project structure
  • Mentions "create app", "new project", "scaffold", or "starter"
mobile-project-setup
Mobile Push Notifications Add push notifications to an Expo app using expo-notifications and EAS Push. Covers permission requests, token registration, local/remote notifications, foreground/background handlers, Android channel
Triggers
  • Wants to add push notifications to their app
  • Needs local or remote notifications
  • Asks about notification permissions or Android channels
  • Wants to handle notification taps for deep linking
  • Mentions "push", "notification", "EAS push", "FCM", "APNs", or "expo-notifications"
mobile-push-notifications
Mobile Real-Time Add real-time features to a React Native/Expo or Flutter app. Covers WebSockets, Supabase Realtime, Socket.IO, server-sent events, connection lifecycle, reconnection with exponential backoff, typed ev
Triggers
  • Wants live data updates without polling (chat, notifications, dashboards)
  • Asks about WebSockets, Supabase Realtime, Socket.IO, or SSE
  • Needs presence indicators, typing status, or online/offline detection
  • Mentions "real-time", "websocket", "live updates", "chat", "push data", "socket", or "streaming"
  • Wants to sync data between multiple clients in real time
mobile-real-time
Mobile Run on Device Run an Expo/React Native app on a physical phone or tablet. Use when the user wants to test on a real device, is having trouble connecting, or needs to switch from simulator to physical hardware.
Triggers
  • Wants to run their app on a physical phone or tablet
  • Is stuck on simulator/emulator and wants to test on real hardware
  • Gets connection errors between the dev server and their device
  • Mentions "run on phone", "test on device", "QR code", "can't connect", or "Expo Go"
  • Needs to set up USB debugging or wireless deployment
mobile-run-on-device
Mobile SDK Upgrade SDK version migration, dependency audit, breaking change detection, and rollback strategy for Expo and Flutter
Triggers
  • Upgrading Expo SDK version
  • Upgrading Flutter version
  • Migration guides for SDK version bumps
  • Dependency compatibility after upgrades
  • Breaking changes between SDK versions
  • expo-doctor or flutter doctor issues
  • Rollback strategy after a failed upgrade
  • React Native version bumps (via Expo SDK)
mobile-sdk-upgrade
Mobile Security Harden a React Native/Expo or Flutter app against common mobile security threats. Covers SSL pinning, certificate transparency, code obfuscation (ProGuard/R8, Hermes bytecode), jailbreak and root dete
Triggers
  • Wants to secure API communication (SSL pinning, certificate transparency)
  • Asks about code obfuscation or preventing reverse engineering
  • Needs jailbreak or root detection
  • Mentions "security", "SSL pinning", "obfuscation", "ProGuard", "jailbreak", "root detection", "tamper detection", or "secure storage"
  • Wants to encrypt local data or protect signing credentials
  • Is preparing for a security audit or compliance review
mobile-security
Mobile State Management Choose and implement state management for a React Native/Expo app. Covers React state, Zustand, Jotai, and React Query with guidance on when to use each. Use when the user needs to manage global state
Triggers
  • Asks how to manage global or shared state in a React Native app
  • Wants to fetch and cache server data
  • Needs help choosing between state management libraries
  • Is dealing with prop drilling or context performance issues
  • Mentions "state", "Zustand", "Jotai", "React Query", "TanStack Query", "context", "store", or "cache"
mobile-state-management
Mobile Testing Set up unit and integration testing for React Native/Expo or Flutter apps. Covers Jest, React Native Testing Library, flutter_test, snapshot testing, mocking native modules, and test organization. Use
Triggers
  • Wants to add unit or integration tests to their app
  • Asks about Jest, React Native Testing Library, or flutter_test
  • Needs to test components, hooks, utilities, or state management
  • Mentions "testing", "unit test", "snapshot test", "test coverage", or "mock"
  • Wants help structuring test files or writing assertions
mobile-testing
Mobile Theming & Dark Mode Design tokens, dark mode, and dynamic theming for React Native/Expo and Flutter apps
Triggers
  • Setting up a theme system, design tokens, or color palettes
  • Implementing dark mode or light/dark theme switching
  • System appearance detection and automatic theme matching
  • NativeWind or Tailwind theming in React Native
  • Material 3 / Material You / dynamic color in Flutter
  • Persisting user theme preference
  • Semantic color naming or token-based styling
mobile-theming

Rules

12
Rules list
NameScopeDescription
Mobile Accessibility Flag accessibility anti-patterns in React Native and Flutter code. Catches missing accessibility labels, small touch targets, images without alt text, and color-only state indicators.
Mobile Bundle Size Flag large dependencies, unoptimized imports, and bloated assets that inflate the app bundle. Catches full-library imports when tree-shakeable alternatives exist, heavy packages with lighter replaceme
Mobile Color Contrast Flag insufficient color contrast, missing dark mode support, and non-semantic color usage
Mobile Env Safety Flag hardcoded production endpoints, database URLs, and service URLs that should differ between environments. Enforce EXPO_PUBLIC_ prefix for client-side environment variables.
Mobile I18N Strings Flag hardcoded user-facing strings that are not wrapped in a translation function. Catches strings in JSX text nodes and Flutter Text widgets that bypass the i18n layer.
Mobile Image Assets Flag oversized image assets, unoptimized formats, missing density variants, and uncached remote images in React Native/Expo projects. Prevents app bundle bloat and poor image performance.
Mobile Native Compat Flag deprecated native APIs, bridge-only module patterns, and New Architecture incompatibilities
Mobile Performance Flag common performance anti-patterns in React Native and Flutter code. Catches inline styles, missing list keys, unnecessary re-renders, missing const constructors, and heavy computation in build met
Mobile Platform Check Flag platform-specific React Native APIs used without Platform.OS or Platform.select() guards. Prevents runtime errors when code runs on the wrong platform.
Mobile Secrets Prevent committing mobile app secrets, API keys, signing credentials, or authentication material. Flag files containing sensitive patterns before they are committed.
Mobile Security Audit Flag common mobile security anti-patterns including insecure storage, missing SSL pinning, debug flags in release builds, cleartext traffic, and exposed signing credentials.
Mobile Test Coverage Flag untested components and screens, missing test files for new code, and low coverage thresholds in React Native/Expo and Flutter projects.

MCP Tools

36
/
Build and Release 6
NameDescription
mobile_checkBuildHealth Run build health checks: validate app.json, check dependencies, verify TypeScript, detect native issues
mobile_buildForStore Create a production build for app store submission using EAS Build
mobile_analyzeBundle Analyze app bundle for large dependencies, heavy assets, and optimization opportunities
mobile_configureOTA Configure EAS Update for over-the-air JavaScript updates with runtime version policy
mobile_checkNativeCompat Audit installed packages for New Architecture (Fabric/TurboModules) support
mobile_upgradeSDK Detect current SDK version, compare to target, generate step-by-step upgrade plan
Dependencies 2
NameDescription
mobile_installDependency Install a package using npx expo install for Expo compatibility with native module warnings
mobile_addPermission Add a platform permission to an Expo project with iOS rationale string in app.json
Dev Environment 3
NameDescription
mobile_checkDevEnvironment Detect installed mobile development tools and SDKs (Node, Expo CLI, Watchman, Xcode, Android Studio, JDK)
mobile_runOnDevice Step-by-step instructions for connecting a physical device to the Expo dev server
mobile_resetDevEnvironment Nuclear reset for a stuck Expo dev environment: clear Metro cache, node_modules, .expo directory
Features 7
NameDescription
mobile_addMap Add a map view with provider config, location permissions, and marker support
mobile_addPushNotifications Wire up push notifications: add plugin to app.json, create handler utility, configure Android channel
mobile_configureDeepLinks Configure deep linking: scheme, Android App Links intent filters, iOS Universal Links
mobile_integrateAI Scaffold AI API integration with provider config, error handling, and TypeScript types
mobile_setupRealtime Add a real-time client module with connection management, event subscriptions, and reconnection
mobile_setupI18n Initialize internationalization config with locale files and translation structure
mobile_setupFeatureFlags Add a typed feature flag system with default values and remote sync (PostHog, LaunchDarkly, Firebase)
Quality 6
NameDescription
mobile_securityAudit Scan for common security anti-patterns: insecure storage, missing SSL pinning, debug flags, credentials
mobile_profilePerformance Analyze for performance anti-patterns: slow lists, unnecessary re-renders, inline styles, uncached images
mobile_auditAccessibility Scan for accessibility violations: missing labels, small touch targets, images without alt text
mobile_checkOfflineReady Validate offline-first readiness: local database, network status listener, query caching, mutation queue
mobile_setupMonitoring Configure APM with Sentry Performance or Datadog RUM: error capture, tracing, breadcrumbs
mobile_setupTheming Initialize a design token system with light/dark themes, semantic colors, spacing, typography
Scaffolding 6
NameDescription
mobile_scaffoldProject Generate a new Expo project using create-expo-app with the default or specified template
mobile_generateScreen Create a new Expo Router screen file with navigation wiring and boilerplate
mobile_generateComponent Create a React Native component file with typed props, StyleSheet, and optional test file
mobile_generateForm Scaffold a validated form component with typed fields, validation rules, and error handling
mobile_createNativeModule Scaffold an Expo Module or Flutter platform plugin with Swift/Kotlin stubs and bindings
mobile_generateTestFile Scaffold a test file for an existing component or module with matching test boilerplate
Store Submission 4
NameDescription
mobile_validateStoreMetadata Check that an Expo project has all required app store listing fields: name, bundle ID, icon, splash
mobile_submitToAppStore Submit the latest iOS production build to App Store Connect via EAS Submit
mobile_submitToPlayStore Submit the latest Android production build to Google Play Console via EAS Submit
mobile_generateScreenshots Generate a screenshot capture helper script with required App Store and Play Store dimensions
Testing and CI 2
NameDescription
mobile_runTests Execute the project test suite (Jest for Expo, flutter test for Flutter) with structured results
mobile_setupCI Generate a GitHub Actions CI workflow for build, test, and optional EAS Build deployment

Installation

Installation steps
  1. Option A: npm (recommended)
    npm install -g @tmhs/mobile-mcp
  2. Option B: from source
    git clone https://github.com/TMHSDigital/Mobile-App-Developer-Tools.git
    cd Mobile-App-Developer-Tools/mcp-server && npm install && npm run build
  3. Add to Cursor MCP config (.cursor/mcp.json):
    {"mcpServers":{"mobile":{"command":"npx","args":["-y","@tmhs/mobile-mcp"]}}}
  4. Prerequisites: Node.js 20+. For React Native/Expo: install expo-cli. For Flutter: install the Flutter SDK. The MCP tools detect your environment automatically.
  5. Open your mobile project in Cursor. All 43 skills, 12 rules, and 36 MCP tools are available immediately - from scaffolding to app store submission.

Changelog

Recent changelog
v1.0.0 2026-04-05
Changed
  • Production stable release: 43 skills, 12 rules, 36 MCP tools
  • Added README.md to MCP server package (`@tmhs/mobile-mcp`) for npm listing
  • Standardized punctuation: replaced em dashes with hyphens across 6 skills, 2 rules, 1 README
  • Fixed CLAUDE.md SnapLog skill count (was "20", corrected to "43")
  • Updated SECURITY.md supported versions
  • Added LICENSE to mcp-server/ and packages/mobile-dev-tools/ for npm tarballs
  • Added keywords to `@tmhs/mobile-mcp` package.json
  • Fixed README.md symlink example path
v0.12.0 2026-04-04
Added
  • **3 new skills**: `mobile-native-modules` (Expo Modules API, Turbo Modules, JSI bridging, native view components, Swift/Kotlin), `mobile-config-plugins` (config plugin authoring, CNG patterns, Xcode/Gradle automation, modifier previews), `mobile-sdk-upgrade` (SDK version migration, dependency audit, breaking change detection, rollback strategy, expo-doctor)
  • **1 new rule**: `mobile-native-compat` (flags deprecated native APIs, bridge-only module patterns, New Architecture incompatibilities, sunset React Native APIs)
  • **3 new MCP tools**: `mobile_createNativeModule`, `mobile_upgradeSDK`, `mobile_checkNativeCompat`
  • Totals: 43 skills, 12 rules, 36 MCP tools
Added
  • **3 new skills**: `mobile-native-modules` (Expo Modules API, Turbo Modules, JSI bridging, native view components, Swift/Kotlin), `mobile-config-plugins` (config plugin authoring, CNG patterns, Xcode/Gradle automation, modifier previews), `mobile-sdk-upgrade` (SDK version migration, dependency audit, breaking change detection, rollback strategy, expo-doctor)
  • **1 new rule**: `mobile-native-compat` (flags deprecated native APIs, bridge-only module patterns, New Architecture incompatibilities, sunset React Native APIs)
  • **3 new MCP tools**: `mobile_createNativeModule`, `mobile_upgradeSDK`, `mobile_checkNativeCompat`
  • Totals: 43 skills, 12 rules, 36 MCP tools
View full changelog on GitHub →