All Versions
Latest Version
Avg Release Cycle
7 days
Latest Release
666 days ago

Changelog History
Page 8

  • v0.31.0 Changes


    • Breaking: Component.measure() is only allowed during a LayoutState calculation.
    • New: Add support to FrescoImageSpec for photo focus points.
    • New: Allow Child Classes to set ComponentContext on DefaultInternalNode.
    • Fix: Immediately remove MountItem mapping on unmount to protect against re-entrancy.

    For more details, see the full diff.

  • v0.30.0 Changes


    • 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 through DynamicConfig. (ac513f3)
    • New: Allow to provide custom GridLayoutInfo (i.e. custom GridLayoutManager) through GridLayoutInfoFactory. (4568d58)
    • New: Allow creating ComponentTree without specifying root.
    • New: Deprecate ComponentsLogger.emitMessage() in favor of ComponentsReporter.Reporter.emitMessage(). (9cb4caf)
    • New: Auto set Text.ellipsize() if maxLines() is specified without an accompanying ellipsize, to make behavior consistent across different Android versions. (3bef059)
    • New: Share the same ResourceResolver across all Components 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 @CachedValues together with HotSwap mode. (501f1a1)
    • Fix: Improve @OnUpdateStateWithTransition's behavior.

    For more details, see the full diff.

  • v0.29.0 Changes


    • New: Additional Sections debugging APIs:
      • Make Change.getRenderInfos() public.
      • Add ChangesInfo.getAllChanges().
    • Fix: Don't crash on dangling mount content.

    For more details, see the full diff.

  • v0.28.0 Changes


    • New: Plain code Codelabs with README instructions. Try them out in [codelabs](codelabs).
    • New: Add interface ChangesetDebugConfiguration.ChangesetDebugListener for listening for ChangeSet generation in Sections.
    • Fix: Cleanup some unused code.

    For more details, see the full diff.

  • v0.27.0 Changes


    • Breaking: Change in PerfEvents:
      • Remove FrameworkLogEvents.EVENT_CREATE_LAYOUT, FrameworkLogEvents.EVENT_CSS_LAYOUT, and FrameworkLogEvents.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-level EVENT_CALCULATE_LAYOUT_STATE event. The PerfEvent.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)
    • 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 in ComponentTree. (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 of LayoutState.collectResults in production and weren't actionable. (3107467)

    For more details, see the full diff.

  • v0.26.1 Changes


    • 🛠 Fix: Picks 513cf91 to fix an issue with the Flipper integration.
  • v0.26.0 Changes


    • Breaking: Fix the lazy State update semantics. (de3d938)
    • Breaking: Rename LayoutHandler to LithoHandler and add DefaultLithoHandler. (h69cba5, 0d0bb0b)
    • Breaking: Update Yoga version to 1.14.0. Fixes #536. (c16baf6)
    • Breaking: Release sections' ComponentTrees when RecyclerCollectionComponent 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 using ComponentTree.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.

  • v0.25.0 Changes


    • Breaking: Migrate support lib dependencies to AndroidX. (de3097b)
    • Breaking: Remove DisplayListDrawable and other DisplayList-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 accept null as inputBackground. (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 in MountState. (66d65fe)
    • Fix: Thread safety issue of ViewportChanged listeners of ViewportManager. (9da9d90)

    For more details, see the full diff.

  • v0.24.0 Changes


    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/](scripts/ 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.

  • v0.23.0 Changes


    • Breaking: KeyHandlers 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 a MountSpec or SectionSpec. (2e27d99)
    • Fix: Potential NPE in RecyclerEventsController. (8e29036)

    For more details, see the full diff.