Skip to content
CAI
Software that uses CAICheck a score

lysine-dev/retrofit

62.7

Adequate · 24 September 2026

13.1k

lines of production code

Java

with JavaScript

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a type-safe HTTP client library for Java and Android that allows developers to define network APIs using Java interfaces. It provides a modular architecture with built-in support for modern concurrency models like Java 8 CompletableFutures and Kotlin coroutines, alongside adapters for reactive streams such as RxJava and Scala Futures. The library integrates with various serialization formats including JSON (Gson, Moshi, Jackson), XML (JAXB), and Protocol Buffers, while also offering utilities for mocking network responses and handling code shrinking.

How it got here

2010–2016 — Retrofit 2.0 release and ecosystem expansion

30 changes.

This period covers the development and release of Retrofit 2.0, introducing a redesigned HTTP annotation API, built-in support for Java 8 and Kotlin coroutines, and a comprehensive suite of converters for formats like JSON, Protobuf, and XML. It also expanded the library's ecosystem by adding adapters for RxJava 1 and 2, Guava, and Java 8 types, alongside a new behavior-driven mock framework for testing network conditions.

2017–2020 — multi-language support and build modernization

21 changes.

This period focused on expanding Retrofit's ecosystem by adding adapters for Scala and RxJava 3, introducing a new JAXB converter for XML, and enhancing nullability contracts across existing converter modules. Concurrently, the project modernized its build infrastructure by migrating to a Gradle version catalog structure and integrating comprehensive ProGuard and R8 configuration for Android compatibility.

2021–2025 — converter expansion and build stability

13 changes.

This period focused on expanding Retrofit's ecosystem by introducing new serialization converters for JAXB 3 and kotlinx.serialization, alongside comprehensive test coverage for Kotlin and Java core components. Significant effort was also directed toward build stability and developer experience, featuring a new annotation processor to prevent R8 optimization issues, refactored Java 16+ default method handling, and a complete documentation site rebuild using Astro.

Features

Add Guava adapter and Optional converter

This release introduces a new Guava adapter that allows service methods to return Guava's ListenableFuture, supporting both direct body types (e.g., ListenableFuture\<User\>) and response-wrapped types (e.g., ListenableFuture\<Response\<User\>\>). Additionally, a new OptionalConverter is added to facilitate the use of Guava's Optional type in response conversion.

guava · high confidence

Add JAXB 3 (Jakarta XML Bind) converter

Introduces a new converter factory for Retrofit that uses the Jakarta XML Bind (JAXB 3) API to marshal and unmarshal XML payloads. This allows users to serialize and deserialize objects annotated with \@XmlRootElement\ using the modern Jakarta namespace, with the response converter explicitly disabling external entities and DTDs to mitigate XML External Entity (XXE) attacks.

jaxb3 · high confidence

Add JAXB 3 XML converter

A new \converter-jaxb3\ module is added, providing a Retrofit converter that uses JAXB 3.x (\jakarta.xml.bind\) to serialize and deserialize XML. Users can add this dependency to enable automatic XML handling for request bodies and response bodies, with support for a default or user-supplied \JAXBContext\. Note that this converter does not work on Android.

retrofit-converters/jaxb3 · high confidence

Add JAXB converter for XML request and response bodies

This change introduces a new JAXB converter factory for Retrofit, enabling automatic marshalling of Java objects to XML for request bodies and unmarshalling of XML responses to Java objects. The implementation includes security hardening by disabling external entity support and DTD processing in the XML input factory to prevent XXE attacks, and ensures that response bodies are properly closed after conversion.

jaxb · high confidence

Add Java 8 CompletableFuture adapter and Optional converter

Users can now use Java 8 language features directly in Retrofit service interfaces. The new Java 8 adapter allows service methods to return CompletableFuture, supporting both direct body responses (e.g., CompletableFuture\<User\>) and full response wrappers (e.g., CompletableFuture\<Response\<User\>\>). Additionally, the new Java 8 converter enables the use of java.util.Optional in service method return types, allowing methods to return Optional\<T\> for deserialized responses.

java8 · high confidence

Add RxJava 2 adapter with Result wrapper support

The RxJava 2 adapter is now available, allowing Retrofit service methods to return RxJava 2 types such as Observable, Flowable, Single, Maybe, and Completable. This update introduces a new Result\<T\> wrapper type that enables users to handle both successful HTTP responses and errors within a single stream via onNext, rather than relying on onError for HTTP errors. The adapter supports synchronous and asynchronous execution modes and allows configuring a default Scheduler for subscription.

