GenericJam
Mob 0.9.28 has been released.
Changed
-
A component callback repaints its screen only when the component’s
rendered props change. Before, everyMob.Componenthandle_event/3and
handle_info/2repainted the screen, whatever it returned. What an app
upgrading from 0.9.27 should know:- A component’s
render/1is treated as a function of its assigns, as in
LiveView. Anything else it reads (a clock, ETS) is picked up on the next
screen paint, not by a callback that changed no assign. - A component event that leaves the component’s props alone no longer
re-renders the parent screen. A screen whoserender/1reads state a
component writes outside messages (ETS, an Agent) and relied on component
events to refresh it should be sent a message instead. - A native view is no longer re-committed with identical props. A view
whose update block reset rejected input from props on every commit now
keeps the typed text; to force a commit, have the component bump an assign
itsrender/1returns (a revision counter) when it rejects input.
Decision:
decisions/2026-11-12-component-events-repaint-only-on-changed-props.md. - A component’s
Fixed
- A native view event that changes nothing no longer commits the whole
tree. Every component callback used to send{:component_changed, ...},
and the screen repainted and calledset_rootwithout checking anything. A
native view that sends an event per key press or knob move therefore
committed twice per press: on a Moto G Power 2021, 5-15 ms of BEAM work plus
10-20 ms of Compose recomposition per commit. Now a component notifies its
screen only whenrender/1returns props that differ from the ones the
screen last fetched, and does not render to check if its assigns are
unchanged (!==). The screen repaints through the same unchanged-tree skip
its own messages use, so several notices queued behind one paint commit
once. Verified on a Moto G Power 2021 and an iPhone SE (3rd gen). The last
rendered props a component keeps for this are redacted in its crash report
and:sys.get_status/1, as its assigns are (MOB-310).
Mob Info
Classification: Hybrid Mobile Framework
Description: BEAM-on-device mobile framework for Elixir. OTP runs inside your iOS and Android apps — embedded directly in the app bundle, no server required. Screens are GenServers; the UI is rendered by Compose and SwiftUI via a thin NIF.
Forum/tag: mob
Click here to view Mob’s main announcement thread.
Trending in News & Updates
Popcorn, the library that runs Elixir code in the browser, is now stable :popcorn:
This is possible because it now builds on a very stab...
New
Hologram UI is in the works - the official component library for Hologram - and the waiting list is now open.
A common reaction when I m...
New
This thread is for updates on the Hologram website (docs, new pages, roadmap, feature status, etc.).
You can watch this thread to get no...
New
Stampede 1.2 is out, and I finally got to try it at a bigger scale.
What’s new
--find-limit: instead of a fixed number of users, it add...
New
Hey Elixir folks,
I’ve been working on Xenia 0.2.0, and it’s nearly ready.
This release focuses on performance, easier integration, and...
New
Hi all,
I’ve just released Sake 0.5.0, and I want to explain better what it’s for, because I think many Phoenix apps can use it now.
Wh...
New
I’m working to make Potions the easiest way to deploy Elixir applications, and the next step in that journey is live: you can now bring y...
New
Other Trending Topics
Hey there,
I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first.
...
New
Hi everyone :waving_hand:
I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover ...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly)
AI dream has many faces, but general...
New
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #code-sync
- #discussion
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #elixirconf-us
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #blog-post
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #elixirconf-eu
- #processes
- #security
- #api
- #forms
- #performance









