We have an overridden @auraEnabled method that returns an array of custom apex class objects with @auraEnabled get methods. This has worked since it was built. However, one of our customers just upgraded to Spring 18 and it looks like the response from the server has totally changed shape. Inspecting the response in the Lightning Actions pane previously showed a JSON object that represented our class with
getProperty() replaced with
property. However, in Spring '18 we are getting back a different class (a different override from another class not being executed in this context) with some of the common properties populated and everything else null. This causes our UI to be missing most data.
Has anyone else seen this or seen a known issue about this?
I have been able to narrow this down to an error in how Aura is handing virtual classes and overrides. When returning an instance of a class that is extending a virtual class, winter 18 and prior correctly returns values from any
override methods. In spring 18 all values are being returned directly from the base virtual class despite the fact that the return type from the method is the extension class. Maybe this is related to them attempting to fix this issue but if so this "fix" is a huge step backwards. I have a case open about this and will update when I hear back from Salesforce (assuming they don't close this as out of scope).