Mix together eggs, milk, half and half, sugar, vanilla, and cinnamon (and zest if using).
Add 3 cups of the bread cubes to a greased casserole dish or pan. Layer sliced apples on top and add remaining bread cubes.
Pour egg mixture on top, cover, and refrigerate overnight.
In the morning, remove French Toast Casserole from the refrigerator and preheat oven to 350°F.
If adding streusel topping, mix all ingredients using a pastry cutter or fork (or prepare the night before) and sprinkle over the top of the dish.
Bake uncovered for 50-60 minutes or until a knife comes out clean. If the top is getting really browned, loosely place foil for remainder of cook time.
Once done, remove from the oven and let rest for 10 minutes before serving. The French toast casserole puffs up while baking and settles after it's been out of the oven for a few minutes.
Notes
Nutritional information does not include optional streusel topping.
You can freeze this casserole 2-3 months ahead of baking. Assemble in the baking dish, cover with aluminum foil, and then plastic wrap and freeze. Thaw in the refrigerator before baking.
Leftovers can be refrigerated for up to 3 days, or frozen for up to 3 months. Cover with foil to reheat in the oven.