rxjava2 · high confidence

Add RxJava 3 adapter

Retrofit now includes a new adapter module for RxJava 3, enabling users to return \Observable\ types from their service interfaces. This addition introduces new classes to handle both synchronous and asynchronous execution of HTTP calls within the RxJava 3 reactive streams model, along with the necessary ProGuard rules to preserve generic signatures for result types.

retrofit-adapters/rxjava3/src/main · high confidence

Add RxJava 3 adapter for Retrofit

Users can now use RxJava 3 types (Observable, Flowable, Single, Maybe, Completable) as return types in Retrofit service interfaces by adding the new RxJava3CallAdapterFactory. This adapter supports direct body, Response-wrapped, and Result-wrapped return types, allowing seamless integration with RxJava 3 streams for asynchronous HTTP requests.

rxjava3 · high confidence

Add Scala Future adapter

Users can now use Scala \Future\ as a return type for Retrofit service methods by adding \ScalaCallAdapterFactory\ to their Retrofit builder. This adapter supports both body-only returns (e.g., \Future\<User\>\) and response-wrapped returns (e.g., \Future\<Response\<User\>\>\), allowing Scala applications to integrate seamlessly with Retrofit's asynchronous execution model.

retrofit-adapters/scala · high confidence

Add Scalars converter for primitive and String types

The Scalars converter factory is now available to automatically convert String, boolean, byte, char, double, float, int, long, and short types (both primitives and their boxed wrappers) to and from text/plain HTTP bodies. Users can add this converter to their Retrofit instance to handle scalar request and response bodies without manual parsing.

retrofit-converters/scalars/src/main · high confidence

Add kotlinx.serialization converter

This change introduces a new converter module that integrates Retrofit with the kotlinx.serialization library. Users can now use \Json.asConverterFactory()\ for string-based payloads (like JSON) or \ProtoBuf.asConverterFactory()\ for binary formats (like Protocol Buffers) to automatically serialize request bodies and deserialize response bodies. The implementation supports standard serializable types as well as contextual serializers via \SerializersModule\, allowing for flexible type handling within Retrofit services.

retrofit-converters/kotlinx-serialization · high confidence

Add support for Guava Optional in response conversion

Users can now use Guava's Optional type as a return type for Retrofit service methods. A new GuavaOptionalConverterFactory has been added to handle deserialization by delegating to an inner converter for the wrapped type and wrapping the result in Optional. Proguard rules have also been added to preserve the generic signature of Optional for R8 full mode.

retrofit-converters/guava/src/main · high confidence

Added 1.x API documentation for the Jackson converter

The website now serves the generated Javadoc for the \retrofit.converter\ package in the 1.x branch, specifically documenting the \JacksonConverter\ class which uses Jackson for reading and writing entities. This includes the full set of static HTML pages (index, class details, hierarchy, and help) for the Converter: Jackson 1.9.0 API.

website/public · high confidence

Initial JAXB converter for XML serialization

Adds a new \converter-jaxb\ module that enables Retrofit to serialize and deserialize Java objects to and from XML using the JAXB library. Users can now add the \converter-jaxb\ dependency and register the \JaxbConverterFactory\ to handle XML payloads. The implementation supports custom \JAXBContext\ configuration, handles character encoding correctly, and includes security hardening by disabling the loading of remote entities and external DTDs to prevent XXE attacks. Note that this converter is not compatible with Android.

retrofit-converters/jaxb · high confidence

Initial RxJava 2 adapter implementation

This change introduces the new \retrofit2:adapter-rxjava2\ module, providing a \CallAdapter.Factory\ that enables Retrofit to return RxJava 2 \Observable\ types. The implementation includes internal classes to handle both synchronous (\CallExecuteObservable\) and asynchronous (\CallEnqueueObservable\) execution, as well as a \BodyObservable\ to unwrap response bodies. It also includes a deprecated \HttpException\ wrapper for compatibility and applies \@EverythingIsNonNull\ annotations to the package.

retrofit-adapters/rxjava2/src/main/java · high confidence

Introduce Protobuf converter with streaming and extension registry support

The Protobuf converter now supports streaming serialization for request bodies via the new \withStreaming()\ factory method, which writes messages directly to the HTTP sink instead of buffering them in memory. Additionally, users can supply a custom \ExtensionRegistryLite\ during deserialization using \createWithRegistry\, enabling proper handling of Protobuf extensions in responses.

