# Elixir/Phoenix Liveview was a mistake

Original: https://swyx.io/liveview-mistake
Published: 2025-05-23

> I made an expensive technical decision on Phoenix Liveview for the Smol Talk webapp about a year ago that I now regret, and am jotting down some notes to self for why.

I made an expensive technical decision on Phoenix Liveview for the Smol Talk webapp about a year ago that I now regret, and am jotting down some notes to self for why.

To be clear this is definitely a skill issue, but also the learning curve was also just not worth it at all (for somebody already fluent in JS/Python).

## What I Did

We needed a [customizable summary pipeline platform](https://www.loom.com/share/34b37822c6784989bafd6fcc5fee6420?sid=75bf3b4c-61b5-46fd-a2b1-7c7fe911df89). I had always admired Elixir and Liveview from afar, and had a friend who was up for building it. So I said yes.

## Why I liked Elixir/LiveView

- I always liked the idea of simple monolith serverside rendering
- Should be fast and easy to render HTML diffs (kinda like React Server Components)
- particularly when a nice integration with the ORM makes CRUD views of fields automatic
- Elixir sounded fault tolerant and fast
- Oban had a good reputation as a job runner

## Reality

### Instability/Slowness

Pages were AWFULLY slow to load.

and about 20? 30?% of page loads failed. I'm pretty sure it's not a database issue, it just is slow as fuck to render a lot of UI.

<img width="941" alt="Image" src="https://github.com/user-attachments/assets/efdf5260-fde3-41fd-b918-59b568011f0e" />

i felt like i was on dialup.

<img width="1423" alt="Image" src="https://github.com/user-attachments/assets/fd9603a8-9d99-4cbc-8755-013d60e98edf" />

### immaturity of ecosystem

we were able to pick the SOTA things for our app. I count 20 out of 36 of our dependencies (55%) being 0.x versions.

<img width="568" alt="Image" src="https://github.com/user-attachments/assets/df06798f-4cfa-449a-825d-5591a0584bef" />

### Couldnt do conditional forms

this is related to our choices for dependencies surely but i wanted some ui elements to come up or be addable, conditional upon some other elements. This cost us a week of fucking around with code before giving up and concluding it wasn't possible without...

<img width="1082" alt="Image" src="https://github.com/user-attachments/assets/a465a600-733f-4dc1-b258-78644011e16d" />

### Adding JS

to have any clientside interactivity you basicaly want JS. LiveView offers some nice ways to pass data into js components but and the moment you write components you want to write more and more until basically you're only using Phoenix as an API backend. so you might as well write a SPA.

### Godawful errors

i would show you these errors but right now the app isn't loading so

<img width="389" alt="Image" src="https://github.com/user-attachments/assets/18c50724-a8a1-48bf-a060-68da4fbaaac0" />


(addendum ok its loading now... and yeah this kind of absolute trash is normal. none of the type safe error handling you'd expect from a sane system.)

<img width="1190" alt="Image" src="https://github.com/user-attachments/assets/9b6b9364-7815-44b9-9dc6-181810257b82" />
