Introducing LVN Go

LVN Go
Brian Cardarella

CEO & Founder

Brian Cardarella

Over the past few years of developing LiveView Native apps, I’ve come to love to hate Xcode. It’s slow, it’s bloated, it’s inconsistent between installs, its ways to manage project settings is mind-numbing… it’s safe to say I’ve been spoiled by Elixir’s tooling.

Xcode has been difficult for us along the way, I’ll take the majority of the blame because once you start to memorize the infinite number of key incantations to do something you’ve been arguing with ChatGPT over for the past three hours, it does start to kind of make sense, if you really think about it.

I’m not bitter.

But seriously Xcode has some areas where it’s been difficult for us. In part, it is so massive that if we run a workshop and someone doesn’t install the requirements before class, and we all know that is guaranteed to happen, now the class is waiting on a 4.5GB download on whatever compromised bandwidth exists at the workshop space.

I’m not bitter.

Or when we were in release cycle and Xcode’s package manager didn’t compare RC versions properly against other versions, so the wrong version of the library would constantly be installed as we couldn’t just release a range. We had to start setting explicit versions for each release in our installation templates which would then require a re-generation of our templates for every single release candidate.

I’m not bitter.

Or even when Xcode will just randomly select a run destination for a new multiplatform app and there is no known configuration option to set the default run destination for a newly generated multiplatform app and if we could we would have set iPhone because nobody wants to launch into building an Apple Watch app right away.

Maybe I’m a little bitter.

Which is why I’m really happy to announce LVN Go. It is available on the Apple App Store.

LVN Go is our solution for all the above. If you are developing a LiveView Native application skip Xcode and run it directly from a device with LVN Go. You simply point the LVN Go app at your Phoenix server URL. Make sure you change your app’s ip address to allow outside connections. Edit config/dev.exs and change:


--- http: [ip: {127, 0, 0, 1}, port: 4000],
+++ http: [ip: {0, 0, 0, 0}, port: 4000],

Next go to the AppStore (not yet available for Android) and search “LVN Go”. As of this writing we currently have iPhone, iPad, and MacOS builds. If you have Apple Silicon you can run the iPhone and iPad versions on your Mac.

Let’s explore how to use LVN Go.

The Launch Screen

On iPhone and iPad you’ll be requested to access your camera because LVN Go can launch LVN apps via a QR code. I think we may want to turn this off by default and do opt-in for the QR code but for now you can launch this way.

Otherwise if you press the link icon in the lower right-hand corner a modal for a URL string will come up. Provide the full URL and port number of your application. If you are pointing to a production box running on 80 no need to use a port.

On MacOS you’ll be presented with a URL input.

LiveReload

Once you are within a LiveView Native app you will have the benefits of the LiveReload, so go ahead and rapidly build your LVN apps and watch the native app keep up with every single update.

Shake It Up

Sometimes your app can get into a bad state. For example, you may navigate without a back button set up and the app is stuck on that page. Just shake the app to bring up the menu screen and reload your LVN app from root or the current route.

Or maybe you want to exit the application entirely, give the app a shake.

Finally there could be some changes to how you want the app to run. Go ahead and shake the app and select the…

Settings Menu

In the Settings menu you can make some changes to how the application runs as well as see version information and the included compiled addons.

  • Appearance - toggle between light and dark mode or have it follow system settings
  • Dynamic Type - dynamically change the relative size of UI elements on screen
  • Included Addons - the list of all addons compiled with this version of LVN Go
  • About - include version and build information for the LVN Go client.

Limits

If your device running LVN Go is on a different subnet than the LVN server you are running you’ll need to make changes to the network configuration to allow traffic between subnets or guarantee the device and server are on the same subnet.

We did run into a bug where LVN Go can believe it is offline when it is not. There is a state issue when the iPhone can be on a LAN and have access to the server in question but the offline mode screen will still be rendered because the device doesn’t have Internet connectivity.

Future of LVN Go

LVN Go is the first of many developer experience improvements we intend to release over the next few months. Keep an eye out for our tree-sitter syntax highlighters and language server integrations for your favorite editor. As well as developing LVN Go for other platforms.

Newsletter

Stay in the Know

Get the latest news and insights on Elixir, Phoenix, machine learning, product strategy, and more—delivered straight to your inbox.

Narwin holding a press release sheet while opening the DockYard brand kit box