Why I Chose Elixir Phoenix over Rails, Laravel, and Next.js

akarshc.com

135 points

akarshc

4 hours ago


114 comments

mati365 2 hours ago

I implemented CKEditor integrations for Rails, Livewire, Phoenix, and React. I think the best developer experience was with Phoenix - at every step I was surprised by how well thought-out the framework is and how easy it is to build integrations for it. I definitely can’t say the same about Rails or, especially, React with the awful Next.js. For anyone curious: https://github.com/Mati365/ckeditor5-phoenix

As for Livewire - it feels like a simplified copy of Phoenix. In my opinion, it’s less advanced and less intuitive. For example, Livewire components don’t support slots, while Phoenix components handle them without any issues. Slots are critical for clean component composition - without them, you end up with messy, repetitive templates and a lot of unnecessary logic in the components themselves.

When it comes to Next.js, constant router changes and questionable decisions have become a daily routine. There’s no point integrating with something that gets rewritten every week and can’t be trusted to stay stable.

  • dominicrose an hour ago

    PHP (Laravel) + JQuery still works for me in 2025, but I would never use Livewire.

    Using Node.js would hurt productivity but it's more powerful if needed. It may be needed because it has async/await and it has socket.io. It's also possible to use Typescript.

    Next.js can be useful if you need everything (good SEO + highly interactive) but let's be honest how many websites need good SEO and websockets? LinkedIn maybe.

    • mati365 an hour ago

      I'm not so sure Next.js is as SEO-friendly as people claim. The JavaScript bundles are pretty heavy, and the page still needs to hydrate before it becomes fully interactive. There are attempts to speed this up with React Server Components, but the developer experience there is already worse than with Phoenix components.

      Next.js server performance isn’t great either - honestly, it’s pretty bad. Pages don’t feel that fast for users despite all the tricks and optimizations. In my opinion, metrics like LCP and others are much easier to optimize in older, more traditional frameworks. Unless you’re building a full-blown web application, a classic web page will almost always be faster and simpler to deliver without all the Next.js complexity.

      • tracker1 6 minutes ago

        I think if you're going to push closer to the server in a client+server app, I'd probably look towards either HTMX integration options with a preferred backend (there's some cool C# integrations from Jetbrains as an example) or Astro over Next.js ...

        That said, I'm not necessarily a big fan of mixed environments since IMO most web apps can be mostly client side and most websites can be mostly server driven. Either is simpler than the mingling tends to get. That's just my take though.

  • jarek83 26 minutes ago

    I wonder what made it hard for you in Rails.

    • sodapopcan 8 minutes ago

      As a fan of both, the LiveView DX is simpler than Hotwire's (though of course there are trade-offs both ways). With Hotwire you have the think about frames whereas LiveView is more like React where you just change the state and the appropriate diff is patched in without having to think about much else. This is not to say that Hotwire's frames are complex, LiveView is just that much simpler in that regard.

  • ramon156 2 hours ago

    I want to give both of these a try, especially if you say react+next.js is awful. You'd think TS-TS would be well thought out

    • tracker1 4 minutes ago

      If you want to mix server with React and TS, then take a look at Astro or HTMX.

  • Tade0 an hour ago

    I'm curious about your experience with Rails. What specifically caused issues?

    • mati365 an hour ago

      The main issues were related to how JavaScript is integrated and distributed within Rails. In older versions, you have to deal with Sprockets and dependency bundling, which is tricky if you want your integration to work across a wide range of Rails versions.

      In newer versions, import maps are recommended instead. The problem is that import maps enforce ESM, while Sprockets (as far as I know) doesn’t support ESM at all. On top of that, there are compatibility issues with Turbo links, various form libraries, and the limited extensibility of the import map library itself - adding extra dependencies is just painful.

      Installing CKEditor wasn’t straightforward either, so I ended up creating a small DSL to simplify it. But then came another challenge: providing support for custom plugins in a way that would work with every Rails version, even without a bundler.

      All of this is made even harder by the fact that CKEditor is distributed in both cloud and NPM versions, which complicates integration paths further.

      In contrast, Phoenix makes things much simpler. From what I remember, the standard setup uses esbuild, which automatically pulls NPM dependencies from the deps directory - the same place where Elixir libraries are installed. This means you can distribute a package that includes both the Elixir and NPM parts of the editor, without having to manually modify package.json or worry about dependency conflicts.

      • danmaz74 an hour ago
        2 more

        It looks like a lot of these issues are due to the fact that Rails has been around for a long time, has lots of versions, and you wanted to support many versions (Which is commendable, by the way). If you only had to support the latest Rails version, how much harder would it have been than doing the same for Phoenix?

        • mati365 21 minutes ago

          In the latest Rails versions, it’s probably just as easy as in Phoenix. The question is whether, after years of churn in the Rails frontend ecosystem, the core team hasn’t already driven away most developers who might have cared. At this point, few people would use a library that targets the newest Rails versions when most teams treat Rails purely as a backend and handle the frontend with something else.

xutopia 2 hours ago

I love how this article reads more like the individual ignores features and capabilities of other frameworks to then state that the framework he chose is better.

Rails has everything he mentions as an advantage of Phoenix. He's also implying that Rails does not use web sockets to communicate with frontend which is not only wrong it should be evidently wrong to anyone who built a Rails app in the last 3 years.

That's not to say that Phoenix and LiveView aren't phenomenal tools, they are! However what's keeping me in the Rails world is Hotwire Native. I truly feel like a one man army building mobile and web apps in a quick turnaround time.

  • garbthetill 2 hours ago

    Ive only used ruby a handful of times, so my comment might be ignorant. But other than community , what does ruby and ror do better than say elixir & phx, i feel like the latter is leagues ahead simply because nothing can compare to the beam platform for soft real time systems, you have fault tolerance, nifs, actor model , you can have millions of processes running at the same time for cheap, easy to reason about concurrency , fp makes code concise imo, otp, the beam gc doesnt stop the world etc I just think on paper phx is superior thanks to the beam platform

    That being said use what you like and hotwire native sounds cool will give it a try. I also think the author of the blog shouldve went a bit deeper with his points

    • theappsecguy an hour ago

      The gem ecosystem and hiring pool is much better. Otherwise, as raw tech it's worse

  • gregors 2 hours ago

    The problem is the websocket implementation (last time I tested it) sucked. I'm assuming even now if you're doing non-trivial websockets you need to use the node or golang implementation.

    • aantix 31 minutes ago

      You can swap out the ActionCable backend with different providers.

      Redis, postgres. I think there's a couple of commercial offerings.

      solid_cable is a database polling mechanism which can also be swapped in.

  • akarshc an hour ago

    That’s a fair take, rails with hotwire is genuinely powerful, especially with hotwire native. but the post wasn’t about claiming phoenix is better, it’s about how liveview’s model (server driven state, process isolation, lightweight channels) fit a specific use case. both ecosystems solve similar problems differently, rails leans on conventions and progressive enhancement, while phoenix leans on concurrency and fault tolerance from the beam. at the end of the day, it’s less about which is superior and more about which workflow clicks better for what you’re building.

mountainriver 5 minutes ago

In the era of vibe coding just use the fastest servers. I wrote my last api in Rust and it wasn't any harder than anything else, it's wicked fast and stable.

After doing that, it seems a lot of the higher level languages will go away soonish

jherdman 3 hours ago

> But I still needed background jobs, real-time updates, and two-way communication that just works. Those things are possible in Rails and Laravel, but they take a bit more effort to set up.

I'm pretty sure this isn't true at all with Rails. Out of the box you get Solid Queue (jobs), and Solid Cable (real time messaging).

  • nop_slide 2 hours ago

    Yeah def odd, I'm a recent rails convert and SolidQueue is dead simple and is setup out of the box.

    When paired with https://github.com/akodkod/solid-queue-dashboard you get a nice overview.

    • jamiecurle 2 hours ago

      I think what the blog post is getting is OTP and the mystical/but not mystical GenServer / Supervisor/ distributed pattern. It's baked right in there as a core part of the Erlang VM. I think the post glances over the fact that in rails land solid queue may be right there to use (I've not really used rails in over 10 years).

      Thing is with Elixir though, yes the tools are right there, but you do have to take time to understand them. I've been on and off with Elixir since 2016 and I'm currently wrapping up on a fairly complex elixir project with zero UI. (connecting Shopify GraphQL to a series of 3rd party fulfilment providers who use SFTP (gross). So yes, GenServer, Supervisor etc are all right there as first class citizens, but whilst they are relatively simple to start using, you can end up with some horrifically structured code that would have been much better written without the distributed stuff.

      Personally, I prefer Django. Been using it since 2006 and as a person who started off in design but ended up as an engineer, nothing beats Django's template engine (braces for incoming). Django isn't perfect but nothing is. When I have to get something done quick and there's UI work for me to do, I go to Django. When performance or no UI, I go elixir. If someone else is doing the UI, I go phoenix.

  • akarshc 2 hours ago

    All the things are possible in rails as well. it is a beautiful framework, but it is so much easier to use with phoenix. Do try it out

gregors 2 hours ago

As someone who did Rails professionally for a very long time, Phoenix/Elixir is now my default stack.

Possibly the one thing that Rails still does better is generating quick throw away CRUD apps with their generators. Rails is still pretty much flawless in that regard. That beings said, when things mature and complexity grows Phoenix/Elixir is definitely the better all around tool.

  • nasmorn an hour ago

    I think LLM have really closed that gap. Quick throwaway stuff can be generated in a couple of minutes. But phoenix gives me back all the control in cases I care.

  • x0x0 an hour ago

    why / what do you find works better?

dimitrisnl 2 hours ago

The post is mostly about Phoenix LiveView, while the title makes it about the framework.

To be honest one of the reasons I don't like Phoenix is that even if I opt-out of LV in the generators, I still get a lot of LV code.

alberth 2 hours ago

After Elixir announcing being "feature complete" a few years ago, and then Phoenix going down the LiveView path for quite sometime ... I feel like the Phoenix/Elixir stack became less exciting to me.

Hope to be wrong though. Erlang based systems are really interesting and under appreciated.

  • toast0 31 minutes ago

    > I feel like the Phoenix/Elixir stack became less exciting to me.

    Isn't that what's supposed to happen? It's not really fun to build on top of an exciting platform. Boring means if I build it today, it's likely to continue working for a long time. I've always got more to do than time to do it, so having to rebuild everything all the time because of underlying excitement is not by idea of a good time.

  • recroad 2 hours ago

    Can you explain more? What became less exciting and why exactly?

    • alberth 2 hours ago

      It just felt like momentum slowed and/or there was less PR about Elixir/Phoenix.

      But I could be completely wrong (or have the wrong perception).

      Note: not at all suggesting hardwork/progress isn't being made.

      • bargainbin 21 minutes ago

        In your defence, the choice of wording is confusing and that particular announcement did have a sense of “game over”ness to it.

        But the intent was to say that Elixir as it stands from a paradigm perspective is done, but the existing features and runtime will still be improved.

        Which as someone with many years in .NET, I can appreciate. I showed a friend who used C# since the first beta, who’s been hands off for over half a decade now, some modern C# code, and he could not believe what he was seeing.

        Much like I can’t believe what I’m seeing when I review a C# code base and have no idea what flavour du jour the developers decided to write it with and how I have to frame the program in my mind to understand it.

        Compared to Elixir, which just looks like Elixir has always looked, and does what you expect.

      • bluehatbrit 27 minutes ago

        The pace of new things coming to the ecosystem hasn't slowed at all, but it's happening beyond the language itself now.

        Just look at projects like Nx, LiveBook, Explorer, Flame, and Nerves. All are making big steps forward and releasing new and interesting things.

        As someone who uses the stack daily this is really wonderful. In the elixir world you just don't really have the problem where two tools don't work well together because they're built around very different versions of the language and runtime. I can pick up any elixir based tool and knowledge I can slot it into my tool chain or project and it'll just work.

        To me this is even more exciting because it suggests a stable foundation, and makes it easy to adopt new developments. But I appreciate those projects aren't discussed as much on HN.

      • dsiegel2275 an hour ago

        I've been developing full-time in Elixir / Phoenix for the last 6 years. I can assure you, momentum in the ecosystem has not slowed at all since the language was declared to be "feature complete".

cantor_S_drug 2 hours ago

For those who want to experience the strength of Elixir, they should watch all videos of Saša Jurić on Elixir.

  • duckydude20 2 hours ago

    iirc he wrote elixir in action. also. really good.

    • samjowen 2 hours ago

      Indeed, it's a masterclass in technical writing. It's the best programming book I have read.

schultzer 2 hours ago

A lot of people tend to flag Elixir for its size and rightfully so, but the community is trying to punch above it’s weight with SOTA libraries. As an old developer once told me: less is more. https://github.com/elixir-dbvisor/sql

  • nasmorn an hour ago

    OTOH JS is too big for my taste. Everything has 10 implementations with no consensus about doing things. So everyone chooses their own horrible menu. Like an American super market. Or you go full chain restaurant with whatever Vercel pushes currently

magdyks 3 hours ago

My biggest problem with Elixir is the lack of support for 3rd-party libraries and the small community. I love the idea of it, but every time I try to ship a real project in LiveView, I'm left feeling like the community is not that mature. Maybe coming from a Go backend React frontend stack, that might be the case, but maybe for quick CRUD apps, it's great.

  • dpflan 3 hours ago

    Elixir is pretty "nifty", and has Rails feels. I have worked on and seen its performance compared to scaled up Rails application. The BEAM / OTP is a very cool system to program on top of. I think it would be a great underlying system to develop a consciousness for AI systems with its concurrency paradigms and message passing, node connecting, other builtins. I'm not sure if the AI/ML focused Elixir projects like Nx have really taken off, but again, an Elixir based system that accepts numerous connections, passes messages around like exciting synaptic communications between functions... it just seems cool, maybe just on paper...

    • lab14 2 hours ago

      What do you mean "consciousness for AI systems"?

      • dpflan 2 hours ago
        8 more

        When you consider the message passing paradigm, I can envision how that simulates neuro-chemical communication between neurons (now here being functions that do things). So there is a design for communication between functions, then there are memory storage and information retrieval parts of the system, short-term RAM, long-term HD/SSD, databases, cache-systems, where relevant information can be and become manipulated. Long and short running processes, acceptance of fail-fast and that communications can fail and that's just part of software system life (I assume also a similar idea in the human brain, don't you find yourself forgetting something you were just thinking about?). There is then the external part of the system, accepting inputs from the outside.

        • lab14 2 hours ago
          7 more

          The message passing paradigm is called the "Actor Model" and was invented in the 70s IIRC. It's available in most programming languages and it's not something exclusive to Elixir by any means.

          https://en.wikipedia.org/wiki/Actor_model

          • kylecazar an hour ago
            2 more

            Not exclusive to Elixir, but the BEAM was built from the ground-up around Actor for concurrency. Almost all other popular language ecosystems have it bolted on over time (with varying degrees of success) or relegated to a third party library. It's very natural and ergonomic in Elixir, because it's the paradigm of choice in the underlying vm.

            Goroutines probably come closest.

            • dpflan an hour ago

              > It's very natural and ergonomic in Elixir, because it's the paradigm of choice in the underlying vm.

              Thank you, this is the key factor -- a fundamental design decision that influences the foundation.

          • dpflan 2 hours ago
            3 more

            Correct, it's not strictly unique to this. Even Ruby has it, but Ruby does not have BEAM/OTP.

            Smalltalk was a fun language to work with, albeit academically.

            • nasmorn an hour ago
              2 more

              Having built a mediumish soft realtime queue processing solution on rails I gotta say it was not great. If we didn’t kinda grow into it I would not have chosen ruby

              • dpflan 26 minutes ago

                Thanks for sharing. Yeah, I think that's a problem with bolted on functionality. Did you end up building a new version with a different language? What kind of problems did you encounter that made the solution "not great"?

