Skip to content
Back to skills

Native Vs Flutter Decision

ASecurity

Use when starting a mobile task that could be Flutter or native - decide from the existing app, platform-specific needs, and the analiz task

  • 109 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 19, 2026
ai-agentsgoswift

Works with

  • cli

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add makifbaysal/tasktrooper --skill native-vs-flutter-decision --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Native Vs Flutter Decision?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Native Vs Flutter Decision
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/makifbaysal-native-vs-flutter-decision/badge)](https://www.skillsdirectory.com/skills/makifbaysal-native-vs-flutter-decision)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: native-vs-flutter-decision
category: architecture
description: Use when starting a mobile task that could be Flutter or native - decide from the existing app, platform-specific needs, and the analiz task
---
# Native vs Flutter Decision

## Overview

Flutter is the default for cross-platform mobile; native (SwiftUI / Jetpack Compose) is chosen when a task needs deep platform integration or the app is already native. Decide at the start — you cannot half-migrate an app mid-task.

**Core principle:** The existing app's stack wins by default. Only greenfield apps or the analiz task's direction open the choice.

## Decision

```dot
digraph m {
    "App already single-stack?" [shape=diamond];
    "Follow the app's stack" [shape=box];
    "Needs deep platform integration?" [shape=diamond];
    "Native (SwiftUI / Compose)" [shape=box];
    "Flutter (default)" [shape=box];

    "App already single-stack?" -> "Follow the app's stack" [label="yes"];
    "App already single-stack?" -> "Needs deep platform integration?" [label="greenfield"];
    "Needs deep platform integration?" -> "Native (SwiftUI / Compose)" [label="yes"];
    "Needs deep platform integration?" -> "Flutter (default)" [label="no"];
}
```

## Choose Flutter when

- Cross-platform (iOS + Android) from one codebase, standard UI + platform-channel-level device access.
- Greenfield app with no hard native requirement.
- The app is already Flutter — always.

## Choose native when

- The task needs platform capabilities Flutter exposes poorly: advanced widgets/animations tied to the OS, deep HealthKit/CarPlay/WidgetKit, App Clips, live activities, tight ARKit/CameraX use.
- The app is already native (SwiftUI for iOS, Compose for Android) — always follow it.
- The analiz task specifies native.

## Hard Rule

Never introduce a second UI stack into a single-stack app. A Flutter app that "needs one native screen" embeds it via a platform view (`PlatformView`/`AndroidView`/`UiKitView`) or talks to it through a `MethodChannel`/Pigeon — it does not gain a parallel SwiftUI module on your initiative. Going the other way (a native app needing a Flutter module) is Flutter add-to-app, not a rewrite. Flag genuine cross-stack needs in a task comment for the architect.

## Common Mistakes

- Picking your preferred stack over the app's.
- Reaching for native for something a Flutter plugin already does.
- Adding native modules to a Flutter app for a capability a platform channel covers.

## Red Flags

- Your choice has no reason beyond preference.
- You're scaffolding a new Xcode target inside a Flutter repo.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…