← Playground
Android · iOS · Flutter · React Native

One concept, four dialects

Every mobile platform solves the same problems — only the vocabulary changes. If you know one column, you already know most of the other three. Tap any row to find out what it really is.

Tap any concept to see what it really is, in plain English.

CONCEPT
Android
Kotlin / Java
iOS
Swift
Flutter
Dart
React Native
TypeScript
UI building blockView · @ComposableUIView · SwiftUI ViewWidgetComponent
A screenActivity · FragmentUIViewControllerRoute · ScaffoldScreen
LayoutConstraintLayout · Column/RowAutoLayout · VStack/HStackColumn · RowView + Flexbox
Long listRecyclerView · LazyColumnUITableView · ListListView.builderFlatList
Local stateViewModel · remember { }@State · @ObservablesetState · RiverpoduseState · Redux
Async workCoroutines · suspendasync / awaitFuture · async / awaitPromise · async / await
Off the UI threadDispatchers.IO / DefaultDispatchQueue.global()compute() · IsolateNative module · Worklet
NetworkingRetrofit · OkHttpURLSessionDio · httpfetch · Axios
Local storageRoom · DataStoreSwiftData · UserDefaultssqflite · HiveAsyncStorage · MMKV
NavigationNavigation ComponentNavigationStackNavigatorReact Navigation
DependenciesGradleSPM · CocoaPodspub · pubspec.yamlnpm · yarn
Entry pointMainActivity@main Appmain() → runApp()App.tsx
12 concepts
4 platforms
1 set of ideas

You're not learning four platforms

You're learning one set of ideas in four dialects. State, threading, lifecycle, storage, navigation — the hard parts are identical everywhere; the syntax is just a lookup. That's why moving from Android to Flutter takes weeks, not years: you already know what you're looking for, you just need the local word for it.

Want the idea to actually stick?

Two of these rows have a game — play them and you'll never mix them up again.