exabrial 3 hours ago

The Elixir live view model to me look like one of the only sane programming models for modern web development right now... Otherwise your best choice still remains to be server side rendering.

  • dismalaf 3 hours ago

    > Otherwise your best choice still remains to be server side rendering.

    ?? Phoenix Live View IS server side rendering...

    • exabrial 2 hours ago

      Yes. I wasn't implying live views are not this, I was trying to say react, vue, angular, svelte, next.js, solid, preact, alpine.js, ember, backbone, lit, mithril, stimulus, knockout, aurelia, polymer, riot, inferno, marko, dojo have a terrible programming model and anything with server side templates is a vast improvement.

    • azundo 2 hours ago

      I think they more specifically mean server side rendering of react components vs an SPA.

rkangel 2 hours ago

Oban is great, but for most cases you don't need it. In languages with a less good concurrency model we are used to needing some form of library or system to manage "background jobs", but in Elixir you can just spin up some GenServers under a supervisor to do work. Start there and only use Oban if there's some form of consistency/resumability guarantee that you need.

  • cultofmetatron 2 hours ago

    > Oban is great, but for most cases you don't need it.

    7 years in on an elixir startup that has well over a thousand active paid accounts using our system every day to run critical businesses. I have to politely disagree.

    USE OBAN from day one for any kind of background jobs. do not trust genservers. they lose their state if a pod goes. There's no retry logic built in.

    > Start there and only use Oban if there's some form of consistency/resumability guarantee that you need.

    oban is easy enough to integrate. it takes like 10 min of your time and you get a LOT out of the box. use genservers if you're running ephemeral servers but if you are creating background tasks, absolutely use oban for anything you plan to put on production.

    Oban is such an easy value proposition to justify. consider it as important to learn as core phoenix

  • parthdesai an hour ago

    With GenServers, what happens if you pod/machine crashes? You lose all the unprocessed jobs. Oban gives you safe retries, and guarantees consistency. If you're using a relational DB, I would infact suggest to start with Oban, and then take a look at the jobs and see if you are okay with losing jobs and move to GenServers.

  • itbeho 2 hours ago

    I haven't found Oban difficult to work with and it has the added benefit of ensuring your jobs are run only once. There is also the cron functionality that I find really useful for scheduling.

