Start by whisking sugar, cornstarch, and salt, then beat in egg yolks until pale. Warm the milk with vanilla, then slowly mix into the eggs to avoid curdling. Return to heat until thickened, then cool before filling the donuts.
Combine warm milk, yeast, sugar, salt, and eggs. Add butter and flour, then knead until soft and elastic. Let it rise in a warm spot until doubled in size, about 1.5–2 hours.
Roll dough to about 1/2 inch thickness, then cut out hearts. Let them proof for 30 minutes. Heat oil to 325–350°F, fry until golden, then drain on paper towels.
Use a piping bag to insert creamy custard into each donut. Make a hole on one side and gently fill until the donut is full without overflowing.
Boil sugar with water until golden brown, then quickly dip donuts on one side. Let the sugar set on a wire rack to create a crunchy brûlée top.