Combine granulated sugar and all-purpose flour in a pan, whisking thoroughly to ensure no lumps form in the flour.
2
Pour in the whole milk and whisk until combined.
3
Place the pan over medium-high heat, whisking constantly to prevent scorching, until the mixture begins to simmer.
4
Once simmering, reduce heat to medium-low and continue stirring for 1-2 minutes until the mixture thickens to a pudding-like consistency.
5
Transfer the mixture to a glass bowl and press parchment paper directly on the surface to prevent a skin from forming. Allow to cool to room temperature, which takes approximately 3 hours, or prepare a day in advance and refrigerate.
6
Once the milk mixture is completely cooled, beat the soft unsalted butter with salt on medium speed for about 2 minutes until smooth, creamy, and free of lumps.
7
Add the cooled milk mixture to the butter in 2-3 tablespoon increments on medium-low speed, allowing the mixer to run between additions and scraping down the bowl to ensure complete incorporation.
8
Add the vanilla extract and increase mixer speed to medium, beating for 1 minute until the frosting becomes fluffy, light, and cloud-like in texture.
9
Use the frosting to decorate cakes, cupcakes, or as a filling. Store in an airtight container in the refrigerator for up to one week or freeze for up to three months. Before using frozen frosting, thaw and bring to room temperature, then beat again to restore the texture.