As of January 21st, 2020, Niantic implemented attack-based Charged Move Priority into trainer battles. Here we will break down what this means, and the specific method of implementation. As always, thanks to PvPoke.com for being a fantastic utility for PvP, and thanks to SparkSpencer for helping me test.
Charged Move Priority, or as it will herein be referred to, CMP, determines which Pokémon is allowed to use their charged move first if both would reach it on the same turn. Previously, it was determined randomly at each charged move, leading to some very frustrating losses where you couldn't win due to a coinflip.
How does it work now?
After this update, CMP is now determined by a Pokémon's true attack stat. This is a factor of IVs and levels, and can be found by plugging a Pokémon's stats into PvPoke.com. Whatever's listed next to Attack is the Pokémon's true attack. Whichever Pokémon has a higher true attack will get CMP, every single time.
Read on to get a greater understanding of how this was tested, and how other possibilities were eliminated.
First, two Skarmory were used. The first was 1498 CP, Lv25, 15/14/14, with a true attack stat of 108.8. The second was 1499 CP, Lv26.5, 7/13/12 IVs, with a true attack stat of 106.5. When both were exclusively using Air Slash and Sky Attack, the 15/14/14 won every time. This, at the very least, determines that it's true attack rather than a species' base attack stat, which would have given random CMP.
True Attack vs Attack IV
Another possibility that was considered was that CMP would be determined by a Pokémon's IV, rather than its actual attack stat. To this end, a Machamp with Counter + Rock Slide (1497 CP, Lv18, 6/11/15, true attack 136) was used against a Deoxys-Defense, also running Counter + Rock Slide. The Deoxys-Defense was 1481 CP, 12/14/12, true attack 101. Once again, both only used Counter and Rock Slide, and the Machamp won CMP every time, demonstrating that it's true attack rather than attack IV.
Impact of Debuffs
At this point, we can assume that it's based on the Pokémon's attack stat, so the next question was whether or not debuffed attack would be taken into account. To this end, the two Pokémon tested were Poliwrath running Mud Shot + Ice Punch and Poliwhirl with Mud Shot + Bubblebeam. Ice Punch and Bubblebeam both cost 40 energy, so it will exclusively come down to CMP.
Poliwrath was 1496 CP, 2/6/9, with a true attack of 116.5. Poliwhirl was 1389 CP, 13/13/15, with a true attack of 113.This should mean that Poliwrath should win CMP initially, but after a single Bubblebeam putting it at -1 Attack (true attack of 93.2) Poliwhirl should start winning CMP. However, Poliwrath won consistently, demonstrating that stat changes are not taken into account for CMP.
Later Testing: While we do not have video for this, buffs were tested and proven to also not affect CMP.
Base Attack + IV vs True Attack
One last scenario tested was to see whether CMP actually considered the attack stat of the Pokémon, or if they only considered the base attack and the attack IV. If that were the case, then a Pokémon with a higher attack IV but a lower true attack would beat one with a higher true attack.
For this, a Swampert mirror was tested, both running Mud Shot + Hydro Cannon. The first Swampert was 1481 CP, 2/14/4, with a true attack of 122.2. The opposing Swampert was 1039 CP, Lv13 10/8/6 with a true attack of 105. When tried for Hydro Cannon, the 1481 CP Swampert won, demonstrating that, once again, true attack was the deciding factor.
Implications of this Change
Optimal IVs May Be Different
Currently, for most species, you're looking to find Pokémon with an attack IV of 0 (or close to it) in order to maximize bulk. However, now that having a higher attack can alter matchups, it's possible that you'll want a higher attack to gain that CMP advantage in the mirror.
Higher Base Attack Species Will Perform Better
Probably not by a huge amount, to be fair. The game is fundamentally the same and CMP ties don't happen that often. However, in the cases where they do, those glass cannon Pokémon will gain an advantage.
Less Losing to RNG
It's obviously incredibly frustrating to lose to CMP. It's a part of the game that can determine the outcome that you have no control over. Now that CMP is deterministic, you can have a better sense of whether or not you'll win a CMP tie if it comes down to it.
One necessary implication of QSA (explained better than I possibly could in a GoStadium video here) is that your charged move will always occur after theirs. Now, in situations where you know you're losing CMP anyway, there is no longer necessarily that downside to QSAing.
While this testing covers many cases, there are likely more, so it's possible that there's something we missed, or that the system will receive further tweaks moving forward. If you catch anything that contradicts what's shown here, please let us know, either in the comments or by messaging me on Twitter.