Version and package information

Most version number bumps have been due to updating dependencies, and occasionally adding the odd lifecycle utility or support for things like Apollo in the optional packages (the version numbers for all the packages are incremented at the same time so that they will always match - this means some version bumps have no effect for a particular package).

kotlin API android package


java API android package


The fore library is divided into optional packages which you can pull in independently if you want (all the packages are so small, it’s not really worth it IMO). But for example, you might just want fore-kt-core for a kotlin only domain module if you’re writing a clean architecture app (clean modules example).

pure kotlin API


kotlin plus android API

co.early.fore:fore-kt-android-compose (versioning matches the compose compiler)

pure java API


java plus android API


Maven central

To check what versions of what transitive dependencies each package pulls in, the definitive answer is found in the pom files hosted at mavenCentral. The other packages you will see in mavenCentral have been rolled in to the packages listed above and/or are no longer updated. The GPG fingerprint used to sign the maven packages is: 5B83EC7248CCAEED24076AF87D1CC9121D51BA24 and the GPG public cert is here.

fore 1.5.14

fore 1.5.14 networking packages deprecate the CallProcessors and introduce CallWrappers so that clients can migrate away from the old style Eithers at their own pace

kotlin 1.6.21

fore 1.5.13 bumps the kotlin version to 1.6.21

kotlin 1.6.20

fore 1.5.10 bumps the kotlin version to 1.6.20

kotlin 1.6.10

fore 1.5.8 bumps the kotlin version to 1.6.10

kotlin 1.6

fore 1.5.7 bumps the kotlin version to 1.6


Apollo v2.5.4 is still supported in all versions, but fore 1.5.7 introduces support for Apollo3 v3.0.0

fore 1.5.0

fore 1.5.0 bumps the kotlin version to 1.5.31 and adds a CallProcessor class (marked as experimental) supporting Apollo3 3.0.0-alpha07. A new package called fore-kt-android-compose:1.1.0-alpha05 adds an extension function to use with jetpack compose 1.1.0-alpha05 (also marked as experimental).

fore 1.4.7

fore 1.4.7 bumps the kotlin version to 1.5.10 so if you haven’t updgrade your project to kotin 1.5.10 yet, you might encounter strange problems with obfuscation or other issues. If you do, drop down to fore 1.4.6 or upgrade kotlin in your project.

fore 1.4.1

fore 1.4.1 to fore 1.4.6 inclusive are built with kotlin 1.4.30


As fore now wraps Retrofit2, Apollo or Ktor calls with a single package, the network logs need to work out which version of OkHttp3 your app is running (Retrofit2 and Apollo use v3.x.x, Ktor uses 4.x.x and these versions of OkHttp3 have slightly different APIs). From 1.3.7 we do this with reflection, but feel free to exclude the kotlin-reflect package from your release builds as follows: exclude("org.jetbrains.kotlin", "kotlin-reflect"), you just won’t see any network logs when using the InterceptorLogging class (which you probably have turned off for release builds anyway).

Ktor Client Support

1.3.6 adds support for Ktor, it wraps the calls using a CallProcessor in a similar way to how Retrofit2 and Apollo is handled.

fore-lifecycle deprecation

1.3.5 was the last version of the fore-lifecycle package that will be published on mavenCentral. The useful classes from this package were moved into fore-core a while ago and with the ObservableGoup interface, most of what fore-lifecycle did can be done yourself pretty easily anyway. 1.3.5 won’t be going anywhere of course and you can still pull it in individually if you want it.

jcenter removal

1.3.4 is the last version that was published on jcenter, mavenCentral has most versions since 1.1.0 (if for some reason you need an older version, please open an issue and I might be able to sign one and put it on mavenCentral for you). All new versions will be released to mavenCentral only. All references to jcenter have been removed from the project so it will continue to build after jcenter has been closed.

GraphQL Support

1.3.1 adds support for Apollo, it wraps the calls using a CallProcessor in a similar way to how Retrofit2 is handled.

kotlin 1.4

1.2.1 bumps the kotlin version to 1.4 so if you haven’t updgrade your project to kotin 1.4 yet, you might encounter strange problems with obfuscation, if so drop down to fore 1.2.0 or upgrade kotlin in your project, see this issue

defaults for WorkMode, Logger and SystemTimeWrapper

From 1.2.0 the kotlin APIs will set default values for these parameters if you don’t specify them. See more here.

removing deprecated sync views

These were removed for 1.1.0 (1.0.6 is identical to 1.1.0 but still has those syncviews).


1.1.0 is also the last version to support AS3

kotlin support

1.0.6 introduced explicit kotlin support with the packages fore-core-kt and fore-retrofit-kt (they’re based on coroutines and fore-retrofit-kt’s CallProcessor has a more functional API that uses suspend functions).

As a convenience, 1.0.6 also introduces the packages fore-jv and fore-kt, these contain all the classes from fore (suitable for java or kotlin as appropriate) in one aar file so you only have to add one line of dependency in your build file. Some classes are removed, for instance fore-kt does not contain the java based CallProcessor, only the kotlin one.

android studio 3.5+

It used to be convenient to put the .idea/modules.xml file into source control, but now it messes things up, so with commit a1766e17f80fdc1b43e4176cfc6d60094322c83d .idea/modules.xml is removed and the whole of the .idea folder is put in .gitignore.

There’s no need to do anything when you pull the latest code, but if you want to be sure your project is all setup nicely you just have to: close Android Studio; delete the .idea directory (it’s a hidden directory by the way); restart Android Studio.

androidx support from 1.0.0 onwards

Versions from 1.0.0 support androidx, if you are not using androidx yet you can continue to use 0.11.1

There was one minor breaking change previous to 0.11.1 (sorry):

Pre the rename from ASAF to fore (<0.9.32)

These are more substantial, but are mainly related to renaming or shuffling packages around, there are no functionality changes.