Heat oven to 350°F. Grease two 8-inch round pans and line bottoms with parchment.
Whisk flour, baking powder, and 0.75 tsp salt in a bowl. Stir in the sweetened shredded coconut.
Beat 0.75 cup butter with granulated sugar until pale and fluffy, about 3 minutes.
Stream in the beaten eggs, mixing until smooth. Blend in vanilla and coconut extracts.
Whisk coconut milk, sour cream, and oil in a separate measuring cup.
Add dry mix to the butter mixture in three additions, alternating with the coconut milk mixture. Mix just to combine.
Divide batter between pans and smooth tops.
Bake 25–30 minutes, until a tester comes out clean. Cool 10 minutes, then turn out onto racks to cool completely.
Beat cream cheese and 0.5 cup butter until creamy. Gradually mix in powdered sugar and a pinch of salt.
Drizzle in coconut milk as needed for a fluffy, spreadable frosting. Beat in vanilla.
Stir warm coconut milk with 2 tbsp sugar until dissolved for an optional syrup.
Level cake layers if domed. Place one layer on a stand; brush with syrup if using and spread frosting over the top.
Set second layer on top. Frost the top and sides, then press shredded coconut all over the cake.
Chill 20 minutes to set the frosting. Slice and serve.