Confirmation that (inner) classes are still not fully supported in @AuraEnabled methods?

Unfortunately I wasn't able to make it work using the class directly, either with an inner class or even a top level class. Using the second solution with a String attribute in your AuraEnabled method and then deserialize it is the best solution I've found. It works for both inner class and top level class.

I've just published a blog post to list all the issues I've found with AuraEnabled types (unfortunately this one isn't the only one) and the workaround I used. You can find it here: https://blog.texei.com/lightning-components-auraenabled-method-parameters-whats-working-and-what-s-not-83c351356104


Spring 19 Update :

I just stumbled upon this question and I recently used something similar in Spring 19 so thought might answer this.

Inner classes are supported now, you have to use setter and getter in your AuraEnabled inner class variables.

So your code will be:

    public class MyApexClassController {


    @AuraEnabled
    public static ApexWrapper goGetMyData(ApexWrapper data) {
        System.debug('Inner class data: ' + JSON.serialize(data));    // This will print without giving GACK
        ApexWrapper aw= new ApexWrapper();  
        ad.Name = '222';
        return ad;

    }

    //Inner Apex Class
    public class ApexWrapper{
        @AuraEnabled
        public String Name {get;set;}   //123abc
    }

}