From 34% to 96%: The Porting Initiative Delivers - Hologram v0.7.0

Hologram v0.7.0 is a milestone release for the Elixir-to-JavaScript porting initiative. With 150 newly ported Erlang functions, Erlang runtime coverage has jumped from 34% to 96% - and overall Elixir standard library readiness has grown from 74% to 87%.

This release includes over 700 commits and represents nearly 3 months of focused work on expanding browser-side Elixir capabilities.

The Porting Initiative in Numbers

When we launched the porting initiative in November 2025, 92 Erlang functions had been ported to JavaScript - about 34% of what's needed for Phase 1. Since then, we've ported 150 more functions across 19 modules, pushing Erlang coverage to 96% (228 out of 238 Phase 1 functions done, 10 in progress, 0 remaining in the backlog). Elixir standard library readiness has grown from 74% to 87% (this metric reflects the average progress of Elixir stdlib functions based on how many of their underlying Erlang dependencies have been ported).

This means the vast majority of Elixir standard library functions needed for Phase 1 (full-stack web and basic local-first apps) now work in the browser. Functions for string manipulation, collections, math, sets, binary operations, Unicode normalization, file path handling, time operations, and more - all available client-side. Process-related modules remain deferred to Phase 2. Note that some functions in the client runtime reference may appear below 100% - this is because the compiler conservatively marks certain functions for client-side inclusion, but in practice they won't be needed for web applications. This will be addressed in following releases.

A huge thanks to all 49 contributors who took part in the porting initiative. Special shout-out to @mward-sudo (Michael Ward), who single-handedly ported several modules with complex code. Also thanks to @tenkiller (Brett Fincher), @Sorc96, @Lucassifoni (Lucas Sifoni), @ideaMarcos (Marcos), and @Petarj123 (Petar Jankovic), each of whom contributed multiple ports - and to everyone else who contributed to the porting effort 💜

Here's the breakdown of newly ported functions by module:

Erlang module Functions ported
:binary 13
:elixir_aliases 1
:elixir_locals 1
:elixir_utils 1
:erlang 57
:filelib 1
:filename 10
:init 1
:lists 19
:maps 7
:math 5
:os 3
:rand 1
:re 1
:sets 13
:string 9
:unicode 5
:unicode_util 1
:uri_string 1
Total 150

What This Unlocks

With these ports in place, many more Elixir standard library functions now work in the browser. Here are some examples of what you can use client-side:

Enhancements

Beyond porting, this release brings several improvements that directly affect how you build with Hologram:

Bug Fixes

Some of these fixes were already shipped in v0.6.x patch releases:

Infrastructure

Under the hood, this release lays groundwork for upcoming features:

Upgrading

Update the Hologram dependency in your mix.exs:

{:hologram, "~> 0.7.0"}

Then run:

$ mix deps.update hologram

Thank You

This release would not have been possible without our sponsors and the contributors who joined the porting initiative.

Sponsors

I'd like to thank our sponsors whose support makes sustained development possible:

Thanks also to our GitHub sponsors:

And to all other GitHub sponsors - thank you. Every contribution, no matter the size, helps keep Hologram moving forward.

If you'd like to support Hologram's development, consider sponsoring the project.

Stay in the Loop

Subscribe to the Hologram newsletter for monthly updates on new releases, features, and community news.

What's Next

With 96% of Erlang functions needed for client-side web apps already ported, we're steps away from having a reliable and comprehensive Elixir runtime in the browser. Going forward, expect more granular and more frequent minor releases as we finish the last few pieces of the puzzle and shift focus to polish and stability.

- Bart

Sponsored by