Squeeze 2 tablespoons of lime juice into a small bowl. Stir in the salt and pepper, then add the sliced onions and stir to coat. Set aside. Toss it every now and then as you prepare everything else.
Combine the sour cream and 3 tablespoons fresh lime juice in a large bowl. Stir in the salt and pepper. Add the sliced cabbage, jalapeño, ad cilantro. Toss and set aside.
Whisk together the flour, cornstarch, chili powder, baking powder, cayenne, 1 teaspoon salt, and 1/2 teaspoon pepper in a large bowl. Add 1/4 cup of this mixture to a large plate. Whisk the egg and beer into the remaining flour mixture until smooth.
Add a 1/2 inch canola oil to a cast iron or deep skillet. Turn the heat to medium and wait about 5 minutes. It should get to about 350 F. You will know it is hot when a small sprinkle of water jumps. Place a cooling rack on top of a rimmed baking sheet and set it next to the heated oil.
Work in batches to coat each piece of fish with the dry flour mixture, shaking off the excess flour. Dip each piece in the beer batter. Let the excess drip off, then carefully add each piece to the hot oil. Cook for 1-2 minutes, until the batter is golden brown, then use metal tongs to flip and cook for another 1-2 minutes. The fish should be opaque throughout. Remove to the prepared cooling rack.
If you have leftover oil, use it to fry the tortillas for about 30 seconds per side, setting them on paper towels to cool. If you want to skip this step, just warm the tortillas covered in the microwave.
To assemble the tacos, add fish, slaw, pickled onions, and avocado to a tortilla. Squeeze some lime juice over the top, and some sour cream or Mexican crema. This would be fabulous served with some Horchata!