Dala — BEAM-on-device dalaile framework for Elixir.
OTP runs on the device. Screens are GenServers. The UI is rendered by Compose (Android) and SwiftUI (iOS) via a thin NIF. No server required.
Quick start
defmodule MyApp.HomeScreen do
use Dala.Screen
def mount(_params, _session, socket) do
{:ok, Dala.Socket.assign(socket, :title, "Hello, Dala!")}
end
def render(assigns) do
%{
type: :column,
props: %{padding: :space_md},
children: [
%{type: :text, props: %{text: assigns.title, text_size: :xl}, children: []}
]
}
end
endModules
Dala.App— app entry point and navigation declarationDala.Screen— screen behaviour and GenServer wrapperDala.Socket— assigns and navigation APIDala.Theme— design token systemDala.Renderer— component tree serialisationDala.Test— live device inspection and testing helpers
See the Getting Started guide to create your first app. See Architecture & Prior Art for how Dala compares to LiveView Native, Elixir Desktop, React Native, Flutter, and native development.
Summary
Functions
See Dala.Socket.assign/2.
See Dala.Socket.assign/3.