Preheat oven to 350°F (175°C). Grease and flour two 9-inch cake pans.
In a large bowl, whisk together the flour, sugar, shredded coconut, baking powder, and salt.
In another bowl, cream together the softened butter until light and fluffy. Beat in the eggs one at a time, then stir in the vanilla extract.
Gradually add the dry ingredients to the wet ingredients, alternating with the buttermilk and coconut milk, beginning and ending with the dry ingredients. Mix until just combined.
Divide the batter evenly between the prepared cake pans. Bake for 30-35 minutes, or until a wooden skewer inserted into the center comes out clean.
Let the cakes cool in the pans for 10 minutes before inverting them onto a wire rack to cool completely.
Make Coconut Frosting
In a large bowl, beat the softened butter until creamy. Gradually add the powdered sugar, alternating with the heavy cream, beating until smooth and fluffy.
Stir in the shredded coconut and coconut extract.
Assemble the Cake
Place one cooled cake layer on a serving plate. Spread a generous amount of frosting over the top. Place the second cake layer on top.
Frost the top and sides of the cake with the remaining frosting. Sprinkle with additional shredded coconut, if desired.
Notes
Allow cake to cool completely before frosting for best results.