SolidJS vs Blits: Debunking the "Most Efficient Framework" Claim
By Chris Lorenzo · Published Jun 2, 2025 · 3 min read
Blits, a framework from the Lightning team for TV apps only, claims to be "the most efficient framework." That claim doesn't hold up. In real-world usage, SolidJS is significantly faster — over 2× faster when rendering components.
The Benchmarks: Misleading by Design
Blits bases its claim on benchmarks in its own GitHub repo: lightning-js/benchmark. These benchmarks test basic operations like node creation, adding/removing children, and updating random nodes. In March, two corrections were submitted to that repo. These fixed bugs in the SolidJS benchmark implementation, revealing that SolidJS is slightly faster than Blits on every test. Months later, the Lightning team has ignored the corrections. No update.
Both Solid & Blits sit on top of the Renderer. Creating 1k nodes takes the Renderer approximately 70ms, and Solid and Blits each add less than 20ms of overhead.
But Blits Is Actually Far Slower…
These micro-tests don't reflect how real apps are built. The benchmarks create individual nodes in a top-level loop:
<Element>
<Element :for="item in $items" :w="$item.w" :h="$item.h" :color="$item.color" :x="$item.x" :y="$item.y" key="$item.id">
<Text
:content="$item.text"
:color="$item.textColor"
alpha="0.8"
:size="$item.fontSize || 26"
font="Ubuntu"
x="5"
y="2"
ref="text"
/>
</Element>
</Element>
But real apps are built with components. By updating the benchmark to create 1,000 Tile components instead:
const Tile = Blits.Component('Tile', {
template: `
<Element :w="$w" :h="$h" :color="$color" :x="$x" :y="$y" key="$id">
<Text
:content="$text"
:color="$textColor"
alpha="0.8"
:size="$fontSize || 26"
font="Ubuntu"
x="5"
y="2"
ref="text"
/>
</Element>
`,
props: ['type', 'size', 'w', 'h', 'color', 'x', 'y', 'id', 'text', 'textColor', 'fontSize'],
})
// Updated App:
<Element>
<Tile
:for="item in $items"
key="$item.id"
:id="$item.id"
:w="$item.w"
:h="$item.h"
:color="$item.color"
:x="$item.x"
:y="$item.y"
:text="$item.text"
:textColor="$item.textColor"
:fontSize="$item.fontSize"
:type="$item.type"
:size="$item.size"
/>
</Element>
This completely changed the results:
- SolidJS performance stayed consistent.
- Blits took more than twice as long.
Why? Because Blits creates an extra parent node for each component. Having twice as many nodes puts extra strain on the renderer and causes animations to stutter. You can check the results for yourself.
If you've built a full app with Blits and are struggling with performance… now you know why. Maybe Blits will be able to address this…
Framework Claims Matter
Performance claims influence real decisions: which tools teams adopt, what ends up in production, and how well apps perform — especially on TVs and constrained devices. Hopefully the Lightning team will correct it after being presented with overwhelming evidence and remove this claim from their website. SolidJS is faster, uses less memory, and is 80KB smaller than Blits — resulting in significantly faster app startup. If you're building apps where performance matters — like TV UIs — go with solid-tv/solid. It's not just faster; it's designed for scale, composability, and precision updates.
And if anyone has a Blits app in production (or hosted somewhere) — please reach out, I'd love to audit the performance of it!
- Benchmarks: github.com/lightning-tv/benchmark
- Website: solidtv.dev
- YouTube: youtube.com/@LightningTVSolidJS
- Discord: discord.com/invite/solidjs
Originally published on Medium.