protobuf · high confidence

Introduce Scala adapter for converting Retrofit calls to Scala Futures

Added the Scala adapter implementation (retrofit2.adapter.scala) which provides BodyCallAdapter and ResponseCallAdapter. These adapters allow Retrofit calls to be adapted into Scala concurrent Futures, enabling asynchronous HTTP requests to integrate seamlessly with Scala's concurrency model.

scala · high confidence

Introduces built-in support for Java 8+ features and Kotlin coroutines

Retrofit now includes first-party support for Java 8+ and Kotlin coroutines out of the box. On Android API 24+ and Java 8+, the library automatically registers a \CompletableFutureCallAdapterFactory\ and an \OptionalConverterFactory\, enabling service methods to return \CompletableFuture\ and \Optional\ types without additional configuration. Additionally, new Kotlin extensions (\await\, \awaitResponse\) and internal infrastructure allow service interface methods to be declared as \suspend\ functions, seamlessly integrating Retrofit with Kotlin coroutines.

retrofit/src/main/java/retrofit2 · high confidence

Jackson converter now supports binary formats and streaming

The Jackson converter in retrofit-converters/jackson has been expanded to support non-JSON data formats, including CBOR and XML, by allowing users to supply specific Jackson mappers (such as CBORMapper or XmlMapper) and corresponding media types. Additionally, the converter now supports streaming for request bodies, enabling more efficient handling of large payloads. This change is accompanied by new tests for CBOR serialization and streaming functionality, as well as updated documentation detailing multi-format support.

retrofit-converters/jackson · high confidence

New Response Type Keeper module to prevent R8 optimization issues

This change introduces the \retrofit-response-type-keeper\ module, an annotation processor that automatically generates ProGuard/R8 keep rules for types used in Retrofit service method return values. By scanning methods annotated with HTTP verbs (GET, POST, etc.) and handling nested generics as well as Kotlin suspend functions, it ensures that response types are preserved during code shrinking, preventing runtime validation failures when R8 replaces generic types with wildcards.

retrofit-response-type-keeper · high confidence

New behavior-driven mock API with NetworkBehavior and coroutine support

The retrofit-mock module introduces a new \BehaviorDelegate\ pattern that applies configurable network characteristics—such as delay, variance, failure rates, and HTTP error simulation—to mock Retrofit service interfaces. Users can now create mock services via \MockRetrofit.Builder\ that simulate realistic network conditions using \NetworkBehavior\, including the ability to trigger specific HTTP error responses. This new API also adds first-class support for Kotlin \suspend\ functions, allowing mock calls to be used directly in coroutines via \BehaviorDelegate\.

retrofit-mock/src/main · high confidence

New samples demonstrating advanced Retrofit patterns

The samples directory now includes examples for using custom converter factories to select serialization formats via annotations (AnnotatedConverters, JsonAndXmlConverters), handling chunked request bodies (ChunkingConverter), and deserializing error response bodies (DeserializeErrorBody). It also provides samples for custom call adapters with granular error handling (ErrorHandlingAdapter), tracking invocation metrics via interceptors (InvocationMetrics), using RxJava with custom schedulers (RxJavaObserveOnMainThread), and creating mock service implementations (SimpleMockService). Additional samples cover dynamic base URLs via interceptors (DynamicBaseUrl), web crawling (Crawler), and conditional logging (ConditionalLoggingInterceptor).

samples · high confidence

RxJava adapter now supports Result, Single, and Completable return types

The RxJava adapter has been updated to support additional RxJava types and error-handling patterns. Users can now return \Single\ and \Completable\ types from service methods, in addition to the existing \Observable\ support. The adapter also introduces a \Result\<T\>\ wrapper type, allowing users to handle both successful responses and errors within a single stream via \Observable\<Result\<T\>\>\, rather than relying solely on \onError\ for failures. Additionally, a new \createAsync()\ factory method is available to create asynchronous observables, and a default scheduler can be specified via \createWithScheduler()\.

rxjava · high confidence

Streaming support for Jackson request bodies

The Jackson converter now supports streaming serialization for request bodies. Users can enable this behavior by calling \withStreaming()\ on the \JacksonConverterFactory\, which causes large request payloads to be written directly to the HTTP output stream via \ObjectWriter.writeValue\ instead of being fully buffered in memory as byte arrays. This change improves memory efficiency for large requests without altering the default non-streaming behavior.

