Prep the bread. Cut your brioche or challah into bite-size cubes—about 1 inch. Day-old bread is best; it holds the custard without getting mushy. Fresh bread works in a pinch, just don’t soak it too long.
Make the custard. In a large bowl, whisk together the eggs, milk, cream, vanilla, cinnamon, brown sugar, and salt until smooth. It should smell like the inside of a cinnamon roll shop. That’s your sign you’re on track.
Dip, don’t drown. Add the bread cubes to the custard and toss gently. Let them sit for 3 to 5 minutes, just long enough to drink up a bit of custard without falling apart. If your bread is super fresh, shorten the soak; if it’s very dry, you can go a little longer.
Heat the pan. Set a large nonstick skillet over medium heat and melt 1 tablespoon of butter. You’ll cook these in batches so they brown, not steam.
Cook the bites. Add a single layer of soaked bread cubes. Don’t overcrowd. Cook for 2 to 3 minutes per side, turning occasionally, until all sides are golden and the centers feel set—not wet. Add more butter as needed between batches. Low and steady heat is your friend here; if they’re browning too fast, dial it down a bit.
Make the cinnamon-sugar. Stir the granulated sugar, cinnamon, and a pinch of salt in a shallow bowl. As each batch comes out of the pan, immediately toss the hot bites in the cinnamon-sugar so it clings to the buttery edges. It’s a little messy—and entirely worth it.
Whisk the glaze. In a small bowl, beat the softened cream cheese with the powdered sugar, milk, vanilla, and a pinch of salt until smooth and drizzleable. If it’s too thick, add another splash of milk; too thin, more powdered sugar. A touch of orange zest is lovely if you like that bakery vibe.
Finish and serve. Pile the cinnamon-sugar–coated bites on a warm plate, drizzle with the cream cheese glaze, and scatter nuts on top if you’re feeling fancy. Serve right away, with maple syrup on the side for folks who want extra sweetness.