Crisp the bacon or warm the ham: Cook bacon in a skillet over medium heat until crisp, about 6–8 minutes. If using ham, sear for 1 minute per side.
Set aside on a paper towel.
Toast the croissants: Place the split croissants cut-side down in the same skillet to soak up flavor, 1–2 minutes, or toast under a broiler for 30–60 seconds. Watch closely; they brown fast.
Beat the eggs: In a bowl, whisk eggs with milk, a pinch of salt, and pepper until well combined and slightly frothy.
Scramble gently: Melt butter in a nonstick skillet over low-medium heat. Pour in eggs and push them slowly with a spatula, forming soft curds.
Cook until just set and still glossy, 2–3 minutes. Don’t overcook.
Melt the cheese: Place a slice of cheese on the bottom half of each warm croissant. Layer on hot bacon or ham to start melting the cheese.
Assemble: Spoon the soft-scrambled eggs on top.
Add optional extras like spinach, tomato, or avocado. Finish with the croissant top.
Serve: Press gently, slice in half if you like, and enjoy right away. A little hot sauce or Dijon takes it over the top.