Write Once,
Run Truuuly Native ⚡︎
Transform Your Code Into Pure Native UI
SwiftUI
Kotlin
Web
ThunderUI transforms your code into real SwiftUI, Jetpack Compose, and Web components - not just another cross-platform wrapper.
ThunderUI
<VStack spacing={16}>
<Text style={{ fontSize: 24, fontWeight: 'bold' }}>
Profile Settings
</Text>
<Progress value={85} />
<Modal title="Edit Profile">
<VStack spacing={12}>
<Text>Update your profile details</Text>
<Button>Save Changes</Button>
</VStack>
</Modal>
</VStack>
ThunderUI Transformer
{
"type": "VStack",
"props": {
"spacing": 16,
"children": [{
"type": "Text",
"props": {
"content": "Profile Settings",
"style": {
"fontSize": 24,
"fontWeight": "bold"
}
}
}, {
"type": "Progress",
"props": {
"value": 85
}
}, {
"type": "Modal",
"props": {
"title": "Edit Profile",
"children": {
"type": "VStack",
"props": {
"spacing": 12,
"children": [{
"type": "Text",
"props": {
"content": "Update your profile details"
}
}, {
"type": "Button",
"props": {
"children": "Save Changes"
}
}]
}
}
}
}]
}
}
ThunderSwift Transpiler
ThunderKotlin Transpiler
ThunderWeb Transpiler
SwiftUI
VStack(spacing: 16) {
Text("Profile Settings")
.font(.system(size: 24, weight: .bold))
ProgressView(value: 0.85)
Sheet {
VStack(spacing: 12) {
Text("Update your profile details")
Button("Save Changes") {}
}
.navigationTitle("Edit Profile")
}
}
Kotlin
Column(
verticalArrangement =
Arrangement.spacedBy(16.dp)
) {
Text(
text = "Profile Settings",
style = TextStyle(
fontSize = 24.sp,
fontWeight = FontWeight.Bold
)
)
LinearProgressIndicator(
progress = 0.85f
)
ModalBottomSheetLayout(
sheetContent = {
Column(
verticalArrangement =
Arrangement.spacedBy(12.dp)
) {
Text("Update your profile details")
Button(onClick = {}) {
Text("Save Changes")
}
}
}
)
}
Web
<div class="flex flex-col gap-4">
<span class="text-2xl font-bold">
Profile Settings
</span>
<progress
value="85"
max="100"
/>
<dialog class="modal">
<div class="modal-content">
<header>
<h3>Edit Profile</h3>
</header>
<div class="flex flex-col gap-3">
<span>Update your profile details</span>
<button>Save Changes</button>
</div>
</div>
</dialog>
</div>
True Native Output
Pure SwiftUI and Jetpack Compose code - no wrappers, no bridges, just native.
Zero Runtime Overhead
Compile-time transformation with direct native API calls and no interpretation layer.
Platform-Specific Features
Access SwiftUI modifiers, Compose animations, and web APIs directly.
100%
Native Performance
0KB
Runtime Overhead
100%
Type Coverage
<1s
Build Time
Cross-Platform Component Mapping*
Component
VStack
HStack
Text
Image
Button
TabView
TabItem
WebView
Progress
Modal
Disclosure
ScrollView
Web
<div> with flex column
<div> with flex row
<span>
<img>
<button>
Custom tabs with CSS
Tab panel
<iframe>
<progress>
CSS-based bottom sheet
<details>/<summary>
CSS overflow
iOS
VStack
HStack
Text
AsyncImage
Button
TabView
TabItem
WKWebView
ProgressView
Sheet
DisclosureGroup
ScrollView
Android
Column
Row
Text
AsyncImage
Button
TabRow
Tab
WebView
LinearProgressIndicator
ModalBottomSheetLayout
ExpandableContent
LazyColumn
*This is a work in progress (≈ 20% completed).