andai 3 hours ago

Interesting article, but I had to scroll all the way to the bottom to find what you actually built. I consider this important information, because the right tool for the job will depend on what the job actually is!

(Although I must say the advantages you listed — a strong compiler, concurrency, reliability — do sound universally good.)

It would have been interesting to see the specific problems you had when building specific features, and how the unique advantages of this stack helped you solve them.

tr888 2 hours ago

Not knocking the choice but:

> I still needed background jobs, real-time updates, and two-way communication that just works. Those things are possible in Rails and Laravel, but they take a bit more effort to set up.

These all have first class support in Laravel out the box.

  • agos 2 hours ago

    do real time updates and two way communication work out of the box with a cluster as well?

phplovesong 3 hours ago

Anything PHP and you going to have bad time once you need concurrency. This time will come sooner or later.

brap 2 hours ago

Doesn’t the LV approach suffer from latency issues?

If I understand correctly all state is managed by the server, which means even the most trivial UI interaction needs a roundtrip. Not to mention the cost of managing the state and connection of every client. So how does that work in practice?

  • akarshc 2 hours ago

    latency is minimal because liveview sends only dom diffs, not full page updates. most interactions feel instant. each connection runs as a lightweight beam process, so managing per-user state scales efficiently. for very high-frequency ui updates, some client-side js may still be needed, but for forms, lists, modals, and live updates, liveview is smooth and responsive.

    • asa400 an hour ago

      The size of the diff and the latency of the underlying transport layer are independent. If your user in NY clicks a button that has to go to your server in SF, you pay for that ping both NY->SF and SF—>NY for the reply.

      Same goes for whether they’re on some flakey mobile connection in a car or on a train.

      It’s also super easy to accidentally send a ton of data down the wire on component mount. I worked on a massive LiveView app at a company you’ve heard of and these kinds of issues were a problem the whole time.

      You also give up the standard stateless HTTP request/response model when you go with LiveView. This is not necessarily bad, but people should be aware that they’re turning their stateless web tier into a stateful web tier. It’s an entirely different model (and in my opinion, more challenging).

      LiveView is cool technology but I don’t want people to overlook the fact that it has some sharp edges you have to be aware of when building large products.

  • lawn an hour ago

    In practice it's mostly fine actually.

    But yes, for interactive elements it's not optimal. They have some JS helpers for simple things but you may need to drop down to JavaScript hooks yourself if you want do better.

    I've been playing around with Hologram, which transpiles Elixir to JavaScript. It's very early days but it has the potential to be a much better solution than LiveView.

    https://hologram.page/

