Electron 6 just released, how to use with Phoenix?

https://electronjs.org/blog/electron-6-0

Would love to know if anyone has made an Electron app from your Phoenix app.

I know a lot of people like to hate on Electron. Yes, it’s bloated and the performance is not amazing, but AFAIK there’s nothing out there that can match the ease of building a cross-platform desktop app that just works.

4 Likes

As there is a package for phoenix js, I found it easy to integrate phoenix w/ javascript.

I made some test w/ Electron + React and was quite satisfied by the result.

3 Likes

package for Phoenix js

Wow can you link me to this?

Is it possible to get this to work with LiveView?

1 Like

The package is at https://www.npmjs.com/package/phoenix

LiveView is trying to avoid js, so it would not be the best match… unless your electron application is just a web client.

But You can do better, because You could also have a state manager in the frontend (like Redux, or newly use reducer hook).

Having a state manager on the frontend allows You to transform any data received in whatever You want. For example, I use those data in the frontend w/ THREE.js

LiveView is a way to have the state manager on the backend. But it will mostly communicate in HTML.

Having a state manager both in the backend AND in the frontend looks like a good solution to me, because You can send data on the wire only (JSON) :slight_smile:

3 Likes

This is great.

Well, it makes total sense to have frontend state manager for single-player features. But LiveView is ideal to manage state on backend for multi-player features (e.g. Google Docs).

Now that I think about it, what I need is just a way to publish a desktop app. I want to store state on the client but not manage the state on the client. Could I just publish a shell Electron app, which all it does is act as a PWA (Progressive Web App) so when someone is offline it shows the UI and previous state, then it calls the server/LiveView when it’s actually runnning?

1 Like

I have just updated an old project which is in my public repo, You might have a look…

I don’t think it should be exclusive, I prefer to have a state manager on the backend AND on the frontend.

3 Likes

Will check it out, thanks!

Also, I just came across this, which I think solves my problem: https://developers.google.com/web/progressive-web-apps/desktop

4 Likes