Skip to content
CAI
Software that uses CAICheck a score

swoosh/phoenix_swoosh

47.1

Weak · 18 September 2026

316

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a library that integrates Swoosh with Phoenix to handle email template rendering. It provides flexible configuration for standalone template rendering and custom file format mappings, allowing developers to define how HTML and text bodies are generated. The project focuses on modernizing Elixir compatibility and standardizing code formatting and documentation.

Behavioural changes

Project maintenance and documentation overhaul

This release introduces a \.formatter.exs\ file to standardize code formatting via \mix format\, updates the \.gitignore\ to cover standard Mix/Hex artifacts, and renames \LICENSE.txt\ to \LICENSE.md\. Documentation is significantly expanded with a new \CONTRIBUTING.md\ guide, a detailed \CHANGELOG.md\ adhering to Keep a Changelog standards, and an updated \README.md\ that clarifies installation, usage (including classic and standalone setups), and customization options.

(repo-wide) · high confidence

Removal of legacy Mix.Config usage

The configuration file has been updated to remove the explicit import of the \Mix.Config\ module. This change aligns the project with modern Elixir/Phoenix standards where \Mix.Config\ is no longer required for standard configuration loading, simplifying the setup.

config · high confidence

Support for standalone template rendering and custom format mappings

The \Phoenix.Swoosh\ macro now supports a 'standalone' mode where templates can be rendered without a Phoenix View module by specifying \:template\_root\ (and optionally \:template\_path\ and \:template\_namespace\). Additionally, users can now customize which email body field (\html\_body\ or \text\_body\) is populated by specific file extensions via the new \:formats\ option, replacing the previous hardcoded logic that mapped \.html\/\.htm\/\.xml\ to HTML and all others to text. The \render\_body/3\ function also now accepts a default empty map for assigns.

lib · high confidence

Test coverage

Added test fixtures and coverage for custom template formats and view inclusion

Added test fixtures and updated tests to cover rendering email bodies with custom template extensions (such as .custom, .htm, and .xml) and to verify the new view-included notifier configuration. The test suite now includes scenarios for rendering with and without assigns, applying layouts to these custom formats, and using the \template\_root\ and \template\_namespace\ options for isolated view resolution.

test · high confidence

Dependencies

Phoenix.Swoosh 1.2.1: Modernized dependencies and Elixir 1.11+ support

This release updates the project to version 1.2.1 and raises the minimum Elixir requirement to 1.11. The dependency manifest has been significantly modernized: Swoosh is now pinned to \~\> 1.5, and the project now supports Phoenix 1.8 (optional) alongside Phoenix View 1.0/2.0. Optional HTTP clients have been updated to include Finch (\~\> 0.8) and Hackney (\~\> 1.10), while Credo is updated to \~\> 1.0 and ExDoc to \~\> 0.26. The package metadata has also been enriched with explicit maintainers, license, and changelog links, and documentation generation now includes markdown formatters.

(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 47.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 32
  • Readiness 45
  • Security 75

Changes since last survey

  • 300 commits — 300 feature/other, 0 fixes

By area

  • (root) — 277 commits
  • .github/workflows — 17 commits
  • lib/phoenix_swoosh.ex — 3 commits
  • (repo) — 1 commit
  • .github/dependabot.yml — 1 commit
  • test/fixtures — 1 commit

Notable commits

  • change: --- (#377)
  • change: Add custom extension mapping (#290)
  • change: Add documentation for custom extension mapping (#292)
  • change: Add markdown formatter to docs output (#499)
  • change: Bump credo from 1.5.6 to 1.6.0 (#222)
  • change: Bump credo from 1.6.0 to 1.6.1 (#223)
  • change: Bump credo from 1.6.1 to 1.6.2 (#235)
  • change: Bump credo from 1.6.2 to 1.6.3 (#242)
  • change: Bump credo from 1.6.3 to 1.6.4 (#247)
  • change: Bump credo from 1.6.4 to 1.6.5 (#264)
  • change: Bump credo from 1.6.5 to 1.6.6 (#266)
  • change: Bump credo from 1.6.6 to 1.6.7 (#269)
  • change: Bump credo from 1.6.7 to 1.7.0 (#300)
  • change: Bump credo from 1.7.0 to 1.7.1 (#331)
  • change: Bump credo from 1.7.1 to 1.7.2 (#348)
  • change: Bump credo from 1.7.10 to 1.7.11 (#406)
  • change: Bump credo from 1.7.11 to 1.7.12 (#427)
  • change: Bump credo from 1.7.12 to 1.7.13 (#447)
  • change: Bump credo from 1.7.13 to 1.7.14 (#450)
  • change: Bump credo from 1.7.14 to 1.7.15 (#455)
  • …and 280 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

swoosh/phoenix_swoosh 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 0b20725b844593e86c99f5f5395b7bf75eecc95c — 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.