In a glass measuring cup, heat the milk to 110 degrees F and stir in the sugar and yeast. If using active dry yeast, allow to sit for 15 minutes for the yeast to activate. If using instant yeast, simply move on to the next step.
Mix the eggs and vanilla into the milk yeast mixture.
In the bowl of a stand mixer fitted with a dough hook, mix the flour and salt together.
Pour the wet ingredients into the flour and mix on low-medium speed for about 3 minutes, or until it forms a ball around the hook.
Add in a few pieces of butter at a time, allowing them to fully incorporate before adding more.
Once all of the butter is incorporated, turn the mixer up to medium-high speed and mix for 8-12 minutes. The dough will eventually pull away from the sides of the bowl and have a silky smooth texture with minimal stickiness. To check if the dough is ready, use the windowpane test - tear off a small piece and carefully spread it out to see if you can see the light through it without it tearing. If it tears, mix for another minute or two and check again.
Once the dough is ready, transfer it to a lightly greased bowl, cover, and allow to proof overnight in the fridge. Alternatively, you can let the dough rise in a warm place for about 1 hour or until doubled in size.