jackson, wire · high confidence

Behavioural changes

Added ProGuard keep rules for RxJava Result types

The RxJava 1.x and RxJava 2.x adapters now include explicit ProGuard configuration files that preserve the generic signatures of the \Result\ class. This ensures that when using R8 full mode, the adapter correctly handles \Result\ types used as nested return types (such as \Observable\<Result\<String\>\>\), preventing signature stripping that could break functionality.

retrofit-adapters/rxjava/src/main/resources, retrofit-adapters/rxjava2/src/main/resources · high confidence

Apply non-null annotations to Gson and Moshi converter packages

The Gson and Moshi converter packages now explicitly declare that all types and parameters are non-null by adding the @EverythingIsNonNull annotation to their package-info.java files. This change provides static analysis tools with clearer nullability contracts for these specific modules, helping developers catch potential null-pointer issues at compile time rather than at runtime.

retrofit-converters/gson/src/main, retrofit-converters/moshi/src/main · high confidence

Deprecate local HttpException in favor of core Retrofit type

The Java 8 adapter module now includes a deprecated HttpException class that extends the core retrofit2.HttpException, signaling that users should migrate to the shared core type instead of relying on the adapter-specific exception. Additionally, the package is annotated with @EverythingIsNonNull to enforce non-null contract expectations across the module.

retrofit-adapters/java8/src/main · high confidence

Java 8 Optional converter factory deprecated

The \Java8OptionalConverterFactory\ in the \retrofit-converters/java8\ module is now deprecated, as support for \Optional\ types has been moved into the Retrofit core. Users no longer need to explicitly add this converter to their Retrofit instance; the core library handles \Optional\<T\>\ deserialization automatically. The converter class remains present but marked with \@Deprecated\ to guide users toward the built-in functionality.

retrofit-converters/java8/src/main · high confidence

New Moshi converter with streaming, null serialization, and strict parsing options

The Moshi converter factory now supports several configuration options to tailor JSON handling. Users can enable streaming serialization for request bodies via \withStreaming()\, which writes JSON directly to the HTTP sink instead of buffering it in memory. Null values can be included in serialized output using \withNullSerialization()\. For parsing, \asLenient()\ allows more flexible JSON reading, while \failOnUnknown()\ causes deserialization to fail if unknown fields are encountered. Additionally, the converter now strictly validates that the entire JSON document is consumed during response parsing and automatically skips a leading UTF-8 BOM if present.

moshi · high confidence

New website documentation site

The documentation site has been rebuilt using Astro and Starlight. This update introduces a new content configuration that displays a snapshot banner for non-release builds, implements a green-themed CSS design with dark and light mode support, and migrates the documentation content to Markdown/MDX files.

website/src · high confidence

Refactored RxJava 1.x adapter with new CallArbiter and deprecated HttpException

The RxJava 1.x adapter now uses a new internal \CallArbiter\ class to manage the lifecycle and state transitions between the HTTP call and the RxJava subscriber, ensuring that downstream disposal is not conflated with upstream cancellation and that wrapped or re-thrown exceptions during \onComplete\ and \onError\ are explicitly handled via \RxJavaPlugins\. Additionally, the legacy \retrofit2.adapter.rxjava.HttpException\ class is now deprecated in favor of the standard \retrofit2.HttpException\, and the package is annotated with \@EverythingIsNonNull\ to enforce null-safety.

retrofit-adapters/rxjava/src/main/java · high confidence

Refactored default method invocation to use Java 16+ public API

The implementation for invoking default methods on interfaces has been split into version-specific classes within the multi-release JAR structure. For Java 14 and 15, the code uses \MethodHandles.lookup().unreflectSpecial()\, while for Java 16 and later, it switches to the new public \InvocationHandler.invokeDefault()\ API. This change improves compatibility and correctness by leveraging the official Java 16 feature for default method invocation on proxies.

retrofit/src/main/java14, retrofit/src/main/java16 · high confidence

Retrofit 2 HTTP annotation API introduction

