Preheat the oven to 180°C (350°F) and line a muffin tin with 12 cupcake liners.
In a small bowl, combine the coconut milk and vinegar. Set aside to curdle.
In a medium bowl, whisk together the flour, baking powder, and bicarbonate of soda, then set aside.
In a large mixing bowl, whisk together the canola oil, white sugar, and vanilla extract until well combined.
Add the dry ingredients to the wet mixture in batches, alternating with the coconut milk mixture. Mix until just combined, scraping down the sides of the bowl as needed. Fold through the shredded coconut until evenly distributed.
Spoon the mixture evenly into the cupcake liners, filling them three-quarters full.
Bake for 20–25 minutes, or until the tops spring back when lightly touched. Allow to cool completely before frosting.
Make the coconut buttercream. Using a hand mixer or a stand mixer fitted with the whisk attachment, beat the dairy-free butter and vanilla extract for 1-2 minutes until creamy.
Add in 3 cups of icing sugar and beat on medium speed until combined.
As the mixture thickens, gradually add the coconut milk. If the frosting is too soft or buttery, add an additional ½-1 cup of icing sugar until the desired consistency is reached. Add a pinch of salt to taste.
Transfer the buttercream into a piping bag fitted with a piping tip and pipe swirls onto the cooled cupcakes. Sprinkle the cupcakes with toasted coconut to finish.