<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij" -->

---
title: Release v0.7.0 · fuelen/composite | daily.dev
description: Composite v0.7.0 adds apply_tagged/1 and apply_tagged/3 functions that return :unchanged or {:changed, query} so callers can skip passing unchanged queries to...
canonical: https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Release v0.7.0 · fuelen/composite | daily.dev
og:description: Composite v0.7.0 adds apply_tagged/1 and apply_tagged/3 functions that return :unchanged or {:changed, query} so callers can skip passing unchanged queries to...
og:url: https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij
og:image: https://api.daily.dev/og/posts/Yrw1mbZIj.png
og:image:alt: Release v0.7.0 · fuelen/composite
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Release v0.7.0 · fuelen/composite

**[ElixirStatus](https://daily.dev/sources/elixirstatus)** · 2 min read · 0 upvotes · 0 comments

## Summary

Composite v0.7.0 adds apply_tagged/1 and apply_tagged/3 functions that return :unchanged or {:changed, query} so callers can skip passing unchanged queries to Repo.all/1. The minimum Elixir version requirement is raised from ~> 1.9 to ~> 1.14 to match Ecto's minimum. Dependency ordering now respects :requires instead of an unordered MapSet, duplicate dependency declarations emit a warning, and several strict: true crashes involving nested nil parameters are fixed. Internal changes include an O(n·m) to amortized O(n) refactor and new CI on Elixir 1.14/1.19.4.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/fuelen/composite/releases/tag/v0.7.0>

## Questions this post answers

### What is the minimum Elixir version required by Composite v0.7.0?

Composite v0.7.0 requires Elixir ~> 1.14 as its minimum version, up from ~> 1.9 in earlier releases. This change was made to match Ecto's own minimum Elixir version requirement, meaning projects on older Elixir versions must upgrade before adopting this release.

_daily.dev helps developers track dependency version bumps like this before they break a build._

### How do I avoid passing an unchanged Ecto query to Repo.all/1 when using Composite?

Use the new Composite.apply_tagged/1 or apply_tagged/3 functions introduced in version 0.7.0, which return :unchanged when the resulting query compares equal (==) to the input, or {:changed, query} otherwise. This lets calling code short-circuit and skip an unnecessary Repo.all/1 call on an unmodified query.

_Elixir developers optimizing Ecto query pipelines can follow library updates like this on daily.dev._

### Why did dependency loading order change in Composite's dependency/4 macro?

The previous MapSet-based implementation for handling dependency/4 declarations did not preserve declaration order, so dependencies could load out of sequence. Version 0.7.0 fixes this so dependencies now load in the order specified by :requires, and declaring the same dependency name twice emits an IO.warn/1 message while still overwriting the previous loader.

_daily.dev keeps developers current on library fixes that change dependency behavior like this._

## Similar posts on daily.dev

- [Elixir v1.20.0-rc.2 released](https://daily.dev/posts/elixir-v1-20-0-rc-2-released-vo8dwwpw4) · Elixir Forum · 1 upvotes · 0 comments
- [Release v0.9.0 · fuelen/seed\_factory](https://daily.dev/posts/release-v0-9-0-fuelen-seed-factory-b8rwahime) · ElixirStatus · 0 upvotes · 0 comments
- [Elixir v1.19 released: enhanced type checking, broader type inference, and up to 4x faster compilation for large projects](https://daily.dev/posts/elixir-v1-19-released-enhanced-type-checking-broader-type-inference-and-up-to-4x-faster-compilati-rc2s8j4bd) · Elixir · 22 upvotes · 0 comments
- [Elixir v1.19.3 released](https://daily.dev/posts/elixir-v1-19-3-released-rdvbiq3r9) · Elixir Forum · 2 upvotes · 0 comments
- [Release v0.9.0 · elixir-error-tracker/error-tracker](https://daily.dev/posts/release-v0-9-0-elixir-error-tracker-error-tracker-b1rl9iyou) · ElixirStatus · 0 upvotes · 0 comments

---

Tags: [#elixir](https://daily.dev/tags/elixir), [#ecto](https://daily.dev/tags/ecto)

[View this post on daily.dev](https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Release v0.7.0 · fuelen/composite","url":"https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij"},"datePublished":"2026-08-22T18:18:45.987Z","dateModified":"2026-08-22T18:19:05.308Z","description":"Composite v0.7.0 adds apply_tagged/1 and apply_tagged/3 functions that return :unchanged or {:changed, query} so callers can skip passing unchanged queries to...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8e00140a79053dabfa859ddddc46bacf?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8e00140a79053dabfa859ddddc46bacf?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"ElixirStatus","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ElixirStatus","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/22e4640538124187827caf8cc8e39190","url":"https://daily.dev/sources/elixirstatus"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"elixir,ecto","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ElixirStatus","item":"https://daily.dev/sources/elixirstatus"},{"@type":"ListItem","position":3,"name":"Release v0.7.0 · fuelen/composite"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/release-v0-7-0-fuelen-composite-yrw1mbzij#faq","mainEntity":[{"@type":"Question","name":"What is the minimum Elixir version required by Composite v0.7.0?","acceptedAnswer":{"@type":"Answer","text":"Composite v0.7.0 requires Elixir ~> 1.14 as its minimum version, up from ~> 1.9 in earlier releases. This change was made to match Ecto's own minimum Elixir version requirement, meaning projects on older Elixir versions must upgrade before adopting this release. daily.dev helps developers track dependency version bumps like this before they break a build."}},{"@type":"Question","name":"How do I avoid passing an unchanged Ecto query to Repo.all/1 when using Composite?","acceptedAnswer":{"@type":"Answer","text":"Use the new Composite.apply_tagged/1 or apply_tagged/3 functions introduced in version 0.7.0, which return :unchanged when the resulting query compares equal (==) to the input, or {:changed, query} otherwise. This lets calling code short-circuit and skip an unnecessary Repo.all/1 call on an unmodified query. Elixir developers optimizing Ecto query pipelines can follow library updates like this on daily.dev."}},{"@type":"Question","name":"Why did dependency loading order change in Composite's dependency/4 macro?","acceptedAnswer":{"@type":"Answer","text":"The previous MapSet-based implementation for handling dependency/4 declarations did not preserve declaration order, so dependencies could load out of sequence. Version 0.7.0 fixes this so dependencies now load in the order specified by :requires, and declaring the same dependency name twice emits an IO.warn/1 message while still overwriting the previous loader. daily.dev keeps developers current on library fixes that change dependency behavior like this."}}]}
```