fareesh an hour ago

liveview feels a bit too magical

client disconnects, state desyncs, then reconnects, then liveview figures out via crdt and other things how to accurately diff the state

feels like i have to trust it too much - i'd have a lot more confidence if people were vocal about how they are running it at scale, battle-tested etc. etc.

shopify is straight up yolo running rails edge, which is a crazy endorsement

jbverschoor 3 hours ago

Until you realize you're reimplementing Rails :)

  • ch4s3 an hour ago

    Having done both for years, I can say confidently that you can use Phoenix without recreating Rails. The differences are important, and IMO Ecto is a much better approach to interacting with a database than ActiveRecord. I've also never seen a bug in my application due to upgrading Ecto, and I definitely can't say that about ActiveRecord.

dev_l1x_be an hour ago

These "why I chose articles" can be summed up adding: because I like it more and I cherry picked some facts for justification.

mcdow 2 hours ago

I really want to choose Phoenix, but I can't get over the fact that LiveView is front-and-center. The whole web-socket model just seems so brittle to me.

  • lawn an hour ago

    Although I agree that LiveView sucks up too much air in the ecosystem, you can just ignore that and develop web apps the standard ways of you want.

    • mcdow 10 minutes ago

      Oh ok. Is it still worth learning without LiveView? E.g. in my case I’m much more proficient in Python. Is it worth the jump, over something like Django?

