LightningJS alternative
A faster alternative to LightningJS and Blits
LightningJS set the bar for TV UIs on constrained hardware, and SolidTV builds on that foundation. It began as the SolidJS integration for Lightning 3 and now ships its own renderer: a fork of Lightning 3 rebuilt for 60fps on the low-end hardware TV apps really run on.
Measured, not claimed
The numbers, on real devices
30 → 60+ FPS
The same app on the same XumoTV, with the upstream Lightning 3 renderer swapped for SolidTV's.
Read the announcement →+50% FPS
A Raspberry Pi 3 TV UI pushed from 30 FPS to 45+ by removing garbage collection from hot paths and caching unchanged work.
Read how →2× faster
Than Blits when the benchmark renders 1,000 real components instead of bare nodes.
See the benchmark →Zero jitter
Atomic First Paint resolves layout before any WebGL draw call, so the first frame is fully formed.
Read about Atomic First Paint →Side by side
SolidTV compared with upstream Lightning 3 and Blits
| Upstream Lightning 3 / Blits | SolidTV | |
|---|---|---|
| Per-frame work | The update loop does real work every frame for nodes that haven't changed | Static and lightly-animated subtrees cost almost nothing, with translate-only and scale-only fast paths |
| Garbage collection | Allocations inside the render loop cause GC stutter on low-end devices | Allocation-light hot paths: lazy animation maps, a slim glyph layout and a lean texture upload queue |
| Components | Blits adds an extra parent node for every component, doubling the node count | Components compile away, so a component costs the same as the nodes inside it |
| Size | Blits is about 80KB larger | ~12kb minified + gzipped for the framework |
| Apple TV | Needs a browser to run in | Runs on tvOS through NativeScript. See how |
Atomic First Paint
Text measurement and flex layout resolve before the first WebGL draw call, so nothing shifts on a 65-inch screen.
The SolidJS ecosystem
Signals, stores, JSX and TypeScript, with a large open-source community behind them instead of a TV-only dialect.
Someone to call
A community Discord, plus commercial support from the engineer who wrote the framework.
Comparisons are drawn from the linked articles and the public benchmark repository. Run them on your own hardware and tell us what you see.
Inside the renderer
What changed in the fork
Owning the renderer means fixes ship when your app needs them, not once a quarter. A short tour of what has landed since the fork:
Text rendering
A cached SDF text layout, cap-height centering for labels that look centered,
verticalAlign that works in flex layouts, and emoji that keep their colors.
Shaders & visuals
A self-animating RadialProgress shader, a single-pass Blur, borders that default to outside, and gradient parity between WebGL and Canvas.
Images & SVG
DPR-aware SVG rasterization, source-region crops, zero-copy uploads, and image decoding that overlaps with GPU upload.
Animation & tooling
Adaptive durations that stay correctly timed at variable frame rates, plus an inspector that shows component names and source locations.
Migrating
Moving to SolidTV
From the Lightning + SolidJS integration
If your app was built on the earlier SolidJS integration for Lightning 3, moving is mostly a package rename. The README and the docs cover the steps and the renderer upgrade notes.
From Lightning 2, Blits or React
A rewrite of the view layer is a bigger decision. The Migration Assessment gives you a plan and an estimate before you commit, from the engineer who wrote the framework.
Used by companies worldwide
Stuck on a slow Lightning app?
Send us the symptoms. A free consultation will tell you whether the fix is in your app, in the renderer, or in a migration.