Latest stable Ecto: 3.14.2, released (release notes). 18 stable releases since 7 Mar 2024.
Ecto
The database wrapper and query language for Elixir.
3.14.2current release, 14 August 2026
#Ecto.Changeset< action: :release, version: "3.14.2", changes: %{ Ecto.Changeset: [ "changed?/3 for removed one-to-one relations", "stale belongs_to keys in apply_changes/1", "prepare_changes kept in merge/2", "default :on_cast kept in relation metadata" ], Ecto.Repo: [ "caller’s Logger level reaches preload tasks", "writable fields enforced after prepare_changes" ], Ecto.Schema: [ ":writable for :inserted_at in timestamps/1", "autogenerate options for composite types", "no compile-time deps from @derive" ], Ecto.Query: [ "source field caching for map updates" ] }, errors: [ Ecto.Type: {"normalize DateTime casts to UTC", [note: "reverted in the next release"]} ], valid?: false >
- 18stable releases since Mar 2024
- 31days between stable releases, median
- 4in Jun 2025, the busiest month
- 195days, the longest wait (28 Nov 2024 to 11 Jun 2025)
Ecto 3.14.2 went out on 14 August 2026, and the changelog carries a warning against one of its own entries: the change that normalizes DateTime casts to UTC is marked as reverted in the next release. Ten weeks later there is no next release, so the current Ecto still casts that way.
The unreleased 3.15 section also changes a default. validate_length/3 will count Unicode codepoints instead of graphemes, which is how databases usually enforce string limits, so a length check on text with emoji or combining marks can start failing. Ecto has been on version 3 since October 2018: 87 stable releases in eight years.
As of 24 October 2026. Ecto changelog.
Latest releases
3.14.2Changeset and Repo fixes; DateTime casts normalized to UTC, marked for revert.3.14.1UUIDv7 helpers and :on_writable_violation for fields.3.14.0UUIDv7, reorder_assoc/2, :replace_changed upserts for PostgreSQL HOT updates.3.13.6Relaxes the decimal requirement.3.13.5Select a subset of a subquery as a struct.
