React Framework for
Cross-Platform
One codebase. Six platforms. Zero boilerplate. Write React, ship everywhere.
Build modern, high-performance apps that run natively everywhere without complex tooling, steep learning curves, or endless config files.
$ npx create-bini-app@latest
Built on a foundation of fast, production-grade tooling
Every tool is carefully chosen and pre-configured so you can focus on building.
Why Bini?
Most starters give you a bundler and call it a day. Bini.js gives you a framework - wired together and configured correctly from the first commit.
Bundler configs, router boilerplate, and manual code splitting eat into every new project.
Drop a file in src/app/, get a route - instantly code-split, no router config, no boilerplate.
Shipping to web, desktop, and mobile usually means three codebases and three toolchains.
One codebase compiles to a real web app, desktop binary, or mobile app - nothing emulated or wrapped.
Backend and frontend live in separate repos, separate deploys, separate mental models.
API routes are colocated in src/app/api/, powered by Hono, and deploy alongside your frontend.
Each hosting platform has its own APIs, configs, and entry points.
bini-deploy generates the right configs and entry files for any platform - one command handles Netlify, Vercel, Cloudflare, Deno, Node, and native apps.
What makes it different?
Complexity stays invisible. You write normal React and normal web APIs - the framework handles the rest.
File-based routing
Nested layouts, dynamic segments, and per-route metadata - no router config to maintain.
Auto-imports
useState, useParams, getEnv, and more are available with zero import statements.
One handler, every runtime
The same Hono API handler runs in dev middleware, bini-server, or as an edge function - generated per target.
Real native builds
Desktop and mobile builds are real Tauri apps - not Electron wrappers, not emulators.
Rust-powered tooling
Vite + Rolldown for bundling, Oxlint + Oxfmt for lint and format - all pre-configured out of the box.
Native APIs, wired automatically
bini-native detects the web APIs you call and wires Tauri plugins, permissions, and manifests for you.
One codebase. Six platforms.
--platform picks the target - each scaffold gets exactly the dependencies, scripts, and config it needs.
Web
Standard Vite + React SPA with file-based routing and a Hono API layer.
Windows
Native desktop binary running inside WebView2, with Authenticode code signing.
macOS
Native desktop binary running inside WKWebView, with Developer ID + notarization.
Linux
Native desktop binary in WebKitGTK, distributed as a GPG-signed AppImage.
Android
Real native APK/AAB via Tauri's Android backend - not a WebView wrapper.
iOS
Real native app via Tauri's iOS backend, running inside WKWebView.
Eight packages. One framework.
Every package is purpose-built and works seamlessly together - or standalone.
Free & open source
Bini.js is MIT Licensed and will always be free and open source. Made possible by our contributors and these companies:
Become a sponsorReady to build with Bini.js?
Get started in seconds. Build for web, desktop, and mobile - all from one codebase.
$ npx create-bini-app@latest