Announcement

SolidTV Renderer 2.0 Is Released: Same Work, 40% Faster

By Chris Lorenzo · Published October 15, 2026 · 7 min read

Eleven days ago I announced the SolidTV Renderer 2.0 alpha, a ground-up rewrite of the renderer with the same API. 2.0 is now officially released. 2.0.0 went out on October 7, it has been running in production for almost a week, and the numbers are impressive: 2.0 does the same work as 1.x, with the same result on screen, about 40% faster across devices.

The alpha's numbers came from stress scenes on test devices. These come from a production app, which is the test that counts.

Renderer work per frame

~40% faster in production, across devices

Garbage per steady frame

30–120 B against up to 74 kB on 1.10

Text layout

2–3.7× faster with identical output

Slow frames on a Xumo TV

6.25% → 2.4% after the frame-cap fix

What production shows

Every frame, the renderer works out what changed on screen, then draws it. 2.0 does exactly the job 1.x did, and the screen looks the same. It just gets that job done about 40% faster, across the devices the app ships to. (For the technical reader: that's the update and draw phase of each frame, against 1.10.)

That time goes back to your app. At 60 FPS a frame lasts 16.7 ms, and everything has to fit inside it: handling the key press, processing data, layout, and the renderer's own work. The less of each frame the renderer takes, the more is left for everything else, and the less likely a busy frame runs long and drops.

The other half is garbage. 2.0 keeps node state in typed arrays, so a steady frame allocates almost nothing: 30 to 120 bytes in the lab, against up to 74 kB on 1.10. Less garbage created means less to collect, and fewer collection pauses landing in the middle of a scroll. On TVs with little memory, those pauses are the stutters you can see.

What's new since the alpha

2.0 has had seven releases since the alpha, up to 2.0.6 today. Most of that work came from running it on real hardware, much of it on a Xumo TV. Xumo TVs run WPE WebKit, the browser engine common on RDK-based TVs and set-top boxes.

Smoother frames on WebKit TVs

Faster text, laid out before it's needed

That second change came out of the most interesting bug of the week. On the Xumo TV, one title on the test page dropped a frame on every run: 17 to 18 ms for a 16-glyph title that takes microseconds to lay out. The layout wasn't slow. That title was the 86th layout of the session, the one that made JavaScriptCore decide the layout function was hot enough for its optimizing compiler. On this engine that compile runs on the main thread, inside the frame. On a laptop the same compile takes about 1 ms.

Splitting the function in two only split the compile into more stalls. Moving layout into idle time took that stall from 3 runs out of 3 to none. A laptop profiler will never show you a stall like this, which is why a performance audit starts on the devices you ship to.

Animations that start and move evenly

Both animation fixes came out of a frame-pacing report from a partner team running 2.0.

Faster first screens and steadier images

For framework authors

2.0 also adds the pieces @solidtv/solid needed: TextNode.measure() for flex layouts sized by their text, Node.insertBefore so draw order follows Solid's child order, a text layout cache whose lookups went from up to 0.8 µs and 1 kB of garbage to 0.017 µs and none, and 1.10's read-only clippingRect. In DevTools, every WebGL program now carries the name of the shader it draws.

Upgrading

For apps built on @solidtv/solid, upgrading is a version bump. Install 2.0 with the matching Solid release, which is on npm's next tag:

npm install @solidtv/renderer@^2.0.6 @solidtv/solid@next

Three things to check:

Setting 1.10 2.0
targetFPS 60 Uncapped
boundsMargin 200 on every side [100, 100, 450, 50]
top, right, bottom, left
imageDecodeConcurrency 4 14, and it now caps network requests too
textureProcessingTimeLimit 10 ms 25 ms

The browser floor is still Chrome 38, so 2.0 reaches the same Tizen, webOS, Android TV, Fire TV and set-top box browsers as 1.x.

What's next

From the first design doc to the 2.0.0 release took eight days. A week of production later, the numbers say it was worth it, and I'm excited to keep pushing.

Upgrading a production app?

If you'd like help moving your app to 2.0, or want someone to look at frame pacing on your devices, get in touch.

Planning the move to 2.0?

I help teams move TV apps to SolidTV and get them running fast on real hardware: performance audits, migrations from LightningJS, and commercial support for teams shipping on Tizen, WebOS, Android TV, Fire TV and Apple TV.