This change introduces the complete set of \retrofit2.http\ annotations for Retrofit 2, replacing the previous version's API. The new package includes method-level annotations for HTTP verbs (\@GET\, \@POST\, \@PUT\, \@DELETE\, \@PATCH\, \@HEAD\, \@OPTIONS\, \@HTTP\) and request body handling (\@Body\, \@FormUrlEncoded\, \@Multipart\, \@Part\, \@PartMap\). It also provides parameter annotations for URL path (\@Path\), query (\@Query\, \@QueryMap\, \@QueryName\), headers (\@Header\, \@HeaderMap\, \@Headers\), and dynamic URLs (\@Url\). New capabilities include the \@Tag\ annotation for attaching request metadata and support for non-ASCII header values via the \allowUnsafeNonAsciiValues\ attribute.

retrofit/src/main/java/retrofit2/http · high confidence

SimpleXML converter deprecated with encoding fix and test migration

The SimpleXML converter is now deprecated in favor of the JAXB converter, as the SimpleXML project is no longer maintained. This update also ensures that XML deserialization correctly honors the character encoding specified in the response headers (e.g., GBK), fixing potential data corruption for non-UTF-8 content. Additionally, the test suite has been migrated to use Google Truth for assertions and fixed to be robust against serialization order variations.

retrofit-converters/simplexml · high confidence

SimpleXML converter is deprecated

The SimpleXML converter factory and its associated request/response converters are now marked as deprecated, signaling that users should migrate to the JAXB converter instead. The implementation remains available but is no longer recommended for new development.

simplexml · high confidence

Standardize nullability annotations and update ProGuard rules for Protobuf converter

The Protobuf converter module now uses the internal @EverythingIsNonNull annotation for package-level nullability, replacing previous defaults, and includes updated ProGuard keep rules to ensure reflective access to the parser() method and the legacy PARSER field in classes implementing MessageLite.

retrofit-converters/protobuf/src/main · high confidence

Streaming support and stricter JSON consumption in Gson converter

The Gson converter now supports streaming serialization for request bodies via the new \withStreaming()\ method on \GsonConverterFactory\, which writes JSON directly to the HTTP output stream instead of buffering it in memory. Additionally, response body conversion now asserts that the entire JSON document is consumed, throwing a \JsonIOException\ if trailing content remains, ensuring stricter validation of incoming JSON.

gson · high confidence

Website rebuilt with Astro and Starlight with versioned documentation support

The documentation site has been migrated to use the Astro framework with the Starlight theme, replacing the previous implementation. This change introduces mode-specific environment configurations (\.env.release\ and \.env.snapshot\) to manage the site URL and base path, allowing the build process to distinguish between production releases and snapshot builds. The new configuration includes a sidebar that organizes resources by version, providing direct links to Javadoc for 1.x, 2.x, and 3.x, and integrates a link validator plugin to maintain documentation integrity.

website · high confidence

Wire converter adds nullability annotations and ProGuard keep rules

The Wire converter now enforces non-null contract expectations via the @EverythingIsNonNull annotation on its package, ensuring that null values are not passed to its methods. Additionally, a ProGuard configuration file has been added to preserve the reflective access to the ADAPTER field in Wire Message classes, preventing obfuscation issues during release builds.

retrofit-converters/wire/src/main · high confidence

Test coverage

Added Android integration tests for CompletableFuture, Optional, and Uri support; Added Android integration tests for basic calls and default methods; Added Java test suite for core Retrofit components; Added Kotlin-specific test coverage for suspend functions and extensions; Added RoboVM platform compatibility test; Added comprehensive test coverage for RxJava 2 adapter; Added comprehensive test suite for core Retrofit components; Added phone.proto test schema for Protobuf converter; Added test coverage for the RxJava 3 adapter; Added tests for Gson converter factory and streaming support; Added tests for Guava and Java 8 Optional converter factories; Added tests for Kotlin Unit and raw Response types; Added tests for Moshi converter factory configuration and behavior; Added tests for Protobuf converter fallback and extension registry support; Added tests for Wire converter serialization and streaming behavior; Added tests for the Guava ListenableFuture adapter; Added tests for the Java 8 CompletableFuture adapter; Added tests for the Scalars converter factory; Added tests for the new mock behavior delegate and call utilities; Expanded test coverage for RxJava adapter error handling and lifecycle; New test-helpers module for internal testing utilities.

Dependencies

Added ProGuard and R8 configuration for Retrofit

A new ProGuard rules file (retrofit2.pro) has been added to ensure Retrofit works correctly with modern Android code shrinking and obfuscation tools like R8 and D8. The rules preserve generic signatures, inner classes, and annotations required for Retrofit's reflection-based API generation, specifically addressing issues with R8 full mode where generic type information might otherwise be stripped. It also includes specific keep rules for Kotlin extensions, suspend functions, and inherited service interfaces to prevent runtime errors during optimization.

