Welcome to GigaElixir Gazette, your 5-minute digest of Elixir ecosystem news that actually matters.

This week brings LiveFlow's interactive flow editor, FusionFlow's workflow engine, critical OTP security patches, and a clever approach to PDF generation that ditches the Chrome dependency. Plus a real-time query engine that's actually interesting.

. WEEKLY PICKS .

🌊 LiveFlow Ships Interactive Flow Diagrams Without Writing JavaScript

Zero-JS flow diagrams native to Phoenix LiveView just dropped. Drag nodes, customize with LiveView components, auto-layout via ELK-all server-rendered. Built because existing solutions forced you into React Flow or similar client-heavy libraries. Early stage but production-ready architecture: LiveView handles state, ELK handles graph layout, no custom JS to maintain. The BEAM's process model maps naturally to interactive diagrams - each node could be a GenServer if you wanted. Check the live demo to see what "no JavaScript" actually means in 2025.

⚡ OTP 29 RC1 Lands Native Records and Multi-Value Comprehensions

First release candidate for OTP 29 ships with EEP-79 native records-actual data types, not tuple hacks with macro sugar. Still experimental, but finally addressing Erlang's oldest lie. Multi-valued comprehensions (EEP-78) let you emit multiple values per iteration: `[-I, I || I <- [1,2,3]]` produces `[-1,1,-2,2,-3,3]`. New `is_integer/3` guard BIF checks range in one call. Breaking change: current directory moved to end of code path-if you relied on `.` being first, your deploys will break. JIT improvements for little-endian binary matching. Test it now before the final release.

📄 Generate PDFs and Screenshots With One HTTP Call, No Subprocess Hell

Stop shelling out to wkhtmltopdf binaries or supervising Puppeteer subprocesses. PageBolt API takes a URL or HTML string, returns binary PNG or PDF-works with Req or HTTPoison. The architecture is obvious: HTTP request goes out, binary comes back, you pipe it to the client. No Chrome instances to babysit, no Node.js runtime to coordinate with OTP supervision trees. Phoenix controller example shows rendering a view to string, posting to the API, streaming the PDF response. This is how you integrate external services in Elixir: stateless HTTP, not stateful subprocesses.

🔀 FusionFlow: Visual Workflow Engine Built for BEAM Concurrency

Open-source n8n alternative designed around BEAM's process model from day one. Node-based workflow builder where each node could be a GenServer, each connection a message. Supports Python integration for teams that need both ecosystems. The pitch: visual workflow tools usually bolt concurrency on later; this one assumes distributed execution from the start. Early stage, actively seeking contributors. If you've ever tried to make Temporal or Airflow feel natural in Elixir, this is the alternative. Repository and Discord linked for anyone who wants to shape the architecture.

🔥 Nexus Kairos: Real-Time Query Engine Streaming PostgreSQL WAL Over Phoenix Channels

Subscribe to SQL queries and get live updates when matching rows change. Debezium captures WAL events, Phoenix channels push them to clients. Architecture: register query, server stores it in-memory, WAL event triggers topic matching, query re-executes if conditions match, result broadcasts to subscribers. Benchmarks: 10K idle connections on 1GB/1CPU, 100K messages/sec to 5K users with 50ms latency (2-second batching). Also works as standard WebSocket server with JWT auth. Supports PostgreSQL and MySQL now, SQLite and SQL Server next. This is what happens when you build real-time features assuming the BEAM instead of fighting it.

💡 Pro Tip

Stop Virtualizing Your Dropdowns - Let the Server Filter Instead

Most developers hit the combobox wall around 500 items and immediately reach for debouncing, virtualization libraries, or worse, pagination that breaks the user experience.

The Corex library demonstrates a cleaner architectural pattern: keep the rendering logic client-side where it belongs, but shift data ownership to the server. The key insight is recognizing that client-side filtering and client-side rendering are separate concerns.

You don't need to abandon LiveView's strengths just because your dataset grew. Disable the component's built-in filtering, wire up the input change event to your LiveView process, and let your server query the full dataset with proper indexes.

The component still handles all the accessibility, keyboard navigation, and ARIA attributes-you're just feeding it a smaller, pre-filtered list on every keystroke.

This pattern scales to datasets of any size because you're leveraging what each layer does best. The browser handles instant DOM updates and user interactions. Your Elixir process handles efficient database queries with proper indexes.

No JavaScript bundling bloat, no complex virtualization logic, no debouncing hacks that make the UI feel sluggish. The Corex demo proves the concept with 9000+ airports across 250 cities, all searchable with zero client-side performance degradation.

Built on Zag.js for accessibility compliance, it shows that proper architecture beats performance hacks every time. When your combobox starts choking, don't reach for a new library; instead, rethink which layer owns the data.

Remember:

  • Separate client-side rendering from client-side filtering - they're different concerns.

  • Disable component filtering and wire input changes to LiveView for server-side queries.

  • Keep rendering client-side for instant UI updates while the server handles dataset queries.

  • Scale to any dataset size by leveraging proper database indexes instead of JavaScript virtualization libraries.

Stay opinionated, stay building.

Dive into the LiveFlow interactive demo and see if visual programming finally makes sense in LiveView.

. TIRED OF DEVOPS HEADACHES? .

Deploy your next Elixir app hassle-free with Gigalixir and focus more on coding, less on ops.

We're specifically designed to support all the features that make Elixir special, so you can keep building amazing things without becoming a DevOps expert.

See you next week,

Michael

P.S. Forward this to a friend who loves Elixir as much as you do 💜

Keep Reading