release-date
- Breaking: Remove
ComponentsLogger.emitMessage()
API as it was fully replaced byComponentsReporter.emitMessage()
- New: Add API for providing custom logger on a per
ComponentRenderInfo
basis
2019-09-09
- Breaking:
Component.measure()
is only allowed during a LayoutState calculation. - New: Add support to FrescoImage for photo focus points.
- New: Allow Child Classes to set
ComponentContext
onDefaultInternalNode
. - Fix: Immediately remove MountItem mapping on unmount to protect against re-entrancy.
For more details, see the full diff.
2019-08-23
- Breaking: Rename
@FromCreateLayout
to@FromPreviousCreateLayout
. - Breaking: Add compile-time error when
Component.Builder
is passed as a@Prop
. (5da7121) - Breaking: Remove
MountSpec.shouldUseDisplayList()
- remnant of removed DisplayLists' usage. Was not doing anything. - New: Make
DynamicValue.get()
public. - New: Expose
RecyclerBinder
's Commit Policy throughDynamicConfig
. (ac513f3) - New: Allow to provide custom
GridLayoutInfo
(i.e. customGridLayoutManager
) throughGridLayoutInfoFactory
. (4568d58) - New: Allow creating
ComponentTree
without specifying root. - New: Deprecate
ComponentsLogger.emitMessage()
in favor ofComponentsReporter.Reporter.emitMessage()
. (9cb4caf) - New: Auto set
Text.ellipsize()
ifmaxLines()
is specified without an accompanying ellipsize, to make behavior consistent across different Android versions. (3bef059) - New: Share the same
ResourceResolver
across allComponent
s in the same tree. (c93517c, 7656822, dde30dc) - New: Add support for A11y headers. (#573)
- New: Update documentation and javadocs.
- Fix: Better error messages for releasing mount content.
- Fix: Don't use internal
javac
API in codegen. (#577) - Fix: Propagate injected
treeProps
for Layout PerfEvent. (#574) - Fix: Don't crash when using primitive
@CachedValue
s together with HotSwap mode. (501f1a1) - Fix: Improve
@OnUpdateStateWithTransition
's behavior.
For more details, see the full diff.
2019-07-11
- New: Additional Sections debugging APIs:
- Make
Change.getRenderInfos()
public. - Add
ChangesInfo.getAllChanges()
.
- Make
- Fix: Don't crash on dangling mount content.
For more details, see the full diff.
2019-07-05
- New: Plain code Codelabs with README instructions. Try them out in codelabs.
- New: Add interface
ChangesetDebugConfiguration.ChangesetDebugListener
for listening forChangeSet
generation in Sections. - Fix: Cleanup some unused code.
For more details, see the full diff.
2019-06-24
- Breaking: Change in PerfEvents:
- Remove
FrameworkLogEvents.EVENT_CREATE_LAYOUT
,FrameworkLogEvents.EVENT_CSS_LAYOUT
, andFrameworkLogEvents.EVENT_COLLECT_RESULTS
: these are replaced by the sub-spans"start_create_layout"
/"end_create_layout"
,"start_measure"
/"end_measure"
, and"start_collect_results"
/"end_collect_results"
under the existing top-levelEVENT_CALCULATE_LAYOUT_STATE
event. ThePerfEvent.markerPoint()
API can be used to log these sub-spans. (b859605) - Remove
FrameworkLogEvents.PREPARE_MOUNT
without replacement: this didn't provide much value. (4917370) - Remove
FrameworkLogEvents.DRAW
without replacement: this was not free to maintain and didn't provide much value. (9e548cb)
- Remove
- Breaking: The Default Range Ratio for Sections/
RecyclerBinder
is changed from 4 screens worth of content in either direction to 2. This should improve resource usage with minimal effects on scroll performance. (9b4fe95) - Breaking:
ComponentsSystrace.provide()
:ComponentsSystrace
now assumes an implementation will be provided before any other Litho operations occur. (457a20f) - New:
ComponentsLogger
implementations can now return null for event types they don't care about. (4075eb7) - New: Add
RecyclerCollectionEventsController.requestScrollBy()
. (0146857) - New: Add preliminary Robolectric v4 support. (4c2f657, etc.)
- New: More efficient code generation for state updates in Components and Sections. (8c5c7e3, etc.)
- Fix: Remove usage of API 19+
Objects
class in cached value API. (aabb24a) - Fix: Unset Components scope when creating a new
ComponentContext
inComponentTree
. (05f11a7) - Fix: Fix perf logging for dirty mounts. (3ad8bfb)
- Fix: Don't crash when
@OnCalculateCachedValue
takes no args. (2a0f524) - Fix: Reduce number of systrace markers in
collectResults
: these were skewing the perceived size ofLayoutState.collectResults
in production and weren't actionable. (3107467)
For more details, see the full diff.
2019-05-28
- Fix: Picks 513cf91 to fix an issue with the Flipper integration.
2019-05-13
- Breaking: Fix the lazy State update semantics. (de3d938)
- Breaking: Rename
LayoutHandler
toLithoHandler
and addDefaultLithoHandler
. (h69cba5, 0d0bb0b) - Breaking: Update Yoga version to
1.14.0
. Fixes #536. (c16baf6) - Breaking: Release sections'
ComponentTree
s whenRecyclerCollectionComponent
is detached. (8893049) - Breaking: Only enable incremental mount if parent incremental mount is enabled. (c88a660)
- Experimental: Make state updates faster by only recreating the subtrees which are being updated and reuse (read "clone") the untouched subtrees while calculating a new layout. You can try it out by setting
ComponentsConfiguration.isReconciliationEnabled()
flag globally or usingComponentTree.Builder.isReconciliationEnabled()
for specific trees. - New: Add a
RecyclerBinder.replaceAll(List<RenderInfo>)
method. (#451) - New: Add documentation.
- Fix: Eliminate Gradle deprecated methods. (#526)
- Fix: Cleanup tests and unused code.
- Fix: Remove object pooling everywhere.
- Fix: Make Robolectric tests work. (a92018a)
For more details, see the full diff.
2019-03-14
- Breaking: Migrate support lib dependencies to AndroidX. (de3097b)
- Breaking: Remove
DisplayListDrawable
and otherDisplayList
-related features. (29f42fa) - Breaking: Remove
References
API. (b1aa39a) - New: Remove object pooling for most internal objects.
- New: Replace
powermock-reflect
with internal Whitebox implementation. (ad899e4) - New: Enable Gradle incremental AnnotationProcessing. (a864b5a)
- New: Allow
TextInput
to acceptnull
asinputBackground
. (d1fd03b) - New: Add documentation.
- Fix: Suppress focus temporarily while mounting. (d93e2e0)
- Fix: When clearing press state, also cancel pending input events. (451e8b4)
- Fix: Correctly calculate
VisibilityChangedEvent
inMountState
. (66d65fe) - Fix: Thread safety issue of
ViewportChanged
listeners ofViewportManager
. (9da9d90)
For more details, see the full diff.
2019-02-18
Breaking: The default for state updates has changed from sync to async. At Facebook this meant we ran a codemod script on the codebase and changed all state update methods to the explicit Sync variant ("Sync"
is just appended to the end of the state update call), then changed the default. The reason for this is to not change existing behavior in case it breaks something, since there are many callsites. The script is committed and available at scripts/codemod-state-update-methods.sh. We recommend using it if you have any concerns about state update calls automatically becoming async. As a reminder, when you add a @OnUpdateState
method, it generates three methods: updateState()
, updateStateSync()
, and updateStateAsync()
. Previously updateState() == updateStateSync()
. Now, updateState() == updateStateAsync()
.
For more details, see the full diff.
2019-01-16
- Breaking:
KeyHandler
s now get registered in EndToEnd tests (9836497). This is a an edge-case, but potentially behavior-changing. - New: Add support for Cached Values.
- New:
isEquivalentTo
now uses reflection for size reasons unless the target is aMountSpec
orSectionSpec
. (2e27d99) - Fix: Potential NPE in
RecyclerEventsController
. (8e29036)
For more details, see the full diff.