In a large mixing bowl, sift together the flour, cornstarch, baking soda, baking powder, and salt to remove any lumps.
Pat your chosen protein (fish, chicken) or vegetables completely dry with paper towels to ensure the batter adheres properly.
Heat the vegetable oil in a deep fryer or heavy pot to 350°F (175°C).
Just before frying, gradually whisk the ice-cold water into the dry ingredients. Stir gently until just combined; do not overmix, as small lumps are desirable for texture.
Dip the food items into the batter one by one, ensuring an even coating, and let any excess batter drip back into the bowl.
Carefully lower the battered items into the hot oil. Fry in small batches for 3–5 minutes, turning occasionally, until they are deep golden brown and fully cooked through.
Remove the fried items from the oil and immediately place them on a wire rack set over a baking sheet to drain and maintain crispiness.