# Cross Platform Design

> Use when the user wants one codebase or one product design across web, iOS, Android, Windows, and Mac, asks for the same app on all platforms, asks to translate/port a UI between platforms, or names Compose Multiplatform, Tauri 2, Electron, React Native, Flutter, .NET MAUI, Avalonia, or Uno Platform. Builds cross-platform UI by preserving UX decisions, originality seed, desktop archetype, state coverage, tokens, and product job while translating each surface into the host platform's native idiom rather than pixel-cloning. SKIP when only one platform is targeted and no translation/cross-platform tradeoff is involved.

- Skill: `thedixitjain/cross-platform-design` (Agent Skill)
- Install (CLI): `npx skillmds add thedixitjain/cross-platform-design`
- Raw SKILL.md: https://api.skillmd.com/api/skills/thedixitjain/cross-platform-design/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: thedixitjain (https://skillmd.com/u/thedixitjain)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/thedixitjain/cross-platform-design

---



# cross-platform-design — translate idiom, not pixels

Goal: ship one codebase that respects each platform's HIG/Material/Fluent — not a Flutter app that looks like Flutter on every OS.

## What This Skill Can Do

- Choose cross-platform stacks and explain tradeoffs across Tauri, Electron, React Native, Flutter, Compose Multiplatform, Avalonia, Uno, and MAUI.
- Translate Apple, Android, Windows, and web patterns by idiom instead of copying pixels.
- Preserve UX briefs, state coverage, action hierarchy, tokens, desktop archetype, originality seed, layout sketch, and product metaphor across platforms.
- Define per-platform navigation, controls, typography, icons, motion, density, and accessibility adaptations.
- Warn when one shared UI will harm platform fit or when a single-platform implementation is the better choice.

## Step 0 — Preserve UX and UI decisions

If Stark produced a UX decision brief or UI decision brief, keep both as the source of truth. Translate them per platform instead of pixel-cloning.

Read:

- `../../references/ui-patterns/surface-taxonomy.md`
- `../../references/ui-patterns/ui-decision-brief.md`
- `../../references/ui-patterns/desktop-app-archetypes.md`
- `../../references/ui-patterns/originality-engine.md`
- `../../references/ui-patterns/design-recipes.md`
- `../../references/ui-patterns/anti-default-contrasts.md`
- `../../references/ui-patterns/visual-hierarchy.md`
- `../../references/ui-patterns/motion-budget.md`

The shared product should preserve job, state coverage, action hierarchy, visual hierarchy, desktop archetype, originality seed, and layout sketch. Navigation, controls, typography, icons, and motion must become platform-specific, but the chosen shape should remain legible: command center stays a command center, library stays a library, workbench stays a workbench, and monitoring cockpit stays a monitoring cockpit. A product-specific metaphor can translate across platforms; exact pixels and custom controls should not.

## Step 1 — Pick the right framework for the design intent

| User priority | Recommended stack |
|---|---|
| Native feel + Kotlin codebase + iOS support | **Compose Multiplatform 1.8+** (iOS stable since May 2025) |
| Tiny binary, web team, desktop-first | **Tauri 2** (Rust + native webviews; ~3MB) |
| Native Android views + iOS, large ecosystem | **React Native** (New Arch + Fabric + Hermes) |
| Single Skia raster across platforms (custom design system) | **Flutter** — only if pixel control matters more than native feel |
| .NET shop, XAML cross-platform | **Uno Platform 5+** (reuses WinUI XAML) |
| .NET shop, mobile-first | **.NET MAUI** (warn: weaker desktop, weaker iOS feel) |
| Cross-platform desktop + custom theming | **Avalonia 11** with Fluent/Mac themes |

## Step 2 — Native-feel ranking by platform

When the user picks a stack, **state the fidelity tradeoff per platform** in one line each.

### Compose Multiplatform 1.8+
- Android: native (excellent)
- iOS: stable but Material widgets won't feel HIG — you must implement Cupertino-styled Compose components, or accept a Material aesthetic on iOS
- Desktop: good for Compose-driven design, not native Fluent
- Web (Wasm): experimental

### Tauri 2
- Windows: WebView2 chrome — Mica works via window-backdrop API but font rendering and focus rings will look subtly off vs WinUI 3
- macOS: WKWebView — looks like a web app, not an AppKit/SwiftUI app
- Linux: WebKitGTK
- Mobile (iOS/Android): preview, not production-ready

