01 - Preheat oven to 350°F. Line an 8x8-inch baking pan with parchment paper, leaving an overhang for easy removal.
02 - Combine graham cracker crumbs, melted butter, and sugar in a medium bowl. Press mixture evenly into the pan bottom. Bake for 10 minutes, then cool slightly.
03 - Whisk together milk, coconut milk, sugar, cornstarch, and salt in a saucepan. Cook over medium heat, stirring constantly, until slightly thickened, about 3 minutes.
04 - Whisk egg yolks in a separate bowl. Gradually add a ladle of the hot milk mixture while whisking constantly. Return the mixture to the saucepan.
05 - Cook while whisking until thick and bubbling, 3-5 minutes. Remove from heat and stir in vanilla and shredded coconut.
06 - Pour filling over the cooled crust. Smooth the top and refrigerate for at least 1 hour until set.
07 - Beat heavy cream, powdered sugar, and vanilla until stiff peaks form. Spread evenly over the chilled coconut layer.
08 - Sprinkle toasted coconut flakes on top. Refrigerate for at least 30 minutes before slicing into 16 bars.