What fly ash replaces, and what it does not
Portland cement is the ingredient that reacts with water and binds everything else together. A mix design can swap out some of that cement for fly ash and still hit the specified strength, because fly ash reacts too, just on a slower schedule alongside the cement rather than instead of it.
That is the point people get backwards. Fly ash is not an extra thrown into the mixer for good measure. It is a substitution, decided at the plant, against a written spec, the same way any other proportion in the batch is decided.
Why a mix design uses it anyway
Fly ash tends to make fresh concrete easier to place and finish, because the round shape of the particles helps the mix flow with less water for the same workability. It also keeps reacting for a long time after the pour, which can add strength and durability months and years down the line, past the point straight cement mixes have mostly finished gaining.
Reduced heat of hydration is another reason it turns up in mass pours, since a big volume of curing concrete that heats up unevenly is its own kind of cracking risk. None of that is a claim about any specific job. It is why the option exists in a mix designer's toolbox at all.
The trade off worth knowing
The slower reaction that helps long term strength also means slower early strength. A fly ash mix can take longer to reach the point where forms strip or finishing starts, and that matters most in cold weather, when the concrete is already working against low temperatures on its own.
None of that makes fly ash the wrong call. It makes it a timing question, decided against the season and the schedule for that specific pour rather than assumed either way.
A plant will set the replacement percentage against the strength, the exposure and the weather the job is going into, not against a fixed rule. That is the same reason two mixes labeled the same PSI can behave differently on the same cold morning.