Ash Framework – Model your domain, derive the rest
Production experience & learning curve
- Several commenters report running Ash in production (sometimes replacing large NestJS or legacy apps) and describe big reductions in boilerplate, especially around GraphQL, authorization, and complex workflows.
- Others tried Ash for weeks, then restarted in plain Phoenix and were faster within days. They cite a “brutal” learning curve, cryptic errors, and poor early documentation.
- One team using Ash for ~9 months says productivity dropped and most devs dislike working in Ash, though they concede it enforces a standardized data layer.
What Ash is and where it fits
- Many readers are confused by the homepage: it’s not clear what Ash actually does or how it compares to Phoenix/Django/Rails.
- Core description offered in the thread: a declarative application/domain framework that sits between DB (Ecto) and web layer (Phoenix, or other UIs).
- It models resources with attributes, relationships, actions (“verbs”), behaviors (multi-tenancy, jobs), and facets (JSON API, GraphQL, etc.), then derives APIs, policies, specs, admin UIs, etc.
Macros, “magic”, and escape hatches
- Some fear it’s a “second language” or macro-heavy black magic.
- Defenders say the DSL is implemented via structs, with macros mostly thin wrappers; you can always drop down to plain Elixir, Ecto, or Absinthe for custom behavior.
- Critics counter that, in practice, macros + indirection produce opaque errors and force you to learn many “incantations.”
Documentation, book, and onboarding
- Earlier docs are widely described as insufficient for production; people leaned heavily on Discord and forums.
- The Ash book is repeatedly praised as the resource that makes concepts “click,” but its prominent placement on the homepage is viewed by some as a “money grab” or off‑putting for newcomers.
- Multiple commenters urge clearer high-level explanations, better landing-page copy, and more “cookbook” examples.
DX, installation, and tooling
- The curl|sh installer and randomly named example projects confuse some users; suggestions include more explicit multi-step instructions and clearer prompts to run generator tasks (Igniter) next.
- Others like the generators and note strong IDE/LSP support for the DSL is emerging.
Use cases, benefits, and limitations
- Praised for: deriving JSON/GraphQL/OpenAPI specs, powerful composable authorization policies, state machines, DAG-based workflows, admin UI generation, and removal of repetitive CRUD/context code.
- Seen as especially valuable for complex business apps and consultancies doing many similar backends.
- Critics worry it’s overkill for small/solo projects and exacerbates Elixir’s hiring/training niche.
- Comparisons are drawn to Django/Rails and model-driven development: some see Ash as “low code for engineers”; others see it as a return to the kind of “magic” they fled when adopting Elixir.