chunks // Root lists every id up front for (final id in ids) Same-size skeletons ctx.getComponent(id) == null ? const ComponentSkeleton() : ctx.buildChild(id), Layout first FLUTTERBYTES CONFERENCE 2026
17.8k → 10.6k Every widget, every request Terse descriptions Flat schemas One catalog per screen Fewer optional fields Estimated prompt tokens (characters ÷ 4), same screen in the demo app FLUTTERBYTES CONFERENCE 2026
200 children in a Column → Lazy lists with caps Flex in an unbounded parent → Builders set the bounds Twelve levels of nesting → Depth limits in the schema Full-size photo in a thumbnail → cacheWidth + placeholder Huge JSON on the UI thread → Isolate.run for big payloads FLUTTERBYTES CONFERENCE 2026
after 9.7 s 10.6k 9 9 ms from 13.8 s from 17.8k from 17 from 21 ms Prompt → first frame Prompt tokens Widget remounts Worst frame Early runs of the demo app · profile mode · Android phone · 1 naive run, 2 optimised runs · prompt tokens estimated as characters ÷ 4 FLUTTERBYTES CONFERENCE 2026