retrofit/src/main/resources · high confidence

Migrate build system to Gradle with version catalogs

The project has converted its build configuration from Maven/Gradle hybrid or legacy formats to a modern Gradle multi-project structure. This change introduces a central \gradle/libs.versions.toml\ file to manage all dependency versions (including Kotlin 2.4.10, OkHttp 5.5.0, and Android Gradle Plugin 9.3.2) and uses type-safe project accessors for subproject references. The build now enforces Java 8 toolchains, integrates Error Prone for static analysis, applies Spotless for code formatting, and configures Animal Sniffer for API compatibility checks. Subprojects for adapters (Guava, Java 8, RxJava, Scala) and converters (Gson, Jackson, JAXB, Moshi, Protobuf, etc.) are now defined as individual Gradle modules with explicit dependency declarations.

(dependencies) · high confidence

Upgrade Gradle wrapper to version 9.7.1

The project's Gradle wrapper has been updated to use Gradle 9.7.1. This ensures that builds are executed with a consistent, specific version of the Gradle build tool, eliminating potential discrepancies caused by different local Gradle installations and leveraging the features and stability of the latest release.

gradle · high confidence

Housekeeping

Initial project scaffolding and documentation

The repository has been initialized with essential configuration and documentation files, including an .editorconfig for consistent code formatting, .gitattributes and .gitignore for version control hygiene, and a BUG-BOUNTY.md file directing security researchers to report vulnerabilities via Bugcrowd. Standard project files such as the Apache 2.0 LICENSE, a detailed CHANGELOG.md, CONTRIBUTING.md guidelines, and RELEASING.md procedures have been added, alongside the Gradle wrapper scripts (gradlew, gradlew.bat) to enable consistent builds. The old README file was replaced with a new one specifying Java 8/Android 21+ requirements and Maven coordinates for version 3.0.0.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 59 → 63 (+4.0)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 81 → 88 (+7.3)
  • Architecture 100 → 85 (-15.1)
  • Maturity 55 → 61 (+5.4)
  • Readiness 46 → 55 (+9.8)
  • Security 85 → 70 (-15.0)

Resolved (33)

  • Concentrated knowledge decay
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (retrofit-converters/moshi/src/main/java/retrofit2/converter/moshi/MoshiConverterFactory.java)
  • Duplicated block (10 lines × 2) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (11 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/BodyObservable.java)
  • Duplicated block (11 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/ResultObservable.java)
  • Duplicated block (12 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/CallExecuteObservable.java)
  • Duplicated block (12 lines × 2) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (12 lines × 2) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (12 lines × 2) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/java8/src/main/java/retrofit2/adapter/java8/Java8CallAdapterFactory.java)
  • Duplicated block (14 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/CallEnqueueObservable.java)
  • Duplicated block (14 lines × 3) (retrofit-adapters/guava/src/main/java/retrofit2/adapter/guava/GuavaCallAdapterFactory.java)
  • Duplicated block (14 lines × 3) (retrofit-adapters/rxjava/src/main/java/retrofit2/adapter/rxjava/RxJavaCallAdapterFactory.java)
  • Duplicated block (15 lines × 2) (retrofit/src/main/java/retrofit2/ParameterHandler.java)
  • Duplicated block (17 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/RxJava2CallAdapter.java)
  • Duplicated block (17 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/RxJava2CallAdapterFactory.java)
  • Duplicated block (5 lines × 2) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (6 lines × 3) (retrofit/src/main/java/retrofit2/Retrofit.java)
  • …and 13 more

