Prep the pans and oven: Heat the oven to 350°F (175°C). Grease and flour two 8-inch round cake pans (or line with parchment).
Lightly spray the sides. Set aside.
Toast the coconut: Spread 1 cup of shredded coconut on a baking sheet. Toast for 5–7 minutes, stirring once, until lightly golden.
Cool completely. Reserve some for garnish and some for folding into the frosting or layers.
Whisk dry ingredients: In a medium bowl, whisk 2 1/2 cups flour with 2 tsp baking powder, 1/2 tsp baking soda, and 1/2 tsp salt. Set aside.
Cream butter and sugar: In a large bowl, beat 1/2 cup softened butter with 1 1/2 cups granulated sugar until pale and fluffy, 2–3 minutes.
Add 1/4 cup oil and beat to combine.
Add eggs and extracts: Beat in 4 large eggs, one at a time, scraping the bowl as needed. Mix in 1 1/2 tsp vanilla and 1 tsp coconut extract.
Combine wet ingredients: In a measuring cup, stir 3/4 cup coconut milk with 1/2 cup buttermilk until smooth.
Build the batter: Add the dry ingredients to the butter mixture in three additions, alternating with the coconut milk mixture. Begin and end with dry ingredients.
Mix on low just until incorporated. Fold in 1 cup sweetened shredded coconut.
Bake: Divide batter evenly between pans and smooth the tops. Bake 24–28 minutes, or until a toothpick comes out clean and the centers spring back.
Cool: Let cakes cool in pans for 10 minutes.
Turn out onto racks, peel off parchment, and cool completely.
Make the frosting base: Beat 8 oz cream cheese with 1/2 cup softened butter until smooth. Add 2 1/2–3 cups powdered sugar, 1 tsp vanilla, and 1/2 tsp coconut extract. Beat until creamy.
Lighten with whipped cream: In a separate bowl, whip 1 cup heavy cream to medium-stiff peaks.
Gently fold the whipped cream into the cream cheese frosting until silky. Chill 10–15 minutes to set.
Assemble the cake: Level cake layers if needed. Place the first layer on a plate.
Spread a generous layer of frosting and sprinkle with a handful of toasted coconut. Top with the second layer and frost the top and sides. Press remaining toasted coconut onto the sides and sprinkle on top.
Set and serve: Chill the frosted cake for at least 30–60 minutes before slicing.
This helps clean slices and lets flavors meld.