Preheat the oven to 350°F (177°C). Grease and line three 8-inch round cake pans with parchment paper.
In a medium bowl, whisk together the cake flour, baking powder, baking soda, and salt.
In a large mixing bowl, beat the butter and sugar until light and fluffy.
Add the egg whites and mix until combined.
Beat in the sour cream, vanilla extract, and coconut extract.
Gradually add the dry ingredients, alternating with the coconut milk, mixing on low speed until just combined.
Fold in the shredded coconut.
Divide the batter evenly among the prepared cake pans.
Bake the Fluffy & Moist Coconut Cake for 21–24 minutes, or until a toothpick inserted into the center comes out clean.
Cool the cakes in the pans for 1 hour before transferring them to a wire rack to cool completely.
For the frosting, beat the butter and cream cheese until smooth and creamy.
Add the powdered sugar, coconut milk, vanilla, coconut extract, and salt. Beat until light and fluffy.
Level the cake layers if needed.
Place one cake layer on a serving plate and spread about 1 cup of frosting over the top.
Repeat with the remaining cake layers.
Frost the top and sides of the cake evenly.
Press shredded coconut onto the top and sides of the cake.
Refrigerate for at least 20 minutes before slicing.