Apple could be inserting code to slow down phones in a very controlled and deliberate effort:
if (version <= iPhone7) {
wait_ms(100);
}
This is what I think of when someone says Apple is deliberately slowing down phones but I don't find this credible.For this specific case Apple's explanation, they started throttling down CPUs based on battery age to prevent unexpected phone shutdowns make sense. I do have issue with how this was initially messaged (a.k.a. it wasn't) but I understand why, consumer tech news tends to be very low information. It doesn't make sense for Apple to try to explain to users the details of every tweak to power management settings, and if they did it would either be lost on most consumers or be transformed in to negative headlines about how updating your phone makes it slower, in large part because the headline "Will the New iOS Update Slow Down your iPhone?" gets more clicks than "Apple makes Incremental Improvements to Power Management of iPhones as Part of Long-Term Strategy". So I understand the strategy of saying nothing.
Furthermore I expect most of the actual (not perceived) slow down is from dozens of conversations like happening:
Eng: New feature FooBar is awesome we should include it in the next iOS release. QA: FooBar isn't passing latency tests on our latest iPhone so you can't include it. Eng: Darn :(
<2 years later>
Eng: I still think Foobar is awesome, and look it very snappy on my current phone. QA: It works on our latests phones too, and users like it. Okay it is in! Eng: Yay.
This is fundamental to how software has been developed forever. We make faster hardware to be able to run more complex taxing software and than means older hardware will be slower in comparison.