Distinction between POS and Graphql Exchanges

Exchanges from the returnCreate differ from exchanges originated from the POS. And the difference in behavior is mildly infuriating.

Why do these similar actions have different behaviors? Our platform listens to orders/edited events and returns/approved events to watch for edit and exchange actions. It’s very clear when a return is associated to an exchange because of the exchangeLineItems field. There’s nothing analogous for POS exchanges.

For example
Exchanges from the Admin UI and via returnCreate mutation will create a Return with exchangeLineItems. This is clear and easy to use. The UI is clear that there was an exchange, and all of the items are linked. The returns object clearly shows related exchangeLineItems.

Exchanges from the POS do not populate exchangeLineItems on the associated Return. There is nothing to indicate an exchange happened. At best, the behavior is inferred from a mix of edit and return events.

Are there plans to unify this behavior? From the documentation I’ve seen, I’ve been assuming that exchanges came out on the POS app before the returnCreate exchange pattern was developed, and it’s using the briefly mentioned exchangev2 api instead.

Alternatively, is the exchangev2 behavior still locked in a non-public beta? If so, is that going to replace the returnCreate exchange pattern?

Hoping for any insight here.

Thanks,
Jo

It seems like Shopify just aligned this behavior with this sudden change: