Corex - Accessible and unstyled UI Phoenix components

Corex 0.1.0 is out

After many alpha/beta versions and even more mistakes, the first stable release of Corex is on Hex today.


0.1.0 is a promise


{:corex, "~> 0.1.0"}

Patch releases (0.1.1, 0.1.2, …) are safe to pull anytime.
mix deps.update corex will not surprise you.
If anything has to break, it goes in 0.2.0 or higher, never in a patch, with a full upgrade guide and a detailed changelog entry on the day.
You choose when to bump. I do not choose for you.


What sits underneath that promise

Four separate test suites, all required for any PR:

  • mix test in the main library: unit tests for every component, doc parity check, registry completeness, translation coverage, hooks export contract, component spec snapshots. 90% coverage threshold enforced by ExCoveralls.

  • E2E in the e2e/ Phoenix app: every component rendered in a real LiveView, with axe-core a11y assertions on every documented route, plus form submission and controlled-mode tests.

  • Installer in installer/: corex_new generates apps with and without --design, --mode, --theme, --lang, --mcp, --designex, and the generated apps are compiled and asserted on.

  • Integration in integration_test/: a full mix corex.new run, on multiple combinations of options, including a database-backed scenario.

All four matrices run on every PR, across three OTP and Elixir combinations:

OTP Elixir
26.2.5 1.17.3
27.3 1.18.4
28.0.1 1.18.4

How fast is Corex ?

I needed a stress test that did not feel like a benchmark. So I built a Tetris game.

The 10x18 board is real Corex checkboxes. 180 accessible checkbox hooks on screen, all running the same Zag machine as the single checkbox in your form. BEM modifiers pick the piece color. The engine drives cells through the Checkbox client API so each frame is not a LiveView round trip.

What still goes through the server: a GenServer session per game for score, Phoenix Presence for who is playing or watching, a persisted top-10 leaderboard, and a replay route for qualifying runs.

Play is instant. Records are server-owned.

Play it: Tetrex · Elixir Phoenix Framework UI Library

If you ever wondered whether Corex hooks keep up when state changes fast and often, Tetrex is the answer at the tip of your fingers.


A star on the GitHub repo helps more than you might think :folded_hands:

Happy coding.

4 Likes