For the Onions:
Remove the shoot and base of the onions. Peel off the onion skin and cut the onions from pole to pole.
Cut the onion into 1/4-inch slices. Add the olive oil to a large saute pan over medium heat, then add the onions and season with the salt.
Cook until the onions begin to wilt, about 30 minutes, stirring every 15 minutes to prevent sticking. Reduce the heat to low and continue to stir every few minutes as the onions reduce in size.
If necessary, deglaze the pan with balsamic vinegar or water.
Continue cooking until the onions are dark brown. Turn off the heat and scrape up any bits that are stuck to the bottom of the pan. Allow the onions to cool.
For the Frittata:
Preheat the oven to 350 degrees F.
In a small bowl, add the eggs, milk, and salt and mix to combine.
Remove the paper from the prosciutto and stack the slices. Chop the prosciutto into 1/2-inch pieces.
Add the butter to an oven-safe 10-inch pan over medium heat. Once the butter has melted, add the olive oil and reduce the heat to medium-low.
Pour the egg mixture into the pan. When the eggs start to set, about 10 minutes, add the Parmesan and prosciutto. Stir gently and dot the top with the goat cheese.
Bake in the preheated oven until the frittata is set and the goat cheese is melted, about 15 to 20 minutes.
Remove from the oven and using a rubber spatula, loosen the frittata from the sides of the pan. Slide it onto a cutting board and cut into wedges. Arrange the wedges on a serving platter and top with caramelized onions and thyme leaves before serving.
The onions can be transferred to an airtight container and will keep, refrigerated, for up to 1 week.