HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
infernojs
inferno
JavaScript2015–2025
infernojs / inferno

inferno

:fire: An extremely fast, React-like JavaScript library for building modern user interfaces

27Distinct people
34Mentions
0Explicit recommenders
16.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

:fire: An extremely fast, React-like JavaScript library for building modern user interfaces

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year34 dated mentions

Observed mentions: 2015-12-20 01:57:02 UTC to 2025-09-16 09:21:14 UTC.

051015202015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 18 mentions; 8 submissions, 10 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 8 mentions; 5 submissions, 3 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC110
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC18810
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC404
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC853
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Inferno is an insanely fast, React-like library for building high-performance user interfaces on both the client and server. Description The main objective of the InfernoJS project is to provide the fastest possible runtime performance for web applications. Inferno excels at rendering real time data views or large DOM trees. The performance is achieved through multiple optimizations, for example: Inferno's own JSX compilers creates monomorphic newVNode calls, instead of createElement calls. Optimizing runtime performance of the application. SWC plugin inferno is a plugin for SWC. It can compile TSX and JSX Babel plugin inferno is a plugin for BabelJs. It can compile JSX. TS plugin inferno is a plugin for TSC. It can compile TSX. Inferno 10 needs version 10 of these plugins, and JSX compiled by older versions does not work with it. From version 10 on, the major version of each plugin matches the major version of Inferno. See the v10 migration guide. Inferno's diff process uses bitwise flags to memoize the shape of objects Child nodes are normalized only when needed Special JSX flags can be used during compile time to optimize runtime performance at application level Many micro optimizations Features Component driven + one-way data flow architecture React-like API, concepts and component lifecycle events Partial synthetic event system, normalizing events for better cross browser support Inferno's linkEvent feature removes the need to use arrow functions or binding event callbacks Isomorphic rendering on both client and server with inferno-server Unlike React and Preact, Inferno has lifecycle events on functional components Unlike Preact and other React-like libraries, Inferno has controlled components for input/select/textarea elements Components can be rendered outside their current html hierarchy using createPortal - API Support for older browsers without any polyfills defaultHooks for Functional components, this way re-defining lifecycle events per usage can be avoided Inferno supports setting styles using string <div style="background-color: red"></div> or using object literal syntax <div style={{"background-color": "red"}}></div>. For camelCase syntax support see inferno-compat. Fragments (v6) createRef and forwardRef APIs (v6) componentDidAppear, componentWillDisappear and componentWillMove (v8) - class and function component callbacks to ease animation work, see inferno-animation package Runtime requirements Inferno v9 requires following features to be present in the executing runtime: Promise String.prototype.includes() String.prototype.startsWith() Array.prototype.includes() Object.spread() for ... of Browser support Since version 4 we have started running our test suite without any polyfills. Inferno is now part of Saucelabs open source program and we use their service for executing the tests. InfernoJS is actively tested with browsers listed below, however it may run well on older browsers as well. This is due to limited support of browser versions in recent testing frameworks. https://github.com/jasmine/jasmine/blob/main/release_notes/5.0.0.md Browser Test Status https://app.saucelabs.com/open_sauce/user/Havunen/tests/vdc Migration guides Inferno v4 Inferno v6 Benchmarks Live examples at https://infernojs.github.io/inferno UI Bench dbmonster JS Web Frameworks Benchmark (current) Isomorphic-UI-Benchmark 1k Components Code Example Let's start with some code. As you can see, Inferno intentionally keeps the same design ideas as React regarding components: one-way data flow and separation of concerns. In these examples, JSX is used via the Inferno JSX Babel Plugin to provide a simple way to express Inferno virtual DOM. You do not need to use JSX, it's completely optional, you can use hyperscript or createElement (like React does). Keep in mind that compile time optimizations are available only for JSX. import { render } from 'inferno'; const message = "Hello world"; render( <MyComponent message={ message } />, document.getElementById("app") ); Furthermore, Inferno also uses ES6 components like React: import { render, Component } from 'inferno'; class MyComponent extends Component { constructor(props) { super(props); this.state = { counter: 0 }; } render() { return ( <div> <h1>Header!</h1> <span>Counter is at: { this.state.counter }</span> </div> ); } } render( <MyComponent />, document.getElementById("app") ); Because performance is an important aspect of this library, we want to show you how to optimize your application even further. In the example below we optimize diffing process by using JSX $HasVNodeChildren and $HasTextChildren to predefine children shape compile time. In the MyComponent render method there is a div that contains JSX expression node as its content. Due to dynamic nature of Javascript that variable node could be anything and Inferno needs to go through the normalization process to make sure there are no nested arrays or other invalid data. Inferno offers a feature called ChildFlags for application developers to pre-define the shape of vNode's child node. In this example case it is using $HasVNodeChildren to tell the JSX compiler, that this vNode contains only single element or component vNode. Now inferno will not go into the normalization process runtime, but trusts the developer decision about the shape of the object and correctness of data. If this contract is not kept and node variable contains invalid value for the pre-defined shape (fe. null), then application would crash runtime. There is also span-element in the same render method, which content is set dynamically through _getText() method. There $HasTextChildren child-flag fits nicely, because the content of that given "span" is never anything else than text. All the available child flags are documented here. import { createTextVNode, render, Component } from 'inferno'; class MyComponent extends Component { constr
Read the full README on GitHub

What Hacker News says

34 sources
I think it's a good idea to include ones that stands out from rest of the pack. https://github.com/sveltejs/svelte and https://github.com/ryansolid/solid stands out by being the only 2 that are compiled to standard js, so no framework is loaded at runtime. Speed is important too and https://github.com/infernojs/inferno (and solid above) is well known for speed and is backed by benchmarks. Not sure if you want to add more beyond this point since a few more will push the boundary to just include everything which is over 100 nowadays.
In Launch HN: Openbase (YC S20) – reviews and insights for open-source packages
havunensk·Feb 10, 2018Submission

InfernoJS v4 will be out soon

We are releasing Inferno's next major version soon! If you have built something using Inferno and you would like to get some publicity for it you can now send PR to our upcoming website. Link: https://github.com/infernojs/inferno-website/blob/master/src/docs/guides/utilities.md or add it to our readme here: https://github.com/infernojs/inferno/tree/docs-v4#more-examples In addition, a major documentation rewrite has been done. You can see the changes here: https://github.com/infernojs/inferno/pull/1272 We are now also a part of the Open Collective program! You can support InfernoJS here: https://opencollective.com/inferno
3 points · Open discussion

Showing the 15 most recent of 34 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.