A fast, roughly 4kB React-compatible UI library with the same modern component API, built on a Virtual DOM.
infernojs/inferno
An extremely fast, React-like JavaScript library for building high-performance user interfaces on the client and server.
- Stars
- 16,452
- Forks
- 642
- Open issues
- 36
- Last commit
- yesterday
What is it?
Inferno is a React-like JavaScript library for building user interfaces. It keeps React's component model, one-way data flow and lifecycle concepts, while focusing on runtime rendering speed, especially for real-time data views and large DOM trees.
Speed comes from compile-time optimizations. Inferno's JSX plugins for Babel, SWC and TypeScript generate direct vNode creation calls instead of createElement calls, and child flags such as $HasVNodeChildren let developers declare the shape of children so the runtime can skip normalization. The library also offers linkEvent to avoid arrow functions and bind calls in event handlers, and it supports server rendering through inferno-server.
Inferno differs from React in a few areas: it has a partial synthetic event system, lifecycle hooks on functional components, and controlled form components. It does not support React Native. JSX is optional, as hyperscript and createElement are also available.
Key features
- 01React-like component API with one-way data flow and familiar lifecycle methods
- 02Lifecycle events on functional components, which React does not offer
- 03Partial synthetic event system and linkEvent helper to avoid bind and closures
- 04Client and server rendering through inferno-server and hydrate
- 05Controlled input, select and textarea components
- 06Compile-time JSX plugins for Babel, SWC and TypeScript
Use cases
- Building real-time dashboards or data views that update frequently
- Rendering very large DOM trees where runtime performance matters
- Migrating a small React-style front end to a lighter runtime
- Server-side rendered web apps that need hydration on the client
Quick start
- 1
Install the core package
npm install --save inferno - 2
Install a JSX compiler plugin for Babel
npm install --save-dev babel-plugin-inferno - 3
Render a component into a DOM element using the render function
Things to know
- Inferno does not support React Native.
- Inferno does not support legacy string refs, so code relying on them must change.
- Inferno's JSX compile-time optimizations require the matching Inferno version of the compiler plugin.
Topics
FAQ
- What is inferno?
- An extremely fast, React-like JavaScript library for building high-performance user interfaces on the client and server. Inferno is a React-like JavaScript library for building user interfaces. It keeps React's component model, one-way data flow and lifecycle concepts, while focusing on runtime rendering speed, especially for real-time data views and large DOM trees.
- Is inferno free to use? What license does it have?
- inferno is open source under the MIT license. Check the license terms before using it in commercial products.
- Is inferno still maintained?
- Actively maintained. The last commit to inferno was on Oct 23, 2026.
- What can I use inferno for?
- Building real-time dashboards or data views that update frequently Rendering very large DOM trees where runtime performance matters Migrating a small React-style front end to a lighter runtime Server-side rendered web apps that need hydration on the client
- How do I install inferno?
- Install the core package: npm install --save inferno Install a JSX compiler plugin for Babel: npm install --save-dev babel-plugin-inferno Render a component into a DOM element using the render function
- Where can I get inferno?
- The source code and installation instructions are on GitHub: https://github.com/infernojs/inferno
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A declarative JavaScript UI library that compiles JSX to real DOM updates with fine-grained reactivity instead of a Virtual DOM.
Omi is a Web Components framework with JSX, signal-based reactivity, a router and Tailwind support, aimed at building reusable custom elements.
Angular bindings for the Firebase JS SDK, providing dependency injection, RxJS observables and Angular-friendly APIs for Firebase services.
An enterprise-class React UI component library and design language for building web applications.
A Material Design UI component framework for Vue, providing handcrafted, responsive components for building web applications.