Heat the butter and olive oil in a 10-inch oven-safe nonstick or cast-iron skillet over medium-low heat. Add the sliced onions and a pinch of salt. Cook, stirring occasionally, for about 25 to 30 minutes until the onions are soft, deep golden brown, and caramelized. If they start to brown too quickly, add a teaspoon of water and lower the heat.
While the onions are finishing, whisk the eggs, heavy cream, fresh thyme, salt, and pepper in a large bowl until well combined and slightly frothy. Stir in about half of the shredded Gruyere cheese.
Preheat your oven to 375°F (190°C). Once the onions are ready, spread them out evenly across the bottom of the skillet using a spatula.
Pour the egg and cheese mixture over the onions in the skillet. Do not stir too much; just ensure the eggs are evenly distributed. Let the frittata cook on the stovetop for 2 to 3 minutes until the edges are just starting to set.
Sprinkle the remaining Gruyere cheese over the top of the eggs. Transfer the skillet to the preheated oven and bake for 12 to 15 minutes, or until the center is set and the top is lightly golden and puffed.