Repolode
infernojs

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. 1

    Install the core package

    npm install --save inferno
  2. 2

    Install a JSX compiler plugin for Babel

    npm install --save-dev babel-plugin-inferno
  3. 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