Yes, this is possible with LiveView, as long as all pages in your application are LiveView pages. Then you use
live_patch to navigate between them. Then the whole page is never reloaded and the chat will always continue on its actual state.
However, if you want to mix non-LiveViews with LiveViews and have the chat persist, then you need to use a third-party solution, such as Turbolinks itself. Has anyone tried using Turbolinks and PhoenixLiveView together? They may complement each other quite neatly if you have both “dead” and “live” views.
PS: I have edited this post to provide more background.