In the bowl of a stand mixer lightly mix the all-purpose flour, potato flakes, instant yeast, milk powder, salt (don't let it directly contact the yeast), and sugar. A few quick swishes will do.
Add 2 eggs, coconut milk, and ube extract(s). See notes about ube extract.
Using the dough hook attachment, mix until the mixture starts to come together. Continue mixing on low and slowly add the water until the dough is properly hydrated. You may not need all the water.
Knead for about 5 minutes. Stop the stand mixer and add the butter. Then continue mixing until the dough is smooth and elastic. This will take 3-5 more minutes. I like to add butter after the dough kneads a little so that gluten can form easier as fats slow down gluten development
Take out the dough and shape into one large round lump and put back in the mixing bowl. Cover and let it rise until it double in size, about 45-60 minutes depending on temperature. You can let it rise in the fridge overnight.
Once the dough is risen, punch down and tip out onto a floured work surface. Divide into 24 equal pieces by weight. You can roll it out to help with this but it is not necessary.
Form each piece into a ball and place on a baking sheet lined with parchment paper. Space them evenly. Let this rise again, about another 45-60 minutes.
Preheat oven to 350℉. Whisk an egg and brush on each roll.
Bake at 350℉ for 20-25 minutes until the tops are quite brown.
Remove from oven and let it cool before tearing into the rolls!