Warm the milk and prep the yeast: In a large bowl or stand mixer bowl, combine warm milk, sugar, and yeast. Let it sit 5 minutes until slightly foamy.
If it doesn’t foam, your yeast may be inactive—start over with fresh yeast.
Add eggs, vanilla, and dry ingredients: Whisk in eggs and vanilla. Add flour and salt. Mix with a dough hook or a sturdy spoon until a shaggy dough forms.
Work in the butter: Add softened butter, a tablespoon at a time, mixing until fully incorporated.
The dough will look sticky at first—keep mixing 6–8 minutes (stand mixer) or knead by hand 10–12 minutes until smooth and slightly tacky but not wet.
First rise: Shape dough into a ball and place in a lightly oiled bowl. Cover and let rise in a warm spot until doubled, about 1 to 1 1/2 hours. If your kitchen is cool, it may take up to 2 hours.
Make the topping: Beat softened butter, powdered sugar, flour, vanilla, and salt until a thick paste forms.
Divide and flavor/color as desired. If it’s too soft, chill 10 minutes; if too firm, let it warm slightly.
Portion the dough: Turn the risen dough onto a lightly floured surface. Divide into 12 equal pieces (about 75–80 g each).
Shape each into a tight ball by tucking edges under and rolling with your palm.
Form the topping rounds: Roll teaspoon-size balls of topping into thin disks, or press between parchment squares into 3-inch rounds. Aim for 1/8-inch thickness so they crack nicely.
Top the buns: Place a topping disk over each dough ball and press gently to adhere. Use a concha cutter or a knife to score shell-like patterns (curved lines or grids) on the topping.
Don’t cut into the dough—just the topping.
Second rise: Arrange on parchment-lined baking sheets, spaced well. Cover loosely and let rise until puffy, 35–50 minutes. The topping will look slightly stretched.
Bake: Preheat oven to 350°F (175°C).
Bake 16–20 minutes, rotating pans halfway, until set and lightly golden on the bottom. The topping should be dry and crackled. Avoid overbaking to keep them soft.
Cool and serve: Let cool on the sheet 5 minutes, then transfer to a rack.
Enjoy warm or at room temperature.