September Update
Want to start using StoryTime with your team? Send us a message at [email protected].
Returning to Browser Tabs
The biggest change to StoryTime this month should be mostly invisible. We upgraded Phoenix itself and several websocket-related libraries to the latest versions. This was triggered by investigations into problems re-establishing the LiveView connection when returning to backgrounded tabs, particularly in Safari — the latest version contains some bug fixes for what are at least similar problems.
We spent a while investigating this but we’re still not exactly sure what’s happening. We know that the LiveView client is attempting to reconnect with a LiveView that no longer exists and gets errors about the PubSub topic being closed, but we don’t understand yet why the client indefinitely disconnected from the server in this way and can’t refresh itself on its own. We suspect right now that it has to do with the particular way Safari puts tabs to sleep — it’s quite aggressive about saving battery life compared to the other major browsers, and the process isn’t entirely documented. But it looks like there might be a couple of other things hiding in there, things not necessarily specific to Safari.
Last minute update to this!
Jesse found this video from ElixirConf EU ‘25 that speaks to some of our reconnection issues. We’re going to try some of the techniques here. Thanks to Giovanni (the presenter) for sharing this with the community. This will also make ongoing Coby’s UI explorations more viable.
Money slide:

A Pile of Small Improvements
When you create a new story in drafts, drafts now scrolls down to the bottom, so you can see your new draft immediately
Coby fixed an extremely irritating bug where the border highlight on the description field didn’t show correctly. Because “editing a description” is such a common action in the app this reduces perceived jank levels substantially.
fixed an issue where the “scroll-to” flash wasn’t fading from date markers
you can now start typing right away after you switch from drafts to search (or back), the cursor will already be in the input field, so you don’t have to click on it
trying to make or edit a story with a long title (more than 255 characters) now truncates the title rather than crashing the entire LiveView
clicking multiple times in search will no longer cause stories to jitter/jump
our TLS certificate is updated! (and our DNS is now configured correctly so that this will happen automatically from now on)
we now show whether the LiveSocket connection has been made by longpoll or websocket. This is mostly to improve our own understanding/intuition about the LiveSocket; which transport people are on might be related to those tab reconnect problems.
Coby also built several large exploratory spikes this month, sketching out ideas for how we might use multiple columns.

Felt cute. Might Delete.
In Progress
Sometime next month you should be able to automatically sign up for (the free, single-user version of) StoryTime — you’ll no longer have to wait for us to create an account after signing up for the newsletter. At which point, we're going to put some real effort into getting new people into the tool.