Skip to content
CAI
Software that uses CAICheck a score

xebia-functional/fetch

57.2

Adequate · 20 September 2026

1.4k

lines of production code

Scala

with JavaScript

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Scala library for efficient remote data fetching that minimizes network round-trips through automatic batching and deduplication. It provides a composable API for defining data sources and executing fetches across various backends, including HTTP, databases, and caches. The library includes utilities for debugging execution logs and supports cross-compilation for Scala 2.12, 2.13, and 3.x on both JVM and JavaScript platforms.

Features

Introduce batching across unrelated fetches and logging support

The library now supports batching requests across unrelated fetches via the new \DataSource.batchAcrossFetches\ method, which allows simultaneous but independent fetches to be transparently combined into a single batch call within a configurable time interval. Additionally, a new \Log\ trait and \FetchLog\ implementation have been added to record fetch execution rounds, providing visibility into request durations and query details during fetch execution.

repository · high confidence

New debug module for human-readable fetch logging

A new \fetch-debug\ module has been added, providing utilities to convert internal fetch execution logs and exceptions into human-readable string representations. This allows users to easily inspect and debug fetch operations by viewing formatted details such as round counts, request durations, cached status, and error contexts.

fetch-debug · high confidence

New syntax helpers for batching and lifting values in Fetch

Users now have convenient syntax extensions for working with Fetch. You can lift plain values or exceptions directly into the Fetch context using .fetch on any value or Throwable. Additionally, batching has been simplified: sequences of Fetch requests can now be executed in parallel using .batchAll, and you can map a function over a sequence of values and batch the resulting fetches using .batchAllWith.

fetch/src/main · high confidence

Project scaffolding and documentation overhaul

The repository has been initialized with standard 47 Degrees governance files, including Apache 2.0 LICENSE.md, NOTICE.md, AUTHORS.md, CODE\_OF\_CONDUCT.md, and CONTRIBUTING.md. The README.md has been significantly expanded to include installation instructions for Scala 2.12/2.13 and Scala.js, along with detailed usage examples for defining data sources, creating runtimes, and running fetches. Configuration files for development tooling have been added, including .scalafmt.conf (version 3.9.4), .scala-steward.conf, .ruby-version, and an updated .gitignore.

(repo-wide) · high confidence

Removals

Removed legacy Fetch.scala implementation

The file src/main/scala/Fetch.scala, which contained the original Fetch abstraction, DataSource trait, and AST-based interpreter logic, has been deleted. This removes the foundational code for the remote data fetching library from this location.

src/main · high confidence

Behavioural changes

Fetch microsite rebranded to Xebia Functional with new visual identity

The Fetch project microsite has been updated to reflect the organization's rebranding from 47degrees to Xebia Functional. This change updates the site's metadata, navigation, and footer to display 'Xebia Functional' as the owner and organization, while retaining the 'fetch' repository name. The visual identity has also been refreshed with a new color palette (primary red \#DD4949, secondary dark blue \#104051), custom SVG icons for the three core features (Define, Run, Inspect), and a redesigned responsive layout for the header, navigation, and footer components.

microsite/src · high confidence

Test coverage

Added comprehensive test suite for Fetch execution, batching, and syntax; Added integration tests for Doobie, GitHub, GraphQL, HTTP, and Redis examples; Removed legacy FetchSpec test suite.

Dependencies

Initial project scaffolding with SBT 1.11.6 and updated library dependencies

This change introduces the initial build configuration for the project, establishing SBT version 1.11.6 and a suite of plugins including sbt-microsites, sbt-mdoc, sbt-scalajs, and sbt-ci-release. It defines the core library dependencies, setting cats-effect to 3.6.3 and scalatest to 3.2.19 for cross-building, while the examples module pulls in circe 0.14.14, doobie 1.0.0-RC10, http4s 0.23.x, jedis 6.2.0, and atto 0.9.5. The configuration also sets up microsite theming and documentation generation settings.

project · high confidence

Major build system overhaul and Scala version updates

The build configuration has been significantly restructured to support cross-compilation for Scala 2.12, 2.13, and 3.x across JVM and JS platforms. The project now defines specific Scala versions (2.12.20, 2.13.16, 3.3.7) and organizes the codebase into distinct subprojects including \fetch\, \fetch-debug\, \fetch-examples\, \microsite\, and \documentation\. This change also updates the organization to 'com.47deg', introduces CI command aliases for testing and documentation, and migrates documentation generation to Mdoc.

(dependencies) · 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

Baseline

  • First survey — no prior run to compare against. CAI 57.

Lenses

  • Code Health 93
  • Architecture 69
  • Maturity 53
  • Readiness 73
  • Security 66
  • Accessibility 52

Changes since last survey

  • 300 commits — 293 feature/other, 7 fixes

By area

  • project/ProjectPlugin.scala — 101 commits
  • (root) — 76 commits
  • project/plugins.sbt — 70 commits
  • project/build.properties — 33 commits
  • (repo) — 6 commits
  • fetch-examples/src — 4 commits
  • fetch/src — 3 commits
  • .github/workflows — 2 commits
  • docs/README.md — 2 commits
  • microsite/src — 2 commits
  • .github/release-drafter.yml — 1 commit

Notable commits

  • fix: Fix link to license
  • fix: Fixes README.md (#766)
  • fix: Fixes docs/README.md header
  • fix: Fixes issue #912: Executes liftF effect twice in a product composition
  • fix: Fixes organization for GitHubExample test (#709)
  • fix: Ignore github test until it is fixed
  • fix: Merge pull request #914 from Lost-Fly/fix-product-repeated-execution
  • change: Bump libraries (#719)
  • change: Caching GitHub responses (#710)
  • change: Dependencies bump (#888)
  • change: Logging cached requests (#706)
  • change: Merge branch 'main' into integration-xebia-functional
  • change: Merge pull request #679 from 47degrees/integration-xebia-functional
  • change: Merge pull request #684 from matsluni/patch-1
  • change: Merge pull request #915 from xebia-functional/ignore-github-test
  • change: Merge pull request #917 from xebia-functional/pin-scala-33
  • change: Pin repo to Scala 3.3 LTS
  • change: Sets github organization
  • change: Sets github organization and developer info
  • change: Update README.md (#718)
  • …and 280 more

Architecture

  • 0 containers · 1 bounded contexts · 0 dependency edges (baseline)

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

Survey your own repository

xebia-functional/fetch 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 20 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 290c0a4e991553e98c4a7359247195feaed03162 — 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-b51f968c9b10.