0.14.0
New:
- Source-based schema parser is now the default. The
useFir
Gradle property has been removed. TreehouseAppFactory
accepts aLeakDetector
which can be used to notify you of reference leaks for native UI nodes, Zipline instances, Redwood's own internal wrappers, and more.- Introduce a
LoadingStrategy
interface to manageLazyList
preloading. - Optimize encoding modifiers in Kotlin/JS.
Changed:
- In Treehouse, events from the UI are now serialized on a background thread. This means that there is both a delay and a thread change between when a UI binding sends an event and when that object is converted to JSON. All arguments to events must not be mutable and support property reads on any thread. Best practice is for all event arguments to be completely immutable.
ProtocolFactory
interface is now sealed as arbitrary subtypes were never supported. Only schema-generated subtypes should be used.UIViewLazyList
doesn't crash with aNullPointerException
if cells are added, removed, and re-added without being reused.- Change
UiConfiguration.viewportSize
to be nullable. A nullviewportSize
indicates the viewport's size has not been resolved yet.
Fixed:
- Breaking
content: UIView
retain cycle inUIViewLazyList
'sLazyListContainerCell
. - Update
ProtocolNode
widget IDs when recycling widgets. This was causing pooled nodes to be leaked.
Breaking:
- The
TreehouseApp.spec
property is removed. Most callers should be able to useTreehouseApp.name
instead. This is necessary to avoid a retain cycle.
Upgraded:
- Kotlin 2.0.20
- Zipline 1.17.0