Heat 2 inches of oil in a cast iron skillet or dutch oven over medium-high heat until it reaches 325-350 degrees F. It helps to have a thermometer handy to monitor the oil temperature.
Combine 1 cup of ice with 1 cup of water in a bowl and let this sit for a minute or so until the water is very cold. Measure your water from this to get 1 full cup for use in the recipe.
Add the flour to a large bowl. Beat the egg in another bowl, then add the egg and cold water to the flour. Stir in a figure-8 motion using chopsticks to gently combine the ingredients into a batter. It's okay if there are some lumps. Keep the batter cold by sticking it in the fridge when you aren't using it. Or stick the bowl of tempura batter in a larger bowl filled with an ice water bath to keep the batter completely cold.
Dry any veggies before dipping, especially the sweet potatoes, by patting them with paper towels so the batter will stick.
Dip each vegetable in the batter, then shake off excess and add them to the hot oil. Fry the root vegetables like sweet potatoes first since they take a little bit longer. Don't over crowd the pan or the oil temperature will drop quite a bit.
Fry the sweet potatoes for 3-4 minutes, flipping halfway through. For other vegetables like broccoli, onion, and bell pepper, they will only need to fry for 1-2 minutes typically.
Transfer the vegetable tempura to a wire rack over a baking sheet as they finish so they can drain without becoming soggy on paper towels. Sprinkle with salt and pepper, if desired, to season. Serve with dipping sauce.