RepoJournal

$ cat elixir/month/2026-09-01.log

Elixir & Phoenix

Elixir & Phoenix

the month in review · September 2026

Phoenix adds CI test summary formatter

By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology

♥

The SummaryFormatter replaces ten minutes of CI dots, while Elixir's typechecker stops crashing on impossible function clauses.

185 commits 141 PRs merged 3 releases 28 briefings covered

all elixir reviews →

Add SummaryFormatter for integration test visibility in CI phoenixframework/phoenix

by rhcarvalho

Integration tests in CI run for roughly 10 minutes emitting only dots, and passing --slowest to mix test forces --trace, which serializes async tests with --max-cases 1 and sets timeout: :infinity. The new formatter gives duration visibility without that tradeoff, so you can find slow tests in CI without giving up parallelism.

Fix functions with impossible clauses typecheck crash elixir-lang/elixir

by AlexGx

Functions whose clauses are all unreachable previously crashed the typechecker; it now returns an uncallable fun(arity) type and keeps existing behavior whenever at least one domain is reachable. The cases covered include anonymous functions, local function captures, cross-module remote captures, and empty domains at multiple arities.

Fix DateTime convert/2 and truncate/2 ignoring custom calendar from map (#15814) elixir-lang/elixir

by Alexander Gubarev

DateTime.convert/2 and truncate/2 silently ignored a custom calendar supplied in the options map. Code that passes a non-ISO calendar through a plain map now gets the calendar it asked for instead of the default.

fix: Test Manifest, parameterized do not override sibling failures elixir-lang/elixir

by PragTob

Parameterized tests were keyed as {module, test} in the test manifest, so a variant that failed first could be overwritten by a later run with different parameters. Failures are now tracked per variant, which means mix test --failed no longer loses a sibling variant.

Fix phx.new.web generator referencing Ecto phoenixframework/phoenix

by rhcarvalho

phx.new.web inherited the generator's default ecto: true because it never passed --no-ecto, producing references to a non-existent <App>.Repo in web-only umbrella projects. The umbrella web generator now emits the bare Phoenix project its docs promise.

Fix phx.new.web generator referencing Ecto (#6808) phoenixframework/phoenix

by Rodolfo Carvalho

The same generator fix, carried by the phoenix_live_view side of the umbrella flow. If you scaffold web-only apps inside an umbrella, regenerate or patch the template rather than hand-editing out the Repo references.

Split integration test suites into focused async modules phoenixframework/phoenix

by rhcarvalho

Phoenix's integration suite was bundled into 7 monolithic test files, and since ExUnit parallelizes across modules but runs tests serially within each, only 7 worker processes could run at startup. Splitting them into focused async modules raises concurrency and cuts wall-clock time in CI.

Harden and speed up phx.server integration test phoenixframework/phoenix

by rhcarvalho

The "generated app boots with mix phx.server" test used sleeps and polling and booted the server via elixir -S mix with an in-band stdin watcher. It now uses deterministic synchronization, which removes the flakiness and the portability assumptions the old approach carried.

$ ls elixir/month/ # the briefings behind this review

Tue Sep 1 Phoenix adds CI-friendly test summary formatter Wed Sep 2 Phoenix phx.new.web drops Ecto by default Thu Sep 3 Elixir reworks test manifest for parameterized failures Fri Sep 4 Elixir date parsing loses guarded helpers Sat Sep 5 Phoenix CI drops Process.sleep blind waits; Elixir fixes Hex version check Sun Sep 6 Elixir fixes unary operator precedence with do-end blocks Mon Sep 7 LiveView flash age 1000x too long, plus IEx autocomplete crash fix Tue Sep 8 LiveView async fixes, Elixir docs gains Wed Sep 9 ExUnit parameterized tests now draw unique random sequences Thu Sep 10 LiveView preserves caret in more input types, Elixir changes type projection and guards Fri Sep 11 ExUnit restores async modules in reverse, OptionParser raises the wrong error Sat Sep 12 Faster Range.disjoint?, LiveUploader trims copies, Ecto filter/2 docs corrected Sun Sep 13 Elixir compiler warns on unused and duplicated aliases Mon Sep 14 Elixir's typechecker stops crashing on non-Elixir structs, Phoenix unifies path validation Tue Sep 15 LiveViewTest keyed-move crash fixed, SVG portals get their namespace Wed Sep 16 Comment nodes land in the Elixir AST, Ecto normalizes DateTime casts to UTC Thu Sep 17 Elixir reverts duplicate alias detection, stale test deps resolve from source records Fri Sep 18 phx.new templates pin a Tailwind CLI that fails on macOS, LiveView starts 1.3.0-dev Sat Sep 19 File stat functions accept open handles, Keyword.drop aligns its membership check Sun Sep 20 Elixir trims Calendar.ISO parsing and weekday math, densifies coverage accounting Mon Sep 21 Calendar.ISO parsing gets faster, coverage summaries drop ETS Tue Sep 22 Calendar.ISO datetime shifts get ~1.5x faster Wed Sep 23 Faster Calendar.ISO shifts, fewer allocations Fri Sep 25 Elixir trims Enum.reverse_slice/3 work, fixes Date.from_gregorian_days/2 Sat Sep 26 Phoenix regenerates Chrome-loadable certs, LiveView handles dangling asset symlinks Sun Sep 27 Inspect.Algebra stops allocating on every break Mon Sep 28 Ecto maps insert_all through the destination schema, Elixir sharpens list subtraction types Wed Sep 30 Phoenix trims the input and flash components

Keep up with Elixir & Phoenix in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

all elixir reviews →