### React Native (New Architecture)
- iOS: real UIKit views, decent. Liquid Glass requires `expo-glass-effect` or native modules; partial adoption.
- Android: real Android views, M3 themable but won't get spring physics or shape morphing without manual work.
- Desktop: react-native-windows / react-native-macos exist, fidelity weaker

### Flutter
- All platforms: Skia custom-painted. Never feels native to anyone.
- Material 3 widgets exist but lag platform updates (no spring physics parity, no shape morphing primitives, no real dynamic color).
- **Avoid** for any project where "native feel" is a stated requirement.

### Uno Platform
- Windows: native WinUI (excellent)
- iOS / Android / Mac / Web: reuses XAML rendering — distinctive fidelity but not 1:1 with each platform's idiom
- Best XAML cross-platform path

### .NET MAUI
- Windows: weak WinUI integration
- macOS: Catalyst (deprecated direction)
- iOS: looks like Android in costume
- **Generally avoid for design-first work**

## Step 3 — Translation rules: same product, different idiom

**Settings screen example:**
- iOS → grouped `Form` with `Section { ... }` headers, Liquid Glass toolbar, switch toggles
- Android → `LargeTopAppBar` + `LazyColumn` with `ListItem` rows, switches with M3 thumbs
- Windows → `NavigationView` + scrollable `SettingsCard` stack with Mica backdrop
- Web → asymmetric grid with sidebar nav and editorial section headers

**Tab bar example:**
- iOS → bottom `TabView` (5 tabs max, Liquid Glass)
- Android → `NavigationBar` (3–5) or `NavigationRail` adaptive
- Windows → `NavigationView` Top or Left
- Web → top nav with motion-reveal

**List detail example:**
- iOS → `NavigationSplitView` on iPad/Mac, push-pop on iPhone
- Android → `ListDetailPaneScaffold` (adaptive)
- Windows → Master-detail with Mica
- Web → URL-driven two-pane with View Transitions

**Desktop archetype example:**
- Command center → Windows `NavigationView` + `CommandBar` + status rail, macOS `NavigationSplitView` + toolbar/search, Tauri/Electron command palette + inspector
- Library / collection → Windows `GridView` + preview pane, macOS sidebar/content/inspector, web desktop shell with collection grid + detail sheet
- Workbench → Windows command bar + canvas + inspector, macOS document window + toolbar + inspector, web desktop shell with stable toolbars and undo/redo
- Tray/menu-bar utility → Windows tray flyout or compact window, macOS `MenuBarExtra`, web desktop shells only when background status and settings justify a full app

Never copy the iOS tab bar onto Windows. Never copy the Android FAB onto iOS. Idiom > pixel.

## Step 4 — When to route to a single-platform skill

If the user is shipping to one canonical platform first (almost always the case), route to that platform's skill (`apple-design`, `android-design`, `windows-design`, `web-design`) and translate later. Don't start in cross-platform mode unless they explicitly say "build cross-platform from day one."

## Step 5 — Anti-slop ban list (cross-platform-specific)

- Same UI pixel-for-pixel on every platform
- Defaulting to Flutter without warning about non-native feel
- Defaulting to Electron (use Tauri 2 if web stack is mandated)
- Material widgets unmodified on iOS — must Cupertino-skin or accept "Material on iOS" warning
- Cupertino widgets unmodified on Android — same in reverse
- Ignoring per-platform navigation idioms (always-bottom-tabs, always-hamburger)
- One typeface across all platforms — each OS has a system face
- One motion language across all platforms when native motion differs
- One density level across mobile, tablet, desktop, and web

## Step 6 — Reference cross-platform apps that translate well

- **Notion** — web-first but adapts respectably to each native platform
- **Telegram** — fully native on each platform; same product, different code per OS
- **Spotify** — same brand, idiomatic per platform
- **Linear** — desktop via Electron but obsessively polished; web is canonical

## Step 7 — Tokens & assets

When generating cross-platform output, ship tokens once and translate:
- Use the **DTCG W3C token format** as the source of truth
- See `../../scripts/token_export.py` to translate one token JSON into Tailwind theme + Compose Material3 ColorScheme + SwiftUI Color extension + Fluent ResourceDictionary
- See `../../assets/tokens/` for per-platform reference token bundles

---

**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/f0d010c/stark/skills/cross-platform-design/SKILL.md`

