RepoJournal
Elixir & Phoenix

Elixir & Phoenix

Elixir, Phoenix, LiveView, and Ecto - the BEAM web stack

Pick a date

The Wire · Showcase

PHOENIX WEBSOCKETS GET EXPLICIT DISCONNECT CODES, ELIXIR TIGHTENS TYPE TRACKING

By RepoJournal · Filed · About Elixir & Phoenix

Phoenix just made websocket disconnections explicit and predictable, while Elixir's type system got smarter about tracking and fewer false positives.

Phoenix shipped a critical clarity upgrade for websocket disconnect codes [1], finally making the disconnect flow explicit instead of implicit. This came from collaboration with the Bandit maintainers and fixes a long-standing pain point in real-time applications. On the same cycle, Phoenix's phx.gen.auth template system now consistently uses .eex suffix [2], tightening up generator consistency. Tailwind dark mode with system theme detection landed too [3], closing a gap for theme-aware applications.

Over in Elixir core, the type system got measurable smarter. Cascading warnings that used to flood your compile output are now gone [4], thanks to a fix that only emits warnings for missing exports in actually-defined modules. Type tracking for recursive types improved [5], and the compiler now avoids false positives when generating docs [6]. These aren't flashy, but they're the kind of compiler polish that stops making you disable warnings.

LiveView hit a performance wall and removed it. The gather_keys function in Channel was using Enum.at/2 on maps, which is O(n) garbage [7]. The optimized version uses maps.iterator directly and benchmarks at 1.4x to 1.9x faster. Stream_async error messages got fixed too [8], cutting noise in your error reports. Ecto expanded embedded_schema flexibility, allowing non-virtual :any fields [9], which unblocks dynamic JSON payloads in embeds.

Action items

References

  1. [1] Make websocket disconnect codes explicit ↗ phoenixframework/phoenix
  2. [2] Add eex suffix to phx.gen.auth template override test ↗ phoenixframework/phoenix
  3. [3] Ensure Tailwind dark: variant works with system theme ↗ phoenixframework/phoenix
  4. [4] Avoid false positives on cascading warnings elixir-lang/elixir
  5. [5] Wrap quote in a function that will implement recursive types elixir-lang/elixir
  6. [6] Avoid warnings when generating docs elixir-lang/elixir
  7. [7] Optimize gather_keys/2 in Channel to avoid Enum.at/2 on maps ↗ phoenixframework/phoenix_live_view
  8. [8] Fix stream_async return error message ↗ phoenixframework/phoenix_live_view
  9. [9] Ecto.Schema: Allow embedded_schema to have non-virtual :any fields ↗ elixir-ecto/ecto

FAQ

What changed in Elixir & Phoenix on May 23, 2026?
Phoenix just made websocket disconnections explicit and predictable, while Elixir's type system got smarter about tracking and fewer false positives.
What should Elixir & Phoenix teams do about it?
Update Phoenix if you're shipping real-time features - websocket disconnect codes are now explicit and testable • Upgrade LiveView to pick up the 1.4x-1.9x gather_keys speedup • Rebuild against latest Elixir - compiler warnings will drop significantly
Which Elixir & Phoenix repositories shipped on May 23, 2026?
phoenixframework/phoenix, elixir-lang/elixir, phoenixframework/phoenix_live_view, elixir-ecto/ecto

For your repos

The showcase is a teaser.
Your wire is the product.

Same engine. Different stack. Below: what changes when the wire is yours.

Showcase wire

  • 14 famous open source orgs
  • One wire per day
  • Public, generic
  • Read on the web, when you remember

Your wire

  • Up to 1,500 of your repos - orgs, deps, vendors
  • Morning and evening briefs
  • Action items routed to your team
  • Slack delivery, email, breaking-news CVE alerts

Want a hands-on demo first? Ask a current user for an invite link.