finds.dev← search

// the find

bartblast/hologram

★ 1,510 · Elixir · Apache-2.0 · updated Sep 2026

Full stack Elixir web framework that intelligently compiles Elixir client-side code to JavaScript

Hologram lets you write both server and client-side UI logic in Elixir, compiling the client half to JavaScript via its own interpreter rather than a thin transpiler. It's aimed at Elixir/Phoenix teams who want interactivity (think LiveView, but running actual logic in the browser) without writing or maintaining a separate JS/TS codebase.

The JS runtime isn't a shallow syntax translator — it reimplements real BEAM semantics client-side (pattern matching, bitstrings, its own regex engine, unicode handling, exception/stacktrace machinery), which is a much harder and more honest approach than most 'write X, get JS' frameworks attempt. It vendors snabbdom for the VDOM diff instead of rolling its own, a sensible reuse of a proven library rather than NIH. The benchmark suite is unusually granular for a project this size — nearly every compiler internal function has its own benchmarks/README pair, which suggests the maintainer actually tracks compile-time regressions rather than just shipping features. CI includes credo, sobelow, and doc-coverage checks (.doctor.exs), so the tooling hygiene is ahead of where most single-maintainer frameworks are at 1.5k stars.

Reimplementing Erlang/Elixir stdlib semantics in JS (regex, unicode, bitstrings, etc.) is an enormous ongoing surface area to keep correct — every BEAM edge case you didn't port becomes a runtime bug someone hits in production. It's effectively a single-maintainer project (sponsorship page lists one core author); that's a real bus-factor risk if you're betting a production app's frontend on it. Nothing in the README addresses client bundle size or interpreter overhead, which is the first question anyone should ask about a 'ship a mini-BEAM to the browser' architecture. And there's no visible test directory in the repo tree despite the CI wiring, so it's unclear how much of that hand-rolled interpreter is actually covered by tests versus just linted.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →