🚀 96% SwiftUI Parity
Complete SwiftUI API compatibility with 71 components and 130+ modifiers - familiar patterns, identical syntax
Production-ready TypeScript framework with 96% SwiftUI API parity and fine-grained reactivity
Create reactive UIs with SwiftUI-inspired syntax:
import { createSignal, VStack, Text, Button } from '@tachui/core'
const CounterApp = () => {
const [count, setCount] = createSignal(0)
return VStack({
children: [
Text(() => `Count: ${count()}`)
.modifier
.fontSize(24)
.fontWeight('bold')
.foregroundColor('#007AFF')
.build(),
Button('Increment', () => setCount(count() + 1))
.modifier
.backgroundColor('#007AFF')
.foregroundColor('white')
.padding(16)
.cornerRadius(8)
.scaleEffect(() => count() > 10 ? 1.1 : 1.0)
.transition({ duration: 200 })
.build()
],
spacing: 16,
alignment: 'center'
})
.modifier
.padding(20)
.frame({ maxWidth: 400 })
.build()
}TachUI provides a complete UI framework with three powerful packages:
@tachui/core) - 60KB @tachui/navigation) - +25KB @tachui/forms) - +35KB TachUI delivers exceptional performance through modern architecture:
Core Only: ~60KB → Perfect for landing pages, blogs
Core + Navigation: ~85KB → Ideal for single-page applications
Core + Forms: ~95KB → Great for data-heavy applications
Full Framework: ~150KB → Complete multi-window desktop appsPerfect for iOS developers transitioning to web - identical API patterns:
// SwiftUI
VStack(spacing: 16) {
Text("Welcome to TachUI")
.font(.title)
.fontWeight(.bold)
.foregroundColor(.blue)
AsyncImage(url: URL(string: "/hero.jpg")) { image in
image
.resizable()
.aspectRatio(16/9, contentMode: .fit)
.cornerRadius(12)
}
Button("Get Started") {
handleAction()
}
.buttonStyle(.borderedProminent)
}
.padding()
.navigationTitle("Home")// TachUI - identical patterns
VStack({
children: [
Text('Welcome to TachUI')
.modifier
.font({ size: 'title' })
.fontWeight('bold')
.foregroundColor('blue')
.build(),
Image('/hero.jpg')
.modifier
.resizable()
.aspectRatio(16/9, 'fit')
.cornerRadius(12)
.build(),
Button('Get Started', handleAction)
.modifier
.buttonStyle('borderedProminent')
.build()
],
spacing: 16
})
.modifier
.padding()
.navigationTitle('Home')
.build()Complete CSS filter effects with reactive support:
Image('/photo.jpg')
.modifier
.blur(() => isLoading() ? 3 : 0)
.scaleEffect(() => isHovered() ? 1.05 : 1.0)
.rotationEffect(5, 'center')
.transition({ duration: 300 })
.build()Native desktop application patterns:
App({
children: [
Window({
id: 'main',
title: 'My App',
content: () => MainView()
}),
WindowGroup({
id: 'documents',
title: 'Document',
for: Document,
content: (doc) => DocumentEditor({ document: doc })
})
]
})Mobile-first with desktop adaptation:
VStack({ children })
.modifier
.padding(() => isMobile() ? 16 : 24)
.frame({ maxWidth: () => isDesktop() ? 800 : Infinity })
.build()// React
const [count, setCount] = useState(0)
return <div onClick={() => setCount(c => c + 1)}>{count}</div>
// TachUI - nearly identical
const [count, setCount] = createSignal(0)
return Text(() => count()).modifier.onTap(() => setCount(c => c + 1)).build()// SwiftUI
VStack(spacing: 16) {
Text("Hello")
.font(.title)
.foregroundColor(.blue)
}
.padding()// TachUI - identical API
VStack({
children: [
Text("Hello")
.modifier
.font({ size: 'title' })
.foregroundColor('blue')
.build()
],
spacing: 16
})
.modifier
.padding()
.build()# Install TachUI CLI globally (once published)
npm install -g @tachui/cli
tacho init my-app
# Or add to existing project
npm install @tachui/core
# yarn add @tachui/core
# pnpm add @tachui/coreStart building production-ready applications with familiar SwiftUI patterns:
Latest Release: v1.4 • Components: 71 • Modifiers: 130+ • SwiftUI Parity: 95% • Test Coverage: 95%+