Repository navigation
Conversation
manapard
force-pushed
the
feat/android-dynamic-widget-render-failures
branch
from
October 21, 2026 13:39
c88c88a to
4477879
Compare
Debug builds show an in-widget error view with the failing stage, the JS message and stack, and a tap-to-retry that reloads the bundle from Metro. Release builds keep the last successful render of each placement instead of falling back to the placeholder. Each failure is logged once under the VoltraDynamicWidget tag. The bundle state is now read on every composition, so a Metro outage at session start no longer sticks for the whole session. Implements the Android scope of ADR 0013 (narrows callstackincubator#318).
manapard
force-pushed
the
feat/android-dynamic-widget-render-failures
branch
from
October 21, 2026 13:44
4477879 to
4759429
Compare
manapard
marked this pull request as ready for review
October 21, 2026 14:26
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this?
Android Dynamic Widgets no longer hide render failures. Before this change, when a widget's bundle could not load, the bundle threw while evaluating,
render()threw, or the output could not be parsed, the error turned into a silentnull. The widget then showed the build-time placeholder. A developer saw plausible but wrong content while Metro returned an error. A user whose widget had rendered fine saw it drop back to the placeholder after one bad props update, locale change or resize. Nothing on screen or in the logs explained why.It implements the Android scope of ADR 0013 (included in this PR), which narrows #318 to a minimal version with no new public API. iOS gets the same behaviour in a follow-up PR.
voltra-render-failures-demo.mp4
How does it work?
VoltraDynamicWidgetlogcat tag. A later successful render logs a single recovery line.Why is this useful?
Developers see a broken widget on the home screen together with the reason, and can recover with one tap after fixing the code or restarting Metro. End users keep a widget that worked instead of watching it fall back to build-time content. The change adds no public API, so the app-facing failure event can be designed later on top of the Android event channel (#314) without anything here being in the way.