All Versions
74
Latest Version
Avg Release Cycle
28 days
Latest Release
-

Changelog History
Page 2

  • v4.4.2 Changes

    March 01, 2021
    • โšก๏ธ Updated package name of the model class generated for an interface
  • v4.4.1 Changes

    February 22, 2021
    • ๐Ÿ‘Œ Support for Paging3 (#1126) (Thanks to @osipxd and @anhanh11001!)
    • โšก๏ธ Update KotlinPoet to 1.7.2 (#1117)
  • v4.4.0 Changes

    February 18, 2021

    ๐Ÿš€ Bad release, don't use

  • v4.3.1 Changes

    December 02, 2020
    • ๐Ÿ›  Fix ANR and view pool resolution in nested group (#1101)
    • ModelGroupHolder get recycle pool from parent (#1097)
    • โž• Add support for EpoxyModelGroup in the EpoxyVisibilityTracker (#1091)
    • Convert EpoxyVisibilityTracker code to Kotlin (#1090)

    ๐Ÿ’ฅ Breaking Changes

    Note that due to the conversion of EpoxyVisibilityTracker to kotlin you now need to access - EpoxyVisibilityTracker.partialImpressionThresholdPercentage as a property
    epoxyVisibilityTracker.setPartialImpressionThresholdPercentage(value) -> epoxyVisibilityTracker.partialImpressionThresholdPercentage = value`

    Also, the ModelGroupHolder improvement required the ModelGroupHolder#createNewHolder function to change its signature to accept a ViewParent parameter.

    If you override createNewHolder() anywhere you will need to change it to createNewHolder(@nonnull ViewParent parent)

  • v4.3.0 Changes

    December 01, 2020
    • ModelGroupHolder get recycle pool from parent (#1097)
    • โž• Add support for EpoxyModelGroup in the EpoxyVisibilityTracker (#1091)
    • Convert EpoxyVisibilityTracker code to Kotlin (#1090)

    ๐Ÿ’ฅ Breaking Changes

    Note that due to the conversion of EpoxyVisibilityTracker to kotlin you now need to access EpoxyVisibilityTracker.partialImpressionThresholdPercentage as a property epoxyVisibilityTracker.setPartialImpressionThresholdPercentage(value) -> epoxyVisibilityTracker.partialImpressionThresholdPercentage = value

    Also, the ModelGroupHolder improvement required the ModelGroupHolder#createNewHolder function to change its signature to accept a ViewParent parameter.

    If you override createNewHolder() anywhere you will need to change it to createNewHolder(@NonNull ViewParent parent)

  • v4.2.0 Changes

    November 11, 2020
    • โž• Add notify model changed method (#1063)
    • โšก๏ธ Update to Kotlin 1.4.20-RC and remove dependency on kotlin-android-extensions
  • v4.1.0 Changes

    September 18, 2020
    • ๐Ÿ›  Fix some synchronization issues with the parallel Epoxy processing option
    • โž• Add view visibility checks to EpoxyVisibilityItem and decouple RecyclerView #1052
  • v4.0.0 Changes

    September 08, 2020

    ๐Ÿ†• New

    • ๐Ÿ— Incremental annotation processing for faster builds
    • ๐Ÿ‘Œ Support for Android Jetpack Paging v3 library in new epoxy-paging3 artifact
    • 0๏ธโƒฃ A new annotation processor argument logEpoxyTimings can be set to get a detailed breakdown of how long the processors took and where they spent their time (off by default)
    • Another new argument enableParallelEpoxyProcessing can be set to true to have the annotation processor process annotations and generate files in parallel (via coroutines).

    ๐Ÿ— You can enable these processor options in your build.gradle file like so:

    project.android.buildTypes.all { buildType ->
      buildType.javaCompileOptions.annotationProcessorOptions.arguments =
          [
              logEpoxyTimings : "true",
              enableParallelEpoxyProcessing : "true"
          ]
    }
    

    ๐Ÿ‘ Parallel processing can greatly speed up processing time (moreso than the incremental support), but given the hairy nature of parallel processing it is still incubating.
    Please report any issues or crashes that you notice.
    (We are currently using parallel mode in our large project at Airbnb with no problems.)

    • โž• Add options to skip generation of functions for getters, reset, and method overloads to reduce generated code
      • New annotation processor options are:
      • epoxyDisableGenerateOverloads
      • epoxyDisableGenerateGetters
      • epoxyDisableGenerateReset

    ๐Ÿ›  Fixes

    • โšก๏ธ Synchronize ListUpdateCallback and PagedListModelCache functions (#987)
    • Avoid generating bitset checks in models when not needed (reduces code size)
    • ๐Ÿ›  Fix minor memory leak

    ๐Ÿ’ฅ Breaking

    ๐Ÿ“ฆ Annotations that previously targeted package elements now target types (classes or interfaces).
    ๐Ÿ“ฆ This includes: EpoxyDataBindingPattern, EpoxyDataBindingLayouts, PackageModelViewConfig, PackageEpoxyConfig
    ๐Ÿ“ฆ This was necessary to work around an incremental annotation processor issue where annotation on package-info elements are not properly recompiled

    In order to enable incremental annotation processing a change had to be made in how the processor of
    @AutoModel annotations work. If you use @AutoModel in an EpoxyController the annotated Model types
    ๐Ÿ“ฆ must be either declared in a different module from the EpoxyController, or in the same module in the same java package.

    Also make sure you have kapt error types enabled.

    However, generally @AutoModel is considered legacy and is not recommended. It is a relic of Java Epoxy usage
    ๐Ÿ— and instead the current best practice is to use Kotlin with the Kotlin model extension functions to build models.

    โœ‚ Removed support for generating Epoxy models from Litho components

  • v4.0.0-beta6 Changes

    July 15, 2020
    • ๐Ÿ“ฆ PackageModelViewConfig can now be applied to classes and interfaces in addition to package-info.java
  • v4.0.0-beta5 Changes

    July 09, 2020

    ๐Ÿ›  Fixes:

    • ๐ŸŒฒ An occasional processor crash when the option to log timings is enabled
    • Incremental annotation processing of databinding models would fail to generate models (#1014)

    ๐Ÿ’ฅ Breaking!

    • ๐Ÿ‘ The annotation that support databinding, EpoxyDataBindingLayouts and EpoxyDataBindingPattern,
      ๐Ÿ“ฆ must now be placed on a class or interface instead of in a package-info.java file. The interface
      ๐Ÿ‘ or class must be in Java, Kotlin is not supported. This is necessary to support incremental processing.

    Example usage:

    package com.example.app;import com.airbnb.epoxy.EpoxyDataBindingLayouts;import com.airbnb.epoxy.EpoxyDataBindingPattern;@EpoxyDataBindingPattern(rClass = R.class, layoutPrefix = "my\_view\_prefix")@EpoxyDataBindingLayouts({R.layout.my\_model\_layout})interface EpoxyDataBindingConfig {}