bartblast

bartblast

Creator of Hologram

🎉 Hologram - An Isomorphic Elixir Web Framework is Here!

Hey Elixir community! :waving_hand:

First, I owe you all an apology. There’s a running joke among my friends that Hologram is like nuclear fusion or fully autonomous Tesla cars - always “coming very soon™” :sweat_smile:. While I’ve been telling many of you earlier dates, life had other plans.

I want to be transparent with you - the past two years have been incredibly challenging for me health-wise. I went through three surgeries, and from January to July, I was bedridden and unable to walk. It completely turned my life and work upside down. But I’m back now, stronger than ever, and ready to finally share Hologram with you!

What’s Hologram?

Hologram is an isomorphic web framework that runs as your frontend layer in Elixir projects. While it requires Phoenix to run, you can use it with other backend solutions like Ash (HASH stack, anyone? :wink:). What makes it special? I’ve rebuilt it from the ground up with the ambitious goal of supporting 100% of Elixir syntax eventually.

Current Requirements

  • Elixir 1.13.4 - 1.17.3
  • OTP 22.3 - 27.1

(Other versions might work too, but they haven’t been tested yet)

Let’s Talk About the Current State

I want to be upfront about some current limitations and quirks:

  1. While we don’t have 100% Elixir syntax coverage yet, what’s implemented lets you fully experience Hologram’s programming model.
  2. Live reloading is a bit moody right now - if you run into issues, try restarting the server or deleting the _build directory.
  3. Bundle sizes are currently larger than they’ll eventually be. The transpiled code is intentionally verbose for easier debugging.
  4. Compilation is taking its time because everything recompiles on any change. We had incremental compilation before, but I temporarily removed it for better debugging.
  5. Rendering is currently slower than planned due to full page rerenders on component state changes and a temporary bitstring implementation (yes, we’re using integer arrays for bits right now :sweat_smile:).

What’s Next?

I’m working on Hologram full-time for the next couple of months, focusing on:

  • Addressing all the limitations mentioned above
  • Implementing cookies and session support
  • Porting the remaining Erlang functions to JS
  • Adding tons of optimizations

I believe we’ll be production-ready in a few months. I’ve spent the past months sharpening the saw, and now I’m all in!

How Can You Help?

The best help right now would be:

  • Play with Hologram and report any bugs you find
  • Share your feedback and experiences
  • Stay tuned for coding tasks if you’d like to contribute directly

Got questions? Create a topic in our Hologram Forum - I’m there daily, and your questions will help shape the documentation!

New Website! :artist_palette:

Check out the new Hologram website! (Desktop users, you might want to disable f.lux or similar tools for an hour to get the full experience :wink:)

Special Thanks :heart:

A massive thank you to everyone who reached out, showed interest, and cheered me on during this journey. And the most special thanks goes to Emilia :purple_heart: - without you, I don’t know how I would have made it through those bedridden months. You’re amazing!

Spread the Word!

If you’re excited about Hologram, please share this announcement with your network! Let’s get more eyes on this project and build something amazing together.

Let’s make web development in Elixir even more awesome! :rocket:


P.S. Remember, this is just the beginning. The current quirks will be resolved soon, and I can’t wait to see what you’ll build with Hologram!


GitHub repo: GitHub - bartblast/hologram: Full stack Elixir web framework that intelligently transpiles Elixir client-side code to JavaScript

Website: https://hologram.page/

Most Liked

zachdaniel

zachdaniel

Creator of Ash

Setup was easy, seems pretty clear how one might leverage Ash inside of commands :slight_smile:

No notes really :smile: Wish I had a bit more time to tinker, but I don’t see any challenges to folks using Ash with Hologram as it stands now.

At some point I think a super power might be declarative modeling data sources for pages, and how commands affect that data. I’ve got some ideas for a “data pipeline” concept that might slot well into Hologram some day :smile:

bartblast

bartblast

Creator of Hologram

Thank you so much, @jam! :blush:

  1. The rest of the documentation is in progress, and I’m thrilled to share that the brand new Actions docs page is now live: Actions. It covers how actions work in various scenarios, and I’ll be finishing the Commands doc page soon as well.

  2. Noted! I’ll definitely consider adding some simple app examples like a todo app or a basic chat to help illustrate the framework’s capabilities.

  3. Hologram features a Context API and will include something akin to LiveView’s sticky components. Additionally, components can access session, cookies, database, filesystem, etc., during the initial server render. Given this, do you still see a need for a global state on the client-side?

  4. Absolutely! I plan to provide wrappers for Web APIs in Hologram. Regarding client-side databases, I envision a solution using indexedDB underneath that can automatically sync with the server database when online, allowing for offline work as well. The ultimate goal of Hologram is to enable a single codebase that can be deployed across multiple platforms: web, mobile and desktop.

AstonJ

AstonJ

Congrats on the launch Bart! :partying_face:

It’s great to see the Elixir ecosystem expanding, and in a way where new tools like Hologram are designed to work with stalwarts like Phoenix :smiley:

Btw a quick easy way to link to the Hologram forum is elixirforum.com/hologram :023:

I’m also sorry to hear you’ve been poorly, I wish you a continued speedy recovery and you and Hologram all the very best for 2025!

zachdaniel

zachdaniel

Creator of Ash

needs an igniter installer :wink:

EDIT: me shortly:

mix igniter.new hash --with phx.new --install ash,hologram

With an igniter installer that sets up hologram you could have a one liner setup :partying_face:

Excited to tinker.

bartblast

bartblast

Creator of Hologram

At the moment, such integration is not possible. Both frameworks have different architectures and paradigms. To allow using Hologram in Phoenix LiveView and vice versa, several architectural changes and integrations would need to be made in both of them.

While I recognize the potential benefits of such integration for Hologram’s adoption, I don’t plan to pursue this at the moment. The question remains whether it is worth the effort, or if it would be better to focus on enhancing other features of Hologram.

Where Next?

Popular in News & Updates Top

barnabasJ
You can now add subscriptions using the DSL. subscriptions do pubsub YourAppWeb.Endpoint subscribe :something_changed do action...
New
bartblast
Hi folks, For anyone following Hologram’s development or curious about running Elixir in the browser, I’ve created the Client Runtime Re...
New
zachdaniel
Hey friends! A long time quality of life feature we’ve been wanting to add is the ability to refer to to-one relationships in calculation...
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
garrison
This is the first RFD (Request For Discussion) for Hobbes, a database/library written in Elixir. I am going to be exercising a little mo...
New
fhunleth
I wanted to let everyone know that the Erlang Ecosystem Foundation (EEF) has a working group dedicated to embedded systems and IoT. We ha...
New
bartblast
Hey Elixir community! :waving_hand: First, I owe you all an apology. There’s a running joke among my friends that Hologram is like nucle...
New
zachdaniel
AshCloak AshCloak is small but mighty! Simply configure the extension, and it will encrypt your attributes :partying_face: Since an exam...
New
mobileoverlord
Action Advised: NervesHub Sunset In 2018, NervesHub was launched to deliver first-class support for hardware deployments directly from th...
New
bartblast
Hey! For those following Hologram’s progress… I’m excited to share that I’ve just published the official roadmap for Hologram. You can ch...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 45766 226
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
beno
I will often find my self writing things similar to: case some_value do nil -> something() "" -> something() _ -> someth...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New

We're in Beta

About us Mission Statement