bartblast

bartblast

Creator of Hologram

Hologram v0.9: Realtime and More

Hologram v0.9 is out! The headline is a realtime layer - your server can now push updates to connected clients with no polling: broadcast an action, and Hologram runs the matching handler on every subscribed client, all in pure Elixir. It was the most complex feature shipped to date. The release also brings the with special form, AI assistant support, a new mix holo task, and more.

Thanks to @prehnRA for the with special form, @ankhers for cutting dev-time memory usage, @mward-sudo for a Node.js fix, @0bvim for porting :erlang.binary_to_term/1, and @sodapopcan for optional page/component callbacks.

Thanks to our sponsors for making sustained development possible: Curiosum (Main Sponsor), Erlang Ecosystem Foundation (Milestones Sponsor), and our GitHub sponsors - Innovation Partner: @sheharyarn, Framework Visionaries: @absowoot, Oban, @Lucassifoni, @robertu, Moss Piglet, and all other GitHub sponsors.

Full details in the blog post: Hologram v0.9: Realtime and More

Most Liked

bartblast

bartblast

Creator of Hologram

Good catch - thanks! with was indeed stale: it’s fully supported, so it’s now marked done. Your comment also prompted a wider pass, and the Features and Roadmap pages are both up to date now.

These had already shipped but were still mislabeled, and are now marked done:

  • with Expression
  • JS Interop
  • Essential Stdlib Functions
  • Bitwise Module Operators
  • Exponentiation (**)
  • VS Code Extension
  • Server-Triggered Actions → Pub/Sub

One note on that last one: Server-Triggered Actions was originally scoped as a much simpler feature - just firing actions from server-side code. As I built it out, though, it grew into a full realtime layer, so it ended up shipping as Pub/Sub, which supersedes that narrower idea. More roadmap items coming soon - appreciate the nudge!

bartblast

bartblast

Creator of Hologram

Both can happen, yes. The realtime layer is an abstraction over pub/sub, so it’s fire-and-forget with no ordering guarantee, the same semantics as Phoenix.PubSub or Phoenix.Channels. When you use it, ordering and data consistency are yours to manage.

That’s deliberate, and it’s exactly the gap the upcoming Local-First auto-sync data layer fills (I touched on this briefly in my ElixirConf EU 2026 talk). Instead of broadcasting actions, you subscribe to state, and the framework handles ordering and consistency for you. It will most likely be built on top of this same realtime layer.

The two are complementary, not either-or. Even once auto-sync lands, the raw realtime layer keeps its place for ephemeral, high-frequency events like cursor tracking, typing indicators, or live reactions, where each update supersedes the last and ordering or persistence would just be overhead.

jam

jam

Congrats Bart! This is huge. Also great to see with included.

Where Next?

Popular in News & Updates Top

ConnorRigby
This week we added official Nerves support for the OSD32MP1 line of SOMs. Currently we have tested the osd32mp1-brk breakout board, and ...
New
hugobarauna
Hugging Face is a platform for building, sharing, and collaborating on machine learning applications. This blog post explains how to run...
New
jjcarstens
I know you might be thinking ¬ “Why make another SSH daemon wrapper when there already exists many like sshex and esshd??” Well, grea...
New
DominikWolek
We are launching a cloud-based video streaming platform, which will allow you to use Membrane without all the hassle of maintaining your ...
New
fhunleth
We’ve released Nerves v1.3.0 with support for Elixir 1.7 and Distillery 2.0! We encountered a few bumps over the past week, but it’s look...
New
zachdaniel
Ash 3.1 Released! Major themes Generators! These are just the first entries into a powerful new suite of tools. Check out the generator d...
New
zachdaniel
Hey folks! In order to give the new AshSqlite a trial run and make sure its got some real usage, AshHq’s multi-package search has been re...
New
hugobarauna
This post introduces the new data features in Livebook 0.9: fast data exploration through integration with Explorer, interactive data tab...
New
josevalim
Hi everyone, We have just released Mime v2.0.4 with a potential security fix. Before this version, Mime.extensions("foo/bar+baz") would ...
New
sorenone
We have for you a new release candidate. Take :notes: if you use partitioned queues or make heavy use of Workflows. This is the RC for yo...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127089 1222
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement