Place sugar, flour, and salt into a medium saucepan. Whisk to combine.
Add milk and vanilla, stir to combine. Cook over medium heat, stirring constantly, until the mixture boils. Continue cooking while stirring constantly for 1-2 more minutes until the mixture thickens to a pudding-like consistency. Remove from heat.
Pour into a bowl and place plastic wrap directly on top of to prevent a skin from forming.
Cool to room temperature.*
Using a stand mixer or hand mixer, beat the (room temperature) butter on high until pale and fluffy (3 mins).
Add the (room temperature) pudding mixture 1 Tbsp at a time, incorporating well after each addition. Add other flavoring (optional). Beat for 2-3mins until smooth and fluffy.
Store in an airtight container in the fridge for 1 week or freeze for up to 3 months. Allow buttercream to come to room temperature and rewhip before use.
Notes
* The flour mixture can be made a day in advance. Place it in the fridge overnight and bring to room temperature before using.The recipe makes enough to frost and decorate a two-layer 8" cake or a three-layer 6" cake.Flavor options:Add either to the milk mixture before cooking or to the buttercream at the end:
1/4 cup freeze-dried berry powder
1/4 cup peanut butter powder
2 Tbsp instant espresso powder
1/4 cup cocoa powder
Add to the buttercream at the end:
6 oz cooled, melted chocolate (will make the buttercream softer)
2 Tbsp instant espresso powder dissolved in 1 tsp hot water (cool before adding)
1/4 cup caramel or dulce de leche (will make the buttercream softer)
1/4 cup lemon curd (will make the buttercream softer)
Another option for lemon or any other citrus is to beat the butter with 1 Tbsp citrus zest before adding the pudding.