sergio
LiveView has me quite excited. The possibility of building a simpler architecture that ultimately leads to better user experience and better developer experience is compelling.
Fly.io + CockroachDB + Elixir + Phoenix LiveView
Anyone out here using LiveView in production today? What’s your experience like?
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New
** (ArgumentError) expected :max_attempts to be a positive integer, got: {:@, [line: 10, column: 19], [{:max_attempts, [line: 10, column:...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex











Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
tj0
Been using Liveview in production since 0.1.0. The cognitive overhead is much lower and I can’t say enough good things about it. Simply put, it made a herculean task of building desktop-like software, merely difficult. That is truly innovation. Fire And Motion – Joel on Software covers my thoughts pretty well on this. While everyone else is busy keeping up with the tech and wasting their time, liveview just works.
Here are some notes:
Yah, what can I say really. Liveview is fantastic.
shd42
I’ve started using LiveView since the 0.13.3.
I’m a one-man shop, having grown quite a bit tired of NodeJS / VueJS endless changes in direction / way to many packages required to make a web app (half of which, only used for development) and a number of other things like testing (i’ve used Mocha and Jest, both of which remain a pain to use IMHO) which all had a part in my decision to go for Elixir/Phoenix/LiveView. Considering the app i’ve moved over is about 75% of my incomes, and a sizeable amount of clients which i all know personally and we’re relying on me to not mess that up, i didn’t take the change lightly (obviously). But it really was all about seriously alleviating the load required to update and maintain my app (and by extension, my happiness in getting up and doing my job which was far from stellar prior to the change) while making sure for my clients that the change would be mostly invisible and/or at least only for the better.
About a year ago (June 2020), i started the rewrite, choosing to learn along the way everything i needed (including LiveView). After all, an actual app where i knew what i had to do, but not really how to do it in my new stack was a good way to learn (and i’ve always done it this way in the past, without much issues so…). I won’t bother everyone discussing everything since it’s about LiveView. 3 months ago, i finally put in production the rewritten version (i use Scalingo) and since then, and i have barely got any issue at all:
handle_infoin stateful components, which makes separating LiveView in multiple parts less easy, or sometimes, not even making much sense. In addition, using non-routable LiveViews has often limitation that come in direct contradiction with the needs, ending up also not being the solution. They’re still good overall, but there’s some things that could be better.phx-page-loadingisn’t great). I ended up using mutation observer to handle user feedback on what’s going on (adding classes manually where they should be, through AlpineJSinit()). It’s not like a big issue, but there’s room for improvements.I’ll resonate with what @tj0 said, LiveView is fantastic
. I know often the discussion is about big companies using the stack you like, but i’ll say that at the very least, for small teams or like in my case, single developer, LiveView seriously ease the amount of work required to make and maintain an app that requires SPA-like stuff. Over a year down the line, i can only say that i’m fully satisfied with my choice and i’m starting to look towards contributing back to the community (still have to get past the damn impostor syndrome, but i’ll get there
).
cnck1387
Hi, do you happen to have a public link to your site so we can check it out?
Also, would you be open to coming on my podcast to chat all about how you built and deployed it? It would be really nice to have a very LV focused episode.
shd42
No, i don’t have any public link (yet). I’ve always relied until now to more conventional (old-school
) ways to get clients (like i said, i know all of my clients personally). It’s probably going to change in the future (the public link, not the personal stuff), but that’s not really a priority.
I’m usually not “comfortable” with things like talking on something like a podcast (not that i ever get the offer to do so), but that’s one way to help the community, so i’ll be down to try. It won’t be right now though, as i’m currently dealing with a lot of stuff (both professional and personal). It should cleared out by the end of the year / beginning of next year, so if you’re still interested by then, i’ll make the room for it
cnck1387
If you want to set a calendar reminder to contact me then sure.
josevalim
Thank you @tj0 and @shd42 for the detailed and precise feedback coming from your dev and prod experiences. I have taken notes on what works and what could improve. If all feedback was written like this, my life would be much easier.
f0rest8
I’ve been using LiveView since 0.14.8 and am currently using the 0.15.7 with Metamorphic in production.
I just relocated, absolutely fried, and am still settling in (working on boxes right now) from my last post, so I may forget some details of how I’m using LV but essentially:
The whole app is LiveView with a few exceptions, like the log in page, but all major features are LiveView based (including the video chat through a WebRTC peer-to-peer mesh architecture). This is expanded from Jesse Herrick’s wonderful blog to include authentication and tie-in more with the specifics of a person’s account on Metamorphic.
I’m using LiveView with ETS to handle in-session, temporary decryption of people’s images (for our Memories feature). I first noticed an incredible amount of latency (more than several seconds worth) on my first pass, but then switched to storing only the decrypted binary in ETS and that’s provided a significant speed boost. Now, the latency appears to mostly be coming from the initial call out to AWS to pull down people’s encrypted files (they are asymmetrically encrypted with people’s password-derived keys so that Amazon or any future cloud provider never receives anything but an encrypted blob — which is then encrypted with their own provided encryption). I’m not currently compressing the ETS tables but it is something I’m considering if I see space issues in the future.
In terms of improving the call out to AWS, I keep coming back to finch but, alas, I’m too fried at the moment to understand how I might leverage it to improve the speed there (but something tells me I will be switching to something like req in the future).
I’ve noticed stateful components for the settings section of the app, which is divided into tabs, have a significant load time but I haven’t had time to test and dig into this more yet.
I supplement LV with AlpineJS (currently a mix of v2 and v3) as noticed on the opening invite page. Alpine is also used for things like dropdowns. Overall that experience has been incredible, and I use it with LiveView to talk to a GenServer for our passphrase generator (which uses the dice strategy from the EFF).
For hooks, I really try to lean away from hooks whenever possible just because it’s so intuitive for me to write only in LV. However, I do use hooks for our Portals’ WebRTC, Stripe payments, and TOTP modal.
As @tj0 notes, Safari often behaves differently and one funny moment of panic came when testing the production site on the road on my mobile phone and discovered that the site wasn’t informing me that I had successfully (or unsuccessfully) confirmed my email via the email link. It turns out that if you enable “Block all cookies” in Safari, it does just that — even the functional ones! Since, I use session cookies through phx_gen_auth, this setting was throwing the site for a loop (but it still didn’t crash). The episode also inspired me to write a short blog piece on Metamorphic’s cookies and turn off “Block all cookies” in Safari.
Another great thing about LV/Elixir - I was running on autoscale for awhile with my hosting provider to scale up and down instances of the app, when I suddenly realized that I hadn’t configured Metamorphic for clustering. Suffice to say, some strange behavior occurred (missing messages) but, again, the app didn’t “crash”. I have since updated and fixed this and we are set to autoscale (things like this occur when programming in between raising a little one).
I’ve also been considering Fly.io, I’m just hesitant to make the headspace to learn the necessary ins and outs (docker, etc) and my hosting provider has also told me that multi-region support is on their todo list. But, again, Fly’s case for LV is extremely compelling and people will be using Metamorphic from around the world.
Weird behavior - typically I notice weird behavior occurring between LV and webhooks. I’m currently noticing that sometimes the server-to-webhook-back-to-server will get out of sync (typically an issue with internet connectivity) and then the client-side will act as if their action wasn’t successful when in fact it was.
Testing - I’m mostly testing only really critical things (payments, authentication/security/encryption, authorization, password generation, major features) at the moment. However, I am performing real-world testing continuously. This is much slower and more cumbersome but it helps me see what it will be like for someone to actually use the app (it also often inspires new ideas or changes to existing things as I see how they look and behave in real-time).
Emails have been incredibly annoying to configure for HTML with Tailwind (using the latest). When I test the built-in HTML preview client with Bamboo the email looks exactly how I want it to look. But, when I perform a real-world test, I notice that my email client is stripping away the HTML and my button is no longer an awesomely styled button but the base HTML. I’ve since opted to just style the emails simply until I can return to figuring out the discrepancy that is occurring.
I’m currently at the early stage of the Early Access phase for launching Metamorphic, so not everything is completely ready yet (I’ve had to settle for 3 main features at launch rather than the current 8 that are on the drawing board).
If you visit the site, I am now taking sign ups and will be slowly rolling out invite emails to people who’ve signed up in the next several months.
But, some things currently working on for Early Access:
It’s also unclear how my ETS strategy for handling in-session, temporary decryption of people’s photos will perform under heavy use. However, I’m currently running on very under-powered production hardware (only 1 cpu) and plan to scale that hardware as the number of people using the service grows.
I’m growing bleary-eyed so I’m going to leave it at that. But, overall, I am definitely all in on LV. It’s such a wonderful programming experience (and looks to be improved with 0.16 from the changelog).
f0rest8
Just to follow up on my own post, I’ve been updating LV to 0.16 and it’s simply amazing!
Without changing any of my existing code I’ve already noticed a significant speed boost to the load time for the settings section of Metamorphic (with the tabbed components) that I mentioned was loading rather slowly previously (speed increase has been seen even on my current Early Access single CPU production environment).
Also, the
~His just incredible! I was playing around with switching back and forth between the~Land~Hand removing HTML tags and seeing the~Hrender an error with a clear and specific solution letting me know that I forgot, for example, end of file reached without closing tag for<div>or missing a closing<h1>tag on line 24. If you’re not using the~Hthen you can make those little typo/omission errors and you won’t be alerted to anything wrong in the browser.I know everyone’s been talking about these kinds of improvements, but to see it in action is simply magnificent.
Thank you again to everyone in the community and on the teams making these frameworks/libraries/languages so amazing.
Developer happiness + experience just got a super boost with LV 0.16, thank you!
outlog
somewhat (/totally) OT - but html emails is a whole special thing since there is not a few browsers, but 90+ different email clients..
so look into using “mjml” https://mjml.io/ - most likely using the mjml_nif GitHub - adoptoposs/mjml_nif: Elixir NIF bindings for the MJML Rust implementation (mrml) · GitHub - there is a guide by @akoutmos here: Crafting Beautiful Emails in Elixir Using MJML-Alex Koutmos | Engineering Blog or more bamboo focused here: https://medium.com/swlh/using-mjml-in-elixir-phoenix-ca27050ff26f
litmus.com used to have a free tier, but maybe give their free trial a run just to get an idea of the complexities involved Automated Email Testing Tools: How to Test Like the Pros
tj0
I posted in August about my Liveview usage. For those interested, I documented the entire project journey from prototype to production in detail.
The project was built over roughly 3 years,consists of 20k lines of elixir, 5k lines of templates, 1k lines of scss, and 300 lines of javascript.
Three Years of Phoenix LiveView and Elixir
Hope it helps someone.