Heat oven to 350°F. Grease a 9×5-inch loaf pan and line with a parchment sling.
Whisk flour, sugar, baking powder, baking soda, salt, and orange zest in a large bowl.
Whisk orange juice, yogurt, eggs, vanilla, and melted butter in a separate bowl until smooth.
Fold the wet mixture into the dry just until no dry streaks remain; do not overmix.
Gently fold in cranberries and walnuts, if using.
Scrape batter into the pan and smooth the top.
Bake 50–60 minutes, until a tester in the center comes out clean. Tent with foil if browning early.
Cool 10 minutes in the pan, then lift out and cool on a rack until warm.
Stir powdered sugar, orange juice, zest, and vanilla until thick yet pourable. Drizzle over the loaf and let set.