Combine fish, salt, chile powder, and turmeric in a medium bowl and, using your hands, gently toss fish to evenly coat in spices.
Heat oil in a large nonstick skillet over medium-high. Working in batches to avoid crowding, cook fish pieces until lightly browned, about 2 minutes per side (the fish won’t be cooked all the way through). Transfer fish to a plate.
Heat oil in a heavy pot over medium-high. Add a few mustard seeds and cumin seeds and allow to pop, reduce heat to medium and add chillies and curry leaves (if using).
Add chopped onion and a big pinch of salt and cook, stirring often and reducing heat if needed to prevent burning, until onion is golden brown and jammy, 7–9 minutes.
Add ginger-garlic paste and cook, stirring constantly, until beginning to brown, about 1 minute.
Stir in tomatoes and bring to a simmer. Reduce heat to medium and cook, stirring often, until tomatoes are glossy and darkened in color and oil starts to separate around edges of pot, 5–7 minutes.
Add coconut milk and broth and stir to combine; season with salt.
Bring curry to a simmer, then reduce heat to medium-low. Cover and cook, stirring occasionally to prevent sticking, 10 minutes.
Add fish to curry. Return to a gentle simmer and cook until fish is just cooked through and flakes easily with a fork, about 4 minutes. Taste and season with more salt if needed.