New (1271)

  • ClassTooLong: RequestFactory (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (retrofit-adapters/java8/README.md)
  • Documentation: no installation or build instructions (retrofit-adapters/rxjava2/README.md)
  • Duplicated block (10 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/CallEnqueueObservable.java)
  • Duplicated block (10 lines × 2) (retrofit-converters/jaxb/src/main/java/retrofit2/converter/jaxb/JaxbResponseConverter.java)
  • Duplicated block (10 lines × 2) (retrofit-converters/moshi/src/main/java/retrofit2/converter/moshi/MoshiConverterFactory.java)
  • Duplicated block (10 lines × 3) (retrofit-converters/guava/src/main/java/retrofit/converter/guava/GuavaOptionalConverterFactory.java)
  • Duplicated block (10–11 lines × 2) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (10–12 lines × 2) (retrofit/src/main/java/retrofit2/Retrofit.java)
  • Duplicated block (11 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/RxJava2CallAdapter.java)
  • Duplicated block (12 lines × 6) (retrofit/src/main/java/retrofit2/RequestFactory.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/java8/src/main/java/retrofit2/adapter/java8/Java8CallAdapterFactory.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/rxjava/src/main/java/retrofit2/adapter/rxjava/BodyOnSubscribe.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/rxjava/src/main/java/retrofit2/adapter/rxjava/CallArbiter.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/BodyObservable.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/BodyObservable.java)
  • Duplicated block (13 lines × 2) (retrofit-adapters/rxjava2/src/main/java/retrofit2/adapter/rxjava2/ResultObservable.java)
  • Duplicated block (13 lines × 2) (retrofit-converters/jaxb/src/main/java/retrofit2/converter/jaxb/JaxbRequestConverter.java)
  • Duplicated block (14 lines × 4) (retrofit/src/main/java/retrofit2/ParameterHandler.java)
  • …and 1251 more

Changes since last survey

  • 42 commits — 42 feature/other, 0 fixes

By area

  • gradle/libs.versions.toml — 20 commits
  • .github/workflows — 17 commits
  • (repo) — 1 commit
  • (root) — 1 commit
  • .github/renovate.json5 — 1 commit
  • gradle/wrapper — 1 commit
  • website/astro.config.mjs — 1 commit

Notable commits

  • change: Grant write permission for publish jobs (#4752)
  • change: Merge pull request #4716 from lysine-dev/jw.common-renovate-config.2026-08-21
  • change: New contributing doc (#4713)
  • change: Pin JamesIves/github-pages-deploy-action action to 132898c (#4746)
  • change: Update Gradle to v9.7.1 (#4737)
  • change: Update JamesIves/github-pages-deploy-action action to v3.7.1 (#4748)
  • change: Update JamesIves/github-pages-deploy-action action to v4 (#4750)
  • change: Update actions/checkout action to v6.1.0 (#4721)
  • change: Update actions/checkout action to v7 (#4743)
  • change: Update actions/download-artifact action to v8.0.1 (#4717)
  • change: Update actions/setup-java action to v5.7.0 (#4722)
  • change: Update actions/upload-artifact action to v7.0.1 (#4718)
  • change: Update dependency com.android.tools.build:gradle to v9.3.1 (#4723)
  • change: Update dependency com.android.tools.build:gradle to v9.3.2 (#4756)
  • change: Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.0 (#4724)
  • change: Update dependency com.facebook:ktfmt to v0.64 (#4725)
  • change: Update dependency com.google.code.gson:gson to v2.14.0 (#4727)
  • change: Update dependency com.google.googlejavaformat:google-java-format to v1.36.1 (#4728)
  • change: Update dependency com.google.guava:guava to v33.7.1-jre (#4729)
  • change: Update dependency com.google.protobuf:protobuf-gradle-plugin to v0.10.0 (#4730)
  • …and 22 more

Architecture

  • Containers 0 added · 0 removed · contexts 20 added · 1 removed · edges 20 added · 0 removed

Added bounded contexts (20)

  • android-test
  • gson
  • guava
  • jackson
  • java-test
  • java8
  • jaxb
  • jaxb3
  • kotlin-test
  • moshi
  • protobuf
  • retrofit
  • retrofit-mock
  • rxjava
  • rxjava2
  • rxjava3
  • samples
  • scala
  • simplexml
  • wire

Removed bounded contexts (1)

  • .

Added dependency edges (20)

  • android-test → retrofit
  • gson → retrofit
  • guava → retrofit
  • jackson → retrofit
  • java-test → retrofit
  • java8 → retrofit
  • jaxb → retrofit
  • jaxb3 → retrofit
  • kotlin-test → retrofit
  • moshi → retrofit
  • protobuf → retrofit
  • retrofit-mock → retrofit
  • rxjava → retrofit
  • rxjava2 → retrofit
  • rxjava3 → retrofit
  • samples → retrofit
  • samples → retrofit-mock
  • scala → retrofit
  • simplexml → retrofit
  • wire → retrofit

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

lysine-dev/retrofit was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e27d855b7b029e7f907dfc52205fdb3e9c603c16 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5f8d0eb43fd7.