Developers Office Hours #64 - Road to v1.0 for elm-cardano (5 June)

:rocket: Road to v1.0 for elm-cardano

Join Matthieu Pizenberg, Senior Software Engineer at Cardano Foundation, for a session exploring the journey toward elm-cardano v1.0.

Learn about the project’s current state, recent progress, upcoming milestones, and what’s ahead as elm-cardano moves toward its first major release.

:date: Friday, 5 June

:eight_o_clock: 08:00 UTC

AddEvent

Perfect for developers interested in building Cardano applications with Elm :rocket:

Stay updated with our events!

You can subscribe directly to the calendar here: AddEvent

Join the discussion below! We’ll update this thread with the recording link as soon as it’s live.

4 Likes

Summary: Road to v1.0 for elm-cardano

In the 64rd Developers Office Hour, host Fabian Bormann speaks with Matthieu Pizenberg about the elm-cardano framework. The session explores the current architecture of the library, the stability of the Elm programming language, and the remaining milestones required to reach a stable v1.0 release.

The State of the Elm Language
Despite rumors in the broader tech community that Elm is a “dead” language due to infrequent updates, it is actually incredibly stable and approaching its official v1.0 release. Elm is a functional language similar to Haskell, designed for building web frontends with no runtime exceptions. Its stability and exceptionally clear compiler error messages make it easy to onboard new developers, often taking just two weeks for developers familiar with traditional web stacks to become fully productive.

Interactive Transaction Builder
A major driving force behind recent updates to elm-cardano is Matthieu’s goal to create an interactive, web-based transaction builder. Currently, developers wanting to test specific transaction types have to build a full JavaScript DApp or struggle with the command-line interface. This new tool will allow developers to visually combine different intents (like sending ada or minting tokens) into a single transaction directly from a web page.

Intent-Based Architecture vs. Structural Builders
Many existing JavaScript frameworks use a builder pattern that closely mirrors the highly complex structural representation of transactions on the Cardano ledger. In contrast, elm-cardano utilizes an intent-based approach. Developers simply state their intent—such as sending a specific amount of ada to an address—and the framework handles the low-level ledger formatting.

Advanced Coin Selection and Multi-Round Building
Because the Cardano transaction fee changes depending on the size of the transaction (which is affected by the number of selected UTXOs), building a transaction requires multiple rounds of evaluation. Elm-cardano automates this multi-round process to reach a stable state. Additionally, the framework allows developers to implement custom coin selection algorithms. It even includes a dedicated algorithm specifically designed for safely selecting collateral, ensuring large UTXOs are not accidentally used to cover smart contract execution failures.

Roadmap to v1.0: Cleaning Up the Compiler
One of the technical hurdles remaining before the v1.0 release involves how the framework evaluates Plutus scripts without side effects. Currently, it uses a custom Rust executable that wraps around the Elm compiler and patches the generated JavaScript to expose WebAssembly functions purely. Because this custom executable can seem suspicious or confusing to developers used to standard Elm binaries, cleaning up this implementation is a critical step for the framework’s official release.


Top Five Q&A (FAQ) about elm-cardano

Question 1: What is Elm, and why is it beneficial for Cardano DApps?
Answer: Elm is a functional programming language used for building web frontends. It is highly stable, provides excellent compiler error messages, and guarantees zero runtime exceptions. This makes it an incredibly safe and efficient language for building Web3 applications where client-side errors can be costly.

Question 2: How does elm-cardano differ from typical JavaScript transaction builders?
Answer: Many traditional JS libraries require developers to construct transactions using a format very close to the raw ledger structure. Elm-cardano uses an intent-based design, where the developer simply declares what they want to do (e.g., send funds), and the framework abstracts away the complex underlying transaction body formatting.

Question 3: Why does building a Cardano transaction require multiple rounds?
Answer: In Cardano, the transaction fee is determined by the size of the transaction. Selecting inputs (UTXOs) changes the size, which in turn changes the fee required, which may then require selecting more inputs. Elm-cardano evaluates the transaction iteratively in multiple rounds to solve this loop and calculate exact fees.

Question 4: Does elm-cardano support custom coin selection?
Answer: Yes, developers can provide their own customized coin selection algorithms. The framework also comes with default options, including a “largest first” algorithm and a dedicated collateral selection algorithm to prevent large, valuable UTXOs from being unnecessarily locked as collateral.

Question 5: What is the biggest technical challenge to solve before releasing v1.0?
Answer: To evaluate Plutus scripts purely within Elm’s strict functional environment, the framework currently relies on a custom Rust executable to patch the compiler’s JavaScript output and enable WebAssembly integration. The team aims to clean up this unconventional workaround to make the framework more accessible and trustworthy before an official 1.0 release.

1 Like