bartblast

bartblast

Creator of Hologram

I’ll be using this thread to share Hologram patch release announcements. Minor releases will continue to get dedicated threads with blog announcement posts.

All releases are also available on the GitHub Releases page.

Showing Posts 1 to 7

bartblast

bartblast OP

Creator of Hologram

Hologram v0.8.2

Bug Fixes

  • Fix Calendar.ISO.valid_date?/3 undefined when invoking Date.new!/3 in an action (#740)

  • Fix client-side Date struct rendering in templates crashing with :lists.flatten/1 error (#742)

  • Fix :erlang.list_to_binary/1 handling of nested improper-list iodata (#751)

  • Fix :erlang.iolist_to_binary/1 semantics and error handling (#752)

  • Fix call graph module edge handling for accurate dynamic call detection (#755)

  • Fix protocol dispatch edges not added for new implementations during live reload (incremental call graph patching)

  • Fix async MFA detection propagating Task.await/1 reachability through module vertices

  • Fix compiler normalizer to strip import residue aliases from block AST

  • Fix Erlang JS function extraction regex to handle comment lines between Start/End markers (#756)

  • Fix Biome formatter failing on Windows when file paths exceed cmd.exe command line length limit

Enhancements

  • Overhaul call graph traversal for protocols and structs - resulting in more accurate client-side bundles

  • Manually port IO.warn/1, IO.warn/2, IO.warn_once/3, and Application.get_env/3 to JavaScript to reduce client-side bundle size

  • Add debugging mix tasks: holo.compiler.runtime_mfa_cascades, holo.compiler.page_mfa_cascades

  • Include diagnostic details in Biome formatter error messages

bartblast

bartblast OP

Creator of Hologram

Hologram v0.8.3

Backward Incompatible Changes

  • Remove mix holo.compiler.page_mfa_cascades and mix holo.compiler.runtime_mfa_cascades tasks

Enhancements

  • Compiler groundwork for with expression support (#735)
  • Improve compiler call graph accuracy for Date, Time, NaiveDateTime, and DateTime modules

Bug Fixes

  • Fix bundle size explosion predominantly affecting Ash apps (#775)
bartblast

bartblast OP

Creator of Hologram

Hologram v0.9.1

A quick patch for a compile-time performance problem recently reported by a user: with deeply nested templates, the Biome formatter could make compilation disproportionately slow and peg CPU. Removing it from the compiler keeps builds fast.

Performance

  • Remove the Biome formatter from the compiler to fix exponentially slow compilation with deeply nested templates (#809)
bartblast

bartblast OP

Creator of Hologram

Hologram v0.9.2

Bug Fixes

  • Fix SSE response not being halted, raising Plug.Conn.AlreadySentError when Hologram.Router is mounted ahead of another router (#811)
  • Fix Hologram.Router raising a “no persistent term” error when Hologram is disabled, breaking mix test (#813)
bartblast

bartblast OP

Creator of Hologram

Hologram v0.9.3

Enhancements

  • Support Elixir 1.19 and Erlang/OTP 28 (#835)
  • Support Elixir 1.20 and Erlang/OTP 29 (#837)
  • Port :string.to_graphemes/1 to JavaScript (#844)
  • Port :string.jaro_similarity/2 to JavaScript (#842)
  • Port :lists.suffix/2 to JavaScript (#851)

Bug Fixes

  • Fix compilation crashing with CaseClauseError when an Erlang dependency uses Elixir-style module names, e.g. luerl (#776)
  • Fix client runtime crashing when navigating to or rendering a <Link> for a route that declares a param (#833)
  • Fix :erlang.div/2 raising ArgumentError instead of ArithmeticError for invalid arguments (#848)
  • Fix cp/1/gc/1 chardata iteration dropping multi-element improper-list tails, affecting :elixir_utils.jaro_similarity/2 (#845)
bartblast

bartblast OP

Creator of Hologram

Hologram v0.10.1

Bug Fixes

  • Fix client runtime crashing at startup after unrelated server-side dependency upgrades (#912)
  • Fix protocol implementations being bundled based on loaded modules rather than reachable types (#917)
  • Fix client runtime crashing in non-secure contexts where crypto.randomUUID() is unavailable (#933)

Security

  • Bump plug, cowlib, and phoenix past flagged releases for security advisories (#915, #934)
bartblast

bartblast OP

Creator of Hologram

Hologram v0.11.1

Enhancements

  • Reconcile the DOM by keys rather than comment markers, so served HTML and the live DOM hold only the nodes your templates describe (#1021)

  • Tie every action to the page it belongs to, so a dispatch can no longer resolve against a page the user has already left (#1047)

Performance

  • Paint a navigated page in a single round trip, so client-side navigation is no longer slower than a full document load (#1026)

  • Escape binaries in a single pass, removing quadratic string escaping from the term encoder (#1067)

  • Send a navigated page’s render as data rather than markup, shrinking the navigation payload (#1068)

  • Send a page’s hydration state beside its render instead of nested inside it, dropping a redundant encoding round trip (#1069)

Bug Fixes

  • Fix initial page load rebuilding the entire DOM instead of hydrating server-rendered markup (#926)

  • Fix the flash of unstyled content caused by the first render rebuilding the document head (#932)

  • Fix a serialized </script> in page state truncating the inline mount data script (#959)

  • Fix put_subscription in a command being silently dropped on a tab’s first connect (#975)

  • Fix :binary.replace/4 letting replacement fun errors escape instead of raising badarg (#980)

  • Fix a map comparing equal to any map that contains it (#986)

  • Fix subscriptions silently not working with more than one server instance (#992)

  • Fix js_import not resolving in a component referenced in broadcast code (#998)

  • Fix an action that runs during a render corrupting the DOM (#1001)

  • Fix a struct pattern in a clause head being evaluated instead of matched (#1004)

  • Fix client-side :maps.find/2 returning the bare value instead of {:ok, value} (#1005)

  • Fix actions scheduled before a navigation still running on the new page (#1006)

  • Fix reordering a list whose body holds a block corrupting the DOM (#1019)

  • Fix elements whose tag name carries case losing DOM identity on initial page load (#1024)

  • Fix a realtime stream that dies right after connecting being retried without backoff (#1028)

  • Fix realtime connections crashing for several seconds after every server start (#1029)

  • Fix two compilations being able to hold the compiler lock at the same time (#1032)

  • Fix debounced and throttled dispatches landing on the wrong side of a navigation (#1045)

  • Fix an inline script’s action landing on the previous page when the page is reached by a link (#1046)

  • Fix asset paths reaching the manifest script unescaped (#1074)

  • Fix interpolation inside a <script> element being made safe by altering the value (#1075)

  • Fix a binary that is not valid UTF-8 changing on its way to the client (#1076)

  • Fix CSS in an inline <style> element reaching the browser entity-encoded (#1100)

  • Fix an SVG element built on the client losing its tag name’s case (#1106)

  • Fix a prop written as literal text arriving entity-encoded on the server (#1130)

  • Fix an integer and a float no longer comparing equal inside a list, tuple or map (#1140)

  • Fix a middleware redirect reached by navigating keeping the clicked link’s URL (#1148)

Documentation

  • Document that state takes precedence over a same-named prop, and the copy-a-prop-into-state trap that follows from it (#796)

  • Add a security policy and a page describing how to report a vulnerability privately (#1112)

  • Bring the shipped LLM documentation back in line with the website (#1146)

— All posts loaded —

Where Next? Top

Trending in News & Updates Top

Jskalc
LiveVue v1.0 released After four release candidates and a lot of community feedback, LiveVue 1.0 is stable :tada: I’ve built a dedicated...
New
woylie
<span class="hashtag-icon-placeholder"></span>let-me 3.0.4 has been released. Changed Log the policy module and the check module in the...
New
zachdaniel
Your standard application generally only tracks what is true right now. Updates overwrite previous data, and asking questions about the p...
New
webofbits
Aludel 0.8.0 is now available on GitHub and Hex. This release adds typed_judge assertions for evaluations that need deterministic, struc...
New
woylie
Flop Phoenix 0.27.0 has been released. Changed Require Flop 0.29.0, which turns Flop.Schema from a protocol into a behaviour. Determin...
New
woylie
Flop 0.29.0 has been released. Added Add Flop.allowed_fields/2, which returns the fields that may be filtered or sorted for the given ...
New
kyroco
VitalAIze 0.3.0 is out. It puts your other machines on your team on the board, live. I changed the architecture and am using gRPC to stre...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews