xebia-functional/fetch
57.2
Adequate · 20 September 2026
1.4k
lines of production code
Scala
with JavaScript
1
measurement over time
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.