Flick - Erlang External Term WebSocket transport for Phoenix

I’ve published flick, a small library that replaces JSON with Erlang’s native binary format (ETF) for Phoenix WebSocket connections.

Why ETF? You call :erlang.term_to_binary/1 on any map, list, or atom and send it directly — no custom serialization, no string parsing overhead.

What’s included:

  • Raw WebSock mode - push {:binary, etf_bytes} frames directly, minimal overhead

  • Phoenix Channels mode - Flick.Socket.Serializer swaps the JSON serializer for ETF, keeping full Channels semantics

  • A zero-dependency browser client (flick.js) that decodes ETF frames via window.Flick.decode(event.data)

  • mix flick.install - generates all boilerplate (WebSock module, controller, router route, JS hook) and vendors the pre-built JS asset

{:flick, "~> 0.1"}
mix deps.get && mix flick.install

GitHub:

Hex.pm:

10 Likes