Skip to content
CAI
Software that uses CAICheck a score

srcrip/live_toast

64.5

Adequate · 18 September 2026

2.5k

lines of production code

Elixir

with TypeScript

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

LiveToast is a Phoenix LiveView library that provides a modular, client-side toast notification system with rich animations and programmatic control. It allows developers to display customizable, persistent, or timed notifications via a TypeScript API and Elixir components, supporting features like stacking, dismissal, and connection state alerts. The system integrates directly with LiveView for seamless server-client communication while offering extensive customization for appearance and behavior.

Features

Initial browser toast API and build tooling setup

This change introduces a new browser-based toast notification system for the assets area, exposing a TypeScript API with \addToast\ for displaying notifications and \createLiveToastHook\ for Phoenix LiveView integration. It also establishes the development environment by adding configuration for the Biome linter/formatter, a Bun lockfile with dependencies like \motion\ and \jsdom\, and TypeScript configuration files.

assets · high confidence

Initial configuration for LiveToast and development tooling

This change introduces the initial configuration file for the project, setting up the Phoenix application to use the Jason JSON library and configuring the logger to run at the debug level with no backends by default. It also defines development-specific build tasks for the \live\_toast\ JavaScript assets using esbuild, generating ESM, CommonJS, and IIFE bundles (including a minified CDN version) to support the LiveToast feature in development environments.

config · high confidence

Initial demo site for LiveToast

The demo application has been added, providing a complete Phoenix LiveView site to showcase LiveToast features. It includes a main LiveView with tabs for getting started, recipes (progress, client-side toasts, dismissal, pausing, conditional rendering, centered positions), and customization options, alongside a 'Dead View' page to demonstrate flash message rendering. The site uses Tailwind CSS for styling, integrates Plausible for privacy-friendly analytics, and exposes a browser JavaScript API to trigger toasts from the client side.

demo · high confidence

Initial project scaffolding and configuration

The repository is initialized with essential configuration files including a Credo linter setup, Docker build and ignore rules, tool versioning for Elixir, Erlang, Node.js, and Bun, and a Justfile for development tasks. The project structure is defined with a comprehensive README, license, changelog, and documentation scripts, establishing the baseline for the LiveToast library.

(repo-wide) · high confidence

Introduction of client-side toast notification system

A new JavaScript module (assets/js/live\_toast) has been added to handle toast notifications directly in the browser. This implementation introduces a client-side API (addToast) allowing applications to trigger toasts with customizable titles, messages, and durations, including support for infinite persistence. The system manages toast stacking, animations via the 'motion' library, and handles dismissal events, providing a more responsive user experience for feedback messages independent of server-side LiveView updates.

assets/js · high confidence

Behavioural changes

LiveToast restructured into modular components with new customization and connection notification features

The library has been refactored from a single file into a modular structure (components.ex, live\_component.ex, utility.ex) to support enhanced toast behavior. Users can now customize toast positions (including center corners), define arbitrary severity levels, and configure custom container classes. Connection state notifications (client/server errors) are now opt-in and customizable, with configurable delays for error flashes. The system supports persistent toast durations, programmatic dismissal, and passing metadata to custom toast components, while maintaining backward compatibility for default styling and behavior.

_lib/live\toast · high confidence

Major API overhaul with composable toast components and programmatic control

The library has been completely restructured from a single-file implementation into a modular LiveComponent-based system, introducing a new public API for managing toast notifications. Users can now send toasts with rich metadata (title, icon, action, custom components) via \send\_toast/3\, which returns a UUID for tracking. This enables programmatic dismissal of specific toasts using \dismiss\_toast/2\ or by integrating the \LiveToast.dismiss/1\ JS command into custom UI elements. The change also supports persistent toasts (via \:infinity\ duration) and allows for full customization of toast appearance through composable Phoenix components, moving away from the previous simple flash-message approach.

lib · high confidence

Rebuilt LiveToast hook with bundled Motion One animations

The \priv/static/live\_toast.cjs.js\ file has been rebuilt as a single CommonJS bundle that includes the \@motionone\ animation library. This change replaces the previous implementation with a new animation engine, providing smoother toast entry/exit transitions and supporting advanced easing functions (cubic-bezier, steps, linear) and animation controls (play, pause, reverse, stop). The bundled hook now exposes \addToast\ for programmatic toast creation and \createLiveToastHook\ for Phoenix LiveView integration, ensuring consistent animation behavior across browsers by falling back to a polyfill when Web Animations API features are unsupported.

priv · high confidence

Test coverage

Added tests for LiveToast hook behavior; Removed obsolete test file for LiveToast.

Dependencies

Initial release of LiveToast 0.11.0 with Elixir/Phoenix dependencies and demo app

This change introduces the initial release of the LiveToast library (version 0.11.0), establishing its core Elixir dependencies including Phoenix 1.7.19, Phoenix LiveView 1.0.0, Ecto 3.11.0, and Gettext 0.26.2. It also adds a new demo application (\demo/\) configured with Phoenix 1.7.19, LiveView 1.0.4, Bandit 1.1, and Tailwind CSS 0.3, alongside updated JavaScript dependencies in \assets/package.json\ such as TypeScript 5.3.3 and Motion 10.17.0.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 64.

Lenses

  • Code Health 99
  • Architecture 98
  • Maturity 59
  • Readiness 54
  • Security 81

Changes since last survey

  • 178 commits — 156 feature/other, 22 fixes

By area

  • (root) — 62 commits
  • (repo) — 34 commits
  • demo/lib — 31 commits
  • lib/live_toast — 15 commits
  • priv/static — 10 commits
  • assets/js — 8 commits
  • lib/live_toast.ex — 5 commits
  • demo/test — 4 commits
  • .github/workflows — 2 commits
  • assets/.gitignore — 1 commit
  • assets/ava.config.js — 1 commit
  • assets/index.d.ts — 1 commit
  • assets/test.js — 1 commit
  • demo/.gitignore — 1 commit
  • demo/mix.exs — 1 commit
  • lib/mix — 1 commit

Notable commits

  • fix: Bug fixing and v0.3
  • fix: Fix Bun dependency setup in CI
  • fix: Fix CI and broken link
  • fix: Fix TypeScript packaging
  • fix: Fix demo deployment
  • fix: Fix documentation link
  • fix: Fix hex release
  • fix: Fix send_toast
  • fix: Fix unnecessary optional parameter
  • fix: Fix unused var
  • fix: Fix weird usage of 'body'
  • fix: Fix: Update deps and use Gettext.Backend
  • fix: Merge pull request #26 from wkirschbaum/fix-typespecs-for-put_toast
  • fix: Merge pull request #39 from Flo0807/fix-docs-source-ref
  • fix: Merge pull request #70 from srcrip/fix-live-toast-client-bundle
  • fix: Merge pull request #77 from srcrip/various-ts-fixes
  • fix: Project now requires LV 1.0+, also fix some tests
  • fix: fix: default classes should try and hide flashes before they come in
  • fix: fix: stream container should not contain flashes
  • fix: fix: update deps and use Gettext.Backend
  • …and 158 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

srcrip/live_toast was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1ef530057eca17f96c37d993886d665ce009faf3 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.