# trailblazer/reform

Form objects decoupled from models.

Repository: https://github.com/trailblazer/reform
Canonical: https://ross.abutalabs.com/products/reform
Homepage: https://trailblazer.to/2.1/docs/reform.html
Language: Ruby
License: MIT
License Family: permissive
Last push: 2025-08-25T12:50:07+00:00

## Health v2 (maintenance only)
Score: 40/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 38, release rhythm 8, longevity 100
- inputs: {"age_days": 4873, "days_push": 373, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2488, forks 180 (observed 2026-08-28T04:06:55.719024+00:00)

## What it is
Reform is a Ruby library providing form objects decoupled from models, with validations, coercion, and nested model setup. It is framework-agnostic, integrates with Rails and simple_form, and is part of the Trailblazer architecture suite.

## Use cases
- validate incoming params in API apps without touching models
- move validations out of fat ActiveRecord models into form objects
- build nested forms for has_many and has_one relationships
- compose a form from multiple model objects
- coerce and deserialize JSON input before persisting
- prepopulate form fields before rendering an edit page

## When to choose
- you want validation logic separated from persistence models
- you use Rails, Hanami, or any Ruby framework and need framework-agnostic forms
- you need nested or composed forms mapping to object graphs
- you are adopting the Trailblazer architecture

## When to avoid
- you want simple built-in Rails strong parameters and model validations
- your project avoids additional abstraction layers
- you need a frontend form UI library rather than server-side form objects

## Facets
- artifact type: library
- maturity: stable
- function: form-handling, serialization, middleware
- domain: web-development, backend, developer-tools
- platform: ruby, jvm
- tags: form-objects, trailblazer, dry-validation, rails, coercion, nested-forms

## Member repositories
- trailblazer/reform (main) score 40

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:06:55.719024+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:27:52.642947+00:00, confidence not recorded.
  - readme: https://github.com/trailblazer/reform (fetched 2026-08-28T04:06:55.719024+00:00, sha e787191d109c)
  - homepage: https://trailblazer.to/2.1/docs/reform.html (fetched 2026-08-29T10:09:56.866539+00:00, sha d83e657cd4b7)
  - site_page: https://trailblazer.to/2.1/docs/trailblazer (fetched 2026-08-29T10:09:56.877337+00:00, sha 0d8721ca2266)
  - site_page: https://trailblazer.to/2.1/about (fetched 2026-08-29T10:09:56.880118+00:00, sha 978259f029a8)
  - site_page: https://trailblazer.to/2.1/docs/operation (fetched 2026-08-29T10:09:56.882042+00:00, sha b73ae1d528a4)
  - site_page: https://trailblazer.to/2.1/docs/activity/deprecated (fetched 2026-08-29T10:09:56.887217+00:00, sha 4d98f56be12b)
  - site_page: https://trailblazer.to/2.1/docs/rails_integration (fetched 2026-08-29T10:09:56.889082+00:00, sha 0dee9e4f1cd0)
  - site_page: https://trailblazer.to/2.1/docs/test (fetched 2026-08-29T10:09:56.891120+00:00, sha a406f4c9605e)
  - site_page: https://trailblazer.to/2.1/docs/macro (fetched 2026-08-29T10:09:56.893526+00:00, sha d647a910bf24)
  - site_page: https://trailblazer.to/2.1/docs/workflow (fetched 2026-08-29T10:09:56.896454+00:00, sha ac86a27b46fe)
- Data as of 2026-08-30T08:39:29.467469+00:00.
