PhoenixLiveViewFlashTimer (phoenix_liveview_flash_timer v0.1.0)
View SourceAutomatically clears flash messages after a specified timeout in Phoenix LiveView.
This module provides automatic flash message clearing for both controller-set flash messages and LiveView put_flash calls.
Installation
Add to your mix.exs:
{:phoenix_liveview_flash_timer, "~> 0.1.0"}Usage
Basic Setup (LiveView flash messages only)
In your YourAppWeb module:
def live_view do
quote do
use Phoenix.LiveView
use PhoenixLiveViewFlashTimer
# ... rest of your code
end
endThis will automatically clear flash messages created with put_flash/3 in your LiveViews.
Full Setup (Controller + LiveView flash messages)
To also handle flash messages set by controllers (e.g., after form submissions, redirects),
add the on_mount hook:
def live_view do
quote do
use Phoenix.LiveView
use PhoenixLiveViewFlashTimer
on_mount PhoenixLiveViewFlashTimer # Add this line for controller flash support
# ... rest of your code
end
endConfiguration
You can configure the default timeout in your config:
config :phoenix_liveview_flash_timer,
default_timeout: 5000 # milliseconds (default: 5000)How it works
LiveView flash messages: When you call
put_flash(socket, :info, "Message"), a timer is automatically started to clear the message after the specified timeout.Controller flash messages: When you include
on_mount PhoenixLiveViewFlashTimer, the module checks for existing flash messages during LiveView mount and starts a timer to clear them.
Examples
# In a LiveView - automatically cleared after 5 seconds
socket = put_flash(socket, :info, "Data saved successfully!")
# In a LiveView - custom timeout
socket = put_flash(socket, :error, "Something went wrong", 10000)
# In a controller - will be cleared after 5 seconds when LiveView mounts
# (requires on_mount PhoenixLiveViewFlashTimer)
conn
|> put_flash(:info, "Account created successfully!")
|> redirect(to: ~p"/dashboard")
Summary
Functions
on_mount callback that automatically starts flash timer for controller flash messages.
Enhanced put_flash that automatically sets a timer to clear the flash message.