Wash the spinach thoroughly and pat it dry. Roughly chop the leaves, slice the mushrooms, mince the garlic, and finely chop the onion if using. Crack the eggs into a small bowl and set aside.
Beat the eggs with a fork or whisk until the yolks and whites are fully combined. Add a small pinch of salt and black pepper. If desired, mix in one tablespoon of water or milk to adjust the texture.
Heat the olive oil or butter in a nonstick skillet over medium heat. Add the sliced mushrooms and cook for approximately 3–4 minutes, stirring occasionally, until they soften and release most of their moisture.
Add the minced garlic and chopped onion, if using, and cook for about 30 seconds. Add the spinach and stir for another 1–2 minutes until the leaves wilt. If the pan contains excess liquid, allow it to evaporate before proceeding.
Spread the vegetable mixture evenly across the pan. Pour the beaten eggs over the spinach and mushrooms, tilting the skillet gently to distribute the eggs. Reduce the heat to medium-low and cook for approximately 2–3 minutes, until the edges begin to set.
If using cheese, sprinkle it over one half of the omelet while the eggs are still slightly moist on top. Allow the cheese to melt as the remaining egg mixture finishes cooking.
Using a spatula, carefully fold the omelet in half. Cook for another 30–60 seconds, or until the eggs are cooked to your preferred doneness. Ensure the egg mixture is fully cooked for food safety.
Transfer the omelet to a serving plate. Sprinkle with chopped parsley or chives and add a little extra black pepper if desired. Serve immediately with whole-grain toast, sliced tomatoes, or fresh fruit.