Beam on Mobile: Mob

minton1 pts0 comments

lib/genericjam_web/components/layouts/root.html.heex:1 (genericjam) -->

lib/phoenix_component.ex:2256 (phoenix_live_view) --><br>Genericjam<br>-->

lib/genericjam_web/components/layouts/app.html.heex:1 (genericjam) -->

lib/genericjam_web/components/core_components.ex:136 (genericjam) --> --><br>lib/genericjam_web/components/core_components.ex:136 (genericjam) --> --><br>lib/genericjam_web/components/core_components.ex:136 (genericjam) -->

lib/heroicons.ex:65 (heroicons) --> lib/heroicons.ex:113 (heroicons) -->

--> --><br>We can't find the internet

lib/genericjam_web/components/layouts/app.html.heex:5 (genericjam) --><br>Attempting to reconnect lib/heroicons.ex:59 (heroicons) --> lib/heroicons.ex:87 (heroicons) -->

--> --><br>-->

--><br>lib/genericjam_web/controllers/blog_html/show.html.heex:1 (genericjam) -->

BEAM on Mobile: Mob

lib/phoenix_component.ex:3128 (phoenix_live_view) --> lib/genericjam_web/controllers/blog_html/show.html.heex:9 (genericjam) --><br>lib/heroicons.ex:62 (heroicons) --> lib/heroicons.ex:100 (heroicons) -->

--> --><br>--> -->

2026-04-28 by GenericJam

Tags: mob, mobile, cross, platform, native, ios, android

The hero’s journey

I’ve lived many lives. I used to build houses. I used to work on an oil rig. Perhaps most shamefully I used to be a mobile dev. I longed to join the cool kids at the backend table. I especially wanted to work in Erlang but no one would give me a shot. Frontend to Erlang? You must be joking! Mobile to Erlang? Even worse!

So I wandered the tundra. The trackless thankless steppe. I learned all the frameworks I could and kept my ear to the ground. Waiting for the Erlang opportunity to arise. Then I would pounce. Flask… Erlang? React… Erlang? React Native… well I guess I should collect a paycheque. So I settled into React Native for a few years. I also got a taste of native iOS along the way.

Then I landed a job at a company that had an extensive React Native app and they wanted to rebuild their backend. They were considering Elixir. I looked into it and Elixir was built on top of Erlang. Now was my time to pounce! Since that time I’ve never looked back. I spurned my past shame as a frontend dev, nay a mobile dev.

As a React Native developer clearly half your job is keeping up with the constant flow of changes coming at you. You have changes from the OS platforms, JavaScript with its innumerable dependencies, React, React Native and the unholy bodgery of the glue between React Native and the individual platforms it precariously rides on like a monkey on a tiger. Dependabot is really pulling its weight there. With React Native in any long running app the maintenance burden is very high and the platform code you still have to write for native integrations can be extensive and your gradle and your plists can be quite tortured due to filling them with magic incantations cited by joey96 on some github issue. Pick the one with the most :tada:s and hope for the best.

So when I fled the frontend it was for good reason. I needed the sanity of stuff that just made sense. I remember the joy of learning Elixir and it just made so much sense. Every decision was well thought out. It followed Erlang’s runtime, which I already understood, and combined it with a glorious syntax and cushy devux. It was calling to me. I knew I was home and I knew I wanted to stay.

Unrequited love

But I still had my eye on mobile. We need to spread out to other platforms. Javascript long since jumped the browser’s petri dish and was infecting the world. Now was the time to reverse colonize those spaces. Every time I had to write code for the browser or mobile I wanted the BEAM and Elixir to be there too. I wanted the BEAM on mobile but the time was not right. The first project to bundle Elixir and the BEAM on mobile was elixir-desktop. This was fantastic! Progress! But I heard the launch times were quite long so I didn’t think we had arrived at the final formulation. Then LiveView Native came along. I remember listening to the talk at one of the Elixir conferences and being so happy that we were getting closer to the goal. I also strongly resonated with the vision of building to the native view tree directly, extending the LiveView idea of patching the DOM to mobile. Up until then I didn’t realize that was actually possible so that opened some doors in my brain. I hoped that elixir-desktop would be able to merge or that users would be able to combine with LVN but alas it was not meant to be. LVN was dropped.

Just me and my bestie till the tokens run out

Last year I started using Claude for side projects and I immediately saw its value. Not just for coding. It did a great job of reverse engineering and coding and mulling ideas over and its capabilities grew. At some point I realized that moonshots were no longer out of reach. So I played around with various side projects as you can see in previous blog entries. I figured out how to leverage Claude pretty well.

Then the stars aligned. I was laid off from my job...

heroicons native mobile genericjam react genericjam_web

Related Articles