Bini.js Logo

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. Focus on your ideas and users, while the framework handles the heavy lifting.

$npx create-bini-app@latest
Stack

Built on a foundation of fast, production-grade tooling

Every tool is carefully chosen and pre-configured so you can focus on building.

Vite

Vite 8

Bundler

Next Generation Frontend Tooling

Rust-powered build
Instant HMR
Optimized bundles
React

React 19

UI

The Library for Web & Native

Actions
Concurrent rendering
Compiler
Bini.js

Hono 4

API

Ultrafast Edge Framework

Edge-ready
Middleware
Type-safe RPC
Tauri

Tauri 2

Native

Build Smaller, Faster, and More Secure Desktop & Mobile Apps

Native binaries
Rust-powered core
Web, desktop & mobile
Motivation

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.

Problem

Bundler configs, router boilerplate, and manual code splitting eat into every new project.

Solution

Drop a file in src/app/, get a route — instantly code-split, no router config, no boilerplate.

Problem

Shipping to web, desktop, and mobile usually means three codebases and three toolchains.

Solution

One codebase compiles to a real web app, desktop binary, or mobile app — nothing emulated or wrapped.

Problem

Backend and frontend live in separate repos, separate deploys, separate mental models.

Solution

API routes are colocated in src/app/api/, powered by Hono, and deploy alongside your frontend.

Problem

Each hosting platform has its own APIs, configs, and entry points.

Solution

bini-deploy generates the right configs and entry files for any platform — one command handles Netlify, Vercel, Cloudflare, Deno, Node, and native apps.

Architecture

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.

Targets

One codebase. Six platforms.

--platform picks the target — each scaffold gets exactly the dependencies, scripts, and config it needs.

Default

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.

Apple

macOS

Native desktop binary running inside WKWebView, with Developer ID + notarization.

Linux

Linux

Native desktop binary in WebKitGTK, distributed as a GPG-signed AppImage.

Android

Android

Real native APK/AAB via Tauri's Android backend — not a WebView wrapper.

Apple

iOS

Real native app via Tauri's iOS backend, running inside WKWebView.

Ecosystem

Seven packages. One framework.

Every package is purpose-built and works seamlessly together — or standalone.

Bini.js
bini-env
Route
Server
Native
env
Deploy
Overlay
Scaffold
License

Free & open source

Bini.js is MIT Licensed and will always be free and open source. This is made possible by our contributors and these companies:

Become a sponsor
Bini.js

Ready to build with Bini.js?

Get started in seconds. Build for web, desktop, and mobile — all from one codebase.

$npx create-bini-app@latest