Jnr 2 hours ago

All good, but did you know that Next.js is a full stack framework? You can have backend and frontend in the same code base. You don't need Laravel if you use Next.

  • rvitorper 2 hours ago

    Next.js is still missing lots of backend stuff. Background jobs, cron jobs, queues, etc.

  • FredPret 2 hours ago

    BEAM / Erlang / OTP / Elixir feels different:

    - no JS (well a tiny bit ships with Phoenix but I never have to look at it), no NPM, nothing that breaks every week

    - the whole system lends itself to executing on multiple cores

    - GenServers BEAM processes in general are amazing

  • pier25 2 hours ago

    > You don't need Laravel if you use Next

    But you do need to solve a lot of stuff that Laravel already solves for you.

jonathan920 2 hours ago

What matter most is having enough code out there for ai model to learn and study it so people can build with it.

  • benzible an hour ago

    Chris McCord directly addresses this in his recent ElixirConf talk. There's a threshold amount of training data needed for LLMs to work well, and Elixir more than clears it. Beyond that threshold, having more data doesn't make a tremendous difference. This means the "frustration gap" for newcomers essentially disappears - people who heard "Elixir is good" can now just ask an LLM to build something and start immediately, easing their way into understanding functional programming paradigms in order to be productive. I use Claude Code daily for Elixir development and it understands the language perfectly. The real strategic advantage is that while other ecosystems scramble to solve agent orchestration problems, Elixir/OTP already solved them decades ago. Lots more here: https://www.youtube.com/watch?v=6fj2u6Vm42E&t=1321s

