Performance by Default • Simplified State Management • True Cross-Platform Consistency
Principle | How Jepsh Lives It |
---|---|
Performance by Default | Every API ships with a zero-cost abstraction and an opt-in progressive enhancement layer. |
Simplified State Management | One mental model—Signal → View → Reaction—works the same on Web, Android, iOS. |
True Cross-Platform Consistency | Pixel-perfect rendering via Jepsh Render Kernel + Adaptive Shells that respect each OS. |
graph TD
A["Declarative UI (JXL)"] --> B("Jepsh Render Kernel")
B --> C{"Adaptive Shell"}
C --> D["Web DOM / Canvas"]
C --> E["Android View / Compose"]
C --> F["iOS UIView / SwiftUI"]
G["Reactive Store (Atom)"] --> A
H["Native Bridge (FFI)"] --> C
Target | Language | Compiler | Tooling |
---|---|---|---|
Web | TypeScript → WASM + JS | jepsh-webc |
VS Code extension, Chrome DevTools plugin |
Android | Kotlin (JVM) | jepsh-androidc |
AS plugin, Compose preview |
iOS | Swift | jepsh-iosc |
Xcode template + live canvas |
Write once in JXL (Jepsh eXtensible Language) – a strict subset of TS/Kotlin/Swift that compiles to each host language.
- Tree-Shaking of Runtime: Unused reactivity & layout code stripped at compile time.
- Layout Pre-Calculation: Static parts pre-computed; only dynamic regions diff.
- Binary Splitting: WASM bundles < 50 KB for initial render; rest streamed.
- Frame-Budget Scheduler – 60 FPS guarantee via micro-task batching.
- Zero-Copy Memory – Large assets (images, video) mapped directly from disk or GPU.
- Off-Main-Thread Rendering – Web Workers on web; Kotlin coroutines on Android; Swift Concurrency on iOS.
// JXL example – no extra annotations, auto-optimized
view Counter {
signal count: Int = 0
render {
Button("Clicked \(count) times") {
count += 1
}
}
}
A single reactive primitive Atom<T>
everywhere:
atom user: User? = nil
atom theme: Theme = .system
- No Context, Provider, or Services—just atoms.
- Smart re-renders via structural diffs (à-la VDOM but 4× lighter).
- Built-in persistence layer (
@Persist
) for offline & multi-device sync.
- Time-travel debugger across Web, Android, iOS.
- State heat-map shows which atoms trigger re-renders in real time.
Each platform gets a thin Shell that:
- Applies OS-specific motion curves & haptics.
- Respects accessibility & dark-mode settings.
- Provides native navigation gestures (iOS swipe-back, Android back-button).
Use Jepsh Tokens → auto-maps to:
- Material You (Android)
- Human Interface Guidelines (iOS)
- CSS Variables (Web)
# tokens.yml
color.primary: '#3B82F6'
radius.card: 12
motion.duration: 200ms
npm i -g jepsh
jepsh create myApp
jepsh dev --platform=all # spins up Web, Android, iOS emulators
jepsh build --target=prod
- Web: HMR via WebSockets
- Android: Live edit via AS plugin
- iOS: SwiftUI-style preview diffing
Threat | Jepsh Mitigation |
---|---|
XSS | JXL escapes by default; no innerHTML . |
CSRF | Auto-generated double-submit tokens on forms. |
Memory Leaks | Composables/Views auto-dispose via DisposableEffect equivalent. |
Secrets | Compile-time env injection; never bundled. |
From | Strategy |
---|---|
React / Angular / Vue | jepsh migrate --from=react auto-wraps components. |
Flutter / React Native | Gradual module replacement via Jepsh Module Bridge. |
Native SwiftUI / Jetpack Compose | Use Jepsh Shell inside existing apps. |
Phase | Milestone | ETA |
---|---|---|
α | Web (WASM) | Q4 2025 |
β | Android & iOS shells, CLI tooling | Q2 2026 |
GA | Marketplace, VS Code + Xcode + AS plugins | Q4 2026 |
v2 | Server-driven UI, edge rendering | 2027 |
npx jepsh@next create helloJepsh
cd helloJepsh
jepsh dev
helloJepsh launches simultaneously in your browser, Android Studio, and Xcode simulator—identical pixels, 60 FPS, zero config.
Jepsh is Apache 2.0 licensed, community-driven, and accepting RFCs at github.com/jepsh/rfc.