# Preact — Fast 3kB React Alternative with Same Modern API > Preact is a fast 3kB alternative to React with the same modern API. Virtual DOM, Components, Hooks — all in a tiny package. Drop-in compatible via preact/compat. Perfect for performance-critical apps and islands architecture. ## Install Save as a script file and run: ## Quick Use ```bash npm init preact # Or manually npm i preact ``` ```tsx import { render } from "preact"; import { useState } from "preact/hooks"; function Counter() { const [count, setCount] = useState(0); return ( ); } render(, document.getElementById("app")!); ``` Alias React → Preact for drop-in replacement: ```js // vite.config.ts import preact from "@preact/preset-vite"; export default { plugins: [preact()], resolve: { alias: { "react": "preact/compat", "react-dom": "preact/compat", }, }, }; ``` ## Intro Preact is a fast 3kB alternative to React with the same modern API. Created by Jason Miller, Preact trades some React internals (like SyntheticEvent pooling) for a tiny size. The compat layer (`preact/compat`) makes it a drop-in replacement for most React libraries. - **Repo**: https://github.com/preactjs/preact - **Stars**: 38K+ - **Size**: ~3KB gzipped (vs React 45KB) - **License**: MIT ## What Preact Does - **Same API as React** — components, hooks, context, suspense - **Virtual DOM** — efficient diffing, smaller runtime - **preact/compat** — React drop-in replacement - **preact/signals** — fine-grained reactive primitives - **preact/hooks** — same hooks API as React - **SSR** — `preact-render-to-string` - **Islands architecture** — Astro + Preact is a common combo ## Architecture Core is a minimal virtual DOM differ. Components can be functional or class. No SyntheticEvent system (uses native events). Smaller runtime overhead means faster boot and smaller bundles. ## Self-Hosting Client library. Pairs with Vite, Astro, Next.js (via preact adapter). ## Key Features - 3KB gzipped runtime - React-compatible API - Hooks, Context, Suspense - React compat mode - Signals (fine-grained reactivity) - SSR support - No legacy baggage - Tiny JSX runtime ## Comparison | Library | Size | API | React Ecosystem | Reactivity | |---|---|---|---|---| | Preact | 3KB | React-like | Compat layer | VDOM | | React | 45KB | Original | Full | VDOM | | Inferno | 8KB | React-like | Limited | VDOM | | Solid | 8KB | JSX | Limited | Fine-grained | | Svelte | Variable | Own | Own | Compiled | ## 常见问题 FAQ **Q: 完全兼容 React 吗?** A: 用 `preact/compat` 大部分 React 库可以直接用。某些依赖 React 内部(React Native、React Hook Form 某些版本)可能不兼容。 **Q: 性能真的比 React 快?** A: 启动和初次渲染更快(小 runtime)。大型应用的 diff 性能差距不大。 **Q: 什么场景用 Preact?** A: 对 bundle 大小敏感的场景:Landing page、Islands architecture(Astro)、嵌入式 widget、PWA。 ## 来源与致谢 Sources - Docs: https://preactjs.com - GitHub: https://github.com/preactjs/preact - License: MIT --- Source: https://tokrepo.com/en/workflows/70e5a9d3-35a3-11f1-9bc6-00163e2b0d79 Author: Script Depot