Make the Pineapple Filling. In a saucepan, whisk together crushed pineapple, sugar, lemon juice, vanilla and cornstarch over medium heat. Cook for about 6-8 minutes until thickened and the cornstarch is cooked. Then, set aside in the refrigerator.
Make the Pineapple Coconut Cake. Preheat the oven to 350F and grease 3 8-inch round cake pans and line with parchment paper to ensure the batter doesn't stick. Set aside.
In a large mixing bowl, sift and whisk together the flour, baking soda, baking powder, and salt. Set aside.
Beat the butter, oil, and sugar with a mixer on medium-high speed until smooth and creamy, about 2 minutes. Then, mix in sour cream, pineapple chunks, vanilla extract, and coconut extract until combined.
On low speed, add about a third of the flour mixture and a third of the coconut milk, alternating until all of the flour and coconut milk is added to the batter. Be sure not to over mix the batter — a few lumps are okay.
In a separate bowl, whip the eggs whites together on high speed until they form foamy peaks, about 3-4 minutes. Then, add the whipped egg whites to the batter and fold them into the batter along with 1 cup of the shredded coconut (do not mix), scraping the bowl as needed.
Next, evenly divide the batter in the 3 prepared pans. Bake for 20-25 minutes or until a toothpick comes out clean. Note, baking time may vary depending on your oven. Be sure not to overbake or your cake will be dry.
Once done, allow the cakes to cool in the pan on a wire rack until completely cooled.
Make the Frosting. In a large bowl, combine the softened cream cheese with the softened unsalted butter and beat on high until smooth and creamy. Next, mix in coconut extract, vanilla extract, lemon juice, pineapple juice, salt, and gradually add the powdered sugar, mixing on low speed at first to prevent a sugar cloud. When the sugar is pretty much incorporated, beat the frosting for about 2 minutes on high.
Assemble Cake. Place the first layer of cake on a serving plate or cake stand. Spread a layer of buttercream on the cake starting from the center and gently spread it outward. Then, pipe a thick rim of frosting around the edge of the cake. Spoon half of the pineapple filling on top of the buttercream in the center and gently spread it outward (again, stopping before the buttercream rim and keeping it slightly lower than the dam to prevent leaking). This combination of buttercream and filling in the center helps support the cake layers while the buttercream border keeps the pineapple filling neatly in place. Next, add the second and repeat. Once the second layer is complete, place the last later on top and frost the top and sides of the cake. Then, add the toasted coconut to the side of the cake. Then, decorate the top of the cake with swirls of frosting and pieces of pineapple. Garnish the top with toasted coconut.
Refrigerate the cake for at least 20-30 minutes before slicing. Then, enjoy!