Preheat oven to 350°F. Grease and flour three 8-inch round cake pans. Line bottom of each pan with a circle of parchment paper.
In the bowl of a stand mixer, beat butter, oil, and sugar on high speed for 2-3 minutes until light.
1 cup unsalted butter, 1/4 cup vegetable oil, 1 3/4 cups white granulated sugar
Add egg whites, whole eggs, vanilla extract, and coconut extract. Beat well for 2 minutes, stopping partway to scrape bottom and sides of bowl.
4 egg whites, 2 large eggs, 1 tsp vanilla extract, 1 tsp coconut extract
In a separate bowl, whisk cake flour, baking powder, and salt to combine.
3 cups cake flour*, 1 tbsp baking powder, 1/2 tsp salt
Add flour mixture alternately with coconut milk, mixing between additions. Stir in the coconut.
1 cup coconut milk, 1 cup unsweetened shredded coconut
Divide batter evenly between prepared pans. Bake for 20-25 minutes until done. Dry crumbs should cling to a toothpick when inserted into center of each cake.
Cool completely on a wire rack before filling and frosting.
For the Cranberry Filling, combine cranberries, water, sugar, and salt in a large pan over medium heat. Cook, stirring occasionally, until sugar dissolves and cranberries soften and burst, around 5-10 minutes.
4 cups fresh or frozen cranberries, 1 cup water, 1 1/2 cups white granulated sugar, Pinch of salt
Make a slurry by combining cornstarch and water in a small bowl and stirring together with a fork. Slowly pour the slurry into the cranberry filling, stirring continuously until thickened and clear.
2 tbsp cornstarch, 2 tbsp water
Remove from heat and stir in lime juice, lime zest, and vanilla extract. Cool completely.
1 tbsp lime juice, 1 tsp lime zest, 1 tsp vanilla extract
For the Cream Cheese Frosting, beat butter and cream cheese in a large bowl of a stand mixer for 3 minutes until smooth.
1 8 oz package cream cheese, 3/4 cup salted butter
Add 2 cups of powdered sugar and mix on low speed until combined. Add remaining powdered sugar, mixing again until combined. Add vanilla extract and coconut extract, then beat for 3-4 minutes until light.
4 cups powder sugar, 1 tsp vanilla extract, 1 tsp coconut extract
To assemble, if necessary, slice off the tops of the cake layers so they are flat instead of domed. Set bottom layer on a cake stand.
Fill a piping bag fitted with a wide round tip with 1/4 of frosting. Pipe a border around edge of bottom cake layer. This will hold filling in place.
Spread half of cranberry filling on bottom layer of cake, inside ring of frosting.
Place second cake layer on top of cranberry filling and repeat piping a border of frosting and filling with remaining cranberry filling.
Top with final cake layer. Use remaining frosting to frost top and outer edges of cake.
Press coconut into sides and top of cake using your hands until covered. Garnish with sugared cranberries and rosemary sprigs, if desired.
3 cups unsweetened shredded coconut, Sugared cranberries, Rosemary sprigs