In a heavy-bottomed saucepan, combine the brown sugar, cubed butter, and whole milk.
Place the saucepan over low heat and stir gently until the butter melts. Continue stirring for about 1 minute to combine the ingredients well.
Increase the heat to medium and bring the mixture to a gentle boil. Let it cook without stirring until it reaches 230°F on a candy thermometer, about 3–6 minutes.
Remove from heat and pour the caramel into a heat-safe bowl. Let it cool to room temperature, which takes about 15–30 minutes. It may look a little grainy. This is normal.
Transfer the cooled caramel to a large mixing bowl. Gradually beat in the sifted powdered sugar, about 1/2 cup at a time, mixing well after each addition. Start with 2 1/2 cups and add more if needed for a thicker consistency.
If the frosting becomes too thick or stiff, add milk 1 teaspoon at a time until smooth and spreadable.
If using vanilla extract, add it now and beat until fully incorporated.
Beat the finished frosting on medium-high speed for 2–3 minutes, until light and creamy.
Use immediately to frost cakes, cupcakes, or cookies, or store covered in the refrigerator. Re-whip chilled frosting briefly before using.