In a large bowl, whisk together the flour, cornstarch, baking powder, salt, black pepper, paprika, and garlic powder until fully combined.
Slowly whisk in the cold water or sparkling water until the batter is smooth and lump-free. If using an egg, beat it separately and mix it in now. The batter should be slightly thick but still pourable.
Pour oil into a deep fryer or deep skillet and heat to 350–375°F (175–190°C). Use a thermometer to keep the temperature steady.
Pat the fish fillets completely dry with paper towels, then lightly dust them with flour to help the batter stick.
Dip each fillet into the batter, coating it evenly. Let any excess batter drip off before frying.
Carefully place the battered fish into the hot oil. Fry for 3–5 minutes per side until golden brown and crispy. Work in batches to avoid overcrowding.
Remove the fish with tongs and place on a paper towel-lined plate to drain. Serve hot with your favorite sauces.