We run a midsized LiveView app and deploy multiple times a day and have been having issues with javascript hooks running older versions than the server.
This causes major headaches when fixing bugs because it will sometimes take multiple days before everyone has gotten the updated javascript. Or when a liveview is refactored and no longer responds to events that an old hook sends out, but the old hook stays around and still sends those events.
The only way to get the new version of the javascript / css is to do a full page reload. We are using phx-digest and have wired up a banner shown when static_changed is true but our users tend to ignore it.
Approaches we’ve considered
- Force immediate reload when
static_changed
This would lead to loss of work, as form inputs would be cleared and form recovery wouldn’t have a chance to run. - Intercepting
<.link />clicks and turning them into full page navigations
It will most likely improve the situation somewhat, but there would still be a lot of cases where old javascript is active - Save state to session storage and do a reload
An option that would guarantee we get the newest javascript as fast as possible, but that would introduce a lot more complexity and essentially mean implementing logic that liveview already deals with. I did find this issue that speaks to an intent to implement this in liveview, but it seems it was abandoned in favor of a different approach.
How is everyone dealing with these kinds of issues? Are there any plans to implement more robust automatic reloads on asset changes in liveview?
Appreciate any advice or war stories. Thanks!






