nowaymo6237 an hour ago

As much as I love node and typescript i am forever bummed it never achieved a railsy or Laravellian framework

  • purplerabbit an hour ago

    Have you checked out t3 stack? Curious which pieces are missing from that that you'd deem critical

righthand 3 hours ago

I am curious how much longer NextJS will last considering it is a lock-in vehicle for Vercel.

However as far back as I can recall it’s shift onto the dev stack was less about “is it a good framework” and more about “this framework can help Product org prototype faster”.

With the advent of Llms, will Product org even care about the dev speed for prototyping?

  • agos an hour ago

    the sentiment around NextJS is terrible, I have rarely seen something go from "oh this might be cool" to "stop pushing this badly engineering crap on me" so quickly. Yes, it's widely used and that's to be expected given the amount of money spent in promoting it, but it's not loved by any mean and I see this as a fatal flaw that they'll have to reckon with sooner or later. It's so bad that it worsened React's reputation by association - React already had some issues to care about, but they went in Next's direction, and people have noticed

ninetyninenine 2 hours ago

I can see why elixir over rails but do you guys know about type checking?

guywithahat 2 hours ago

One benefit i found over rails was just some of the libraries were more modern. I'm not a backend developer, so maybe I'm just not skilled enough to know how to do these things, but I found rails libraries tended to be dated and missing more modern features.

Specifically I wanted to run both the API and website on the same server (since it was a small company), and with Rails the gem Devise didn't natively support both and while rodauth claimed to support both I couldn't get the build flag to work. With phoenix it just worked out of the box with the most popular libraries, allowing me to move on without becoming an expert in backend frameworks. I agree with most everything else the author said too, specifically about it being more performant and liveview allowing me to build more dynamic websites easily.

  • gregors 2 hours ago

    A lot of ruby gems have definitely seemed to suffer from brain drain the last few years.

    It's worth noting that the creator of Elixir was also an author of Devise.

  • dismalaf 2 hours ago

    > the gem Devise didn't natively support both

    Sounds like a Devise problem.

    • jrochkind1 2 hours ago

      Sounds like you're saying it sounds like a Devise problem.

mbesto 2 hours ago

Great. Now tell me how you plan to scale a dev team who all know Elixir?

  • akarshc an hour ago

    I guess hiring a developer who knows rails or even laravel can easily pick up with phoenix.

  • sph 2 hours ago

    If the only metric you care about is "scaling a dev team", use JavaScript. You're welcome.

    • nasmorn 16 minutes ago

      I am not even sure that is true. Only if your main criteria is available resumes where the programming language is listed at all. JS has probably upper 90% there

  • agos 2 hours ago

    by hiring people without the expectation to be already proficient in it, as long as they are willing and capable of learning it in a reasonable time

  • lawn an hour ago

    1. Hire good developers

    2. Teach them Elixir

    3. Profit

dismalaf 3 hours ago

> It’s way ahead of both Rails Hotwire and Laravel Livewire. LiveView communicates through WebSockets

Where's the facepalm emoji?

Rails Hotwire uses websockets... The research done here seems to be so basic it literally missed something written on hotwired.dev's landing page, albeit it's mentioned far down enough you have to scroll a teeny tiny bit (half a page on my screen)...

Rails also has background jobs and all the other things considering Phoenix is modeled after Rails.

  • akarshc 2 hours ago

    You’re right. Hotwire (specifically Turbo Streams) does use WebSockets under the hood when available. And yes, Rails has background jobs, ActiveJob, and other robust primitives that Phoenix was inspired by.

    That said, the key difference is not whether both use WebSockets, but how deeply integrated and unified the real-time model is in Phoenix. LiveView is not a separate layer bolted onto traditional Rails views. It is part of the core rendering lifecycle. Every UI update, state diff, and event is handled natively within the same process, leveraging the BEAM’s concurrency and fault-tolerance.

    In Rails, Hotwire sits on top of the request–response model, giving you partial reactivity without rearchitecting how views work. It is elegant, but still a composition of multiple layers (Turbo, Stimulus, ActionCable).

    Phoenix LiveView, on the other hand, was designed from the ground up around real-time stateful components, which leads to fewer moving parts, no client-side JS framework to maintain, and native process isolation per connected user.

    So while they share concepts, the philosophy and architecture diverge. LiveView feels closer to a full reactive runtime, not just HTML over the wire.

    P.S: I do love rails

  • sodapopcan 2 hours ago

    Ya, this was not worded well at all (and more likely just not well researched (in the article, I mean). The difference between hotwire/livewire and LiveView is that with LiveView you get a "live" connection to persistence BEAM process which comes with benefits like not having to rebuild things (like the current user) on each request and storing ephemeral state on the server (if you need it). Of course there are trade off like PWAs are not fun in LiveView (you likely just wouldn't do it, I never have).

    • dismalaf 2 hours ago

      > "live" connection to persistence BEAM process

      This particular bit does seem interesting and would make sense to take advantage of the BEAM's cheap green threads. Couldn't find any info on LiveView's GitHub landing page nor the Phoenix website (haven't dug too much), do you happen to have a link?

      • sodapopcan 2 hours ago

        The guides are the best place to learn about LiveView itself. Since guides are always included as part of the docs (reference docs) people always tend to shy away from them (not saying you are, it's just a thing with people it seems):

        https://hexdocs.pm/phoenix_live_view/

      • sodapopcan an hour ago

        Oh also wanted to point out that while there has been an ongoing effort for LiveView Native, it is not there yet (I actually haven't heard anyone talking about it in quite a while). I'm not too in the Rails world so I don't know how good Hotwire Native is, but I assume it's much further along than LV Native, so that's a big thing if you need that. No idea about LiveWire as I've never even been in the Laravel world.

  • dpflan 3 hours ago

    The author is a self-professed front-end developer according to LinkedIn, which may be influencing experience with backend systems and functionality. I was wondering really why this terse post is sky-rocketing to #1 today, hopefully we get some good discussion from the community.

    • grim_io 2 hours ago

      Any kind of comparison of popular frameworks activates all the dev nourons in my monkey brain.

  • Rover222 3 hours ago

    Yeah I feel like most devs still think of rails as it was about... 8 years ago.

    • nasmorn 15 minutes ago

      Yeah it has become much more solid recently