Preheat the oven to 350°F (177ºC) and line a cupcake pan or muffin tin with standard cupcake liners.
Whisk together the sifted cake flour, baking powder, baking soda, and salt. Set aside.
In the bowl of your stand mixer fitted with the paddle attachment (or using a hand mixer with a large bowl), beat the butter on high for 2 minutes until light and creamy. Add in the sugar and beat on medium-high until light and fluffy, about 2 minutes. Scrape down the bowl and paddle as needed. Turn the mixer to low and add the egg whites one at a time. Mix until well combined. Add in the vanilla, coconut extract, and sour cream, then mix for 1 minute on high.
Add the dry ingredients all at once and mix on low until just combined, then continue mixing while you add the canned coconut milk in a slow, steady stream. Mix until smooth, then gently fold in the shredded coconut with a rubber spatula.
Pour the batter evenly into the prepared cupcake tins and bake for 15-18 minutes, or until a toothpick inserted comes out clean.
With a hand mixer or paddle attachment on your stand mixer, beat the butter on medium-high until it’s creamy and light (almost white) in color, about 7 minutes. Scrape down the bowl and paddle and add the powdered sugar about a cup at a time and mix on low speed until fully incorporated.
Add the coconut extract, vanilla, milk, and a pinch of salt. Continue mixing on low speed until fully incorporated and smooth.
When the cupcakes are fully cooled, prepare a piping bag with Wilton Tip 1A (or snip off ½ inch opening) and fill it with coconut buttercream. Add the shredded coconut topping into a small bowl, if using. Pipe a swirl onto each cupcake, then gently dip the frosted cupcake into the shredded coconut.
