Bring 6 cups water to a boil in a medium saucepan. Add rice and salt. Cover and reduce heat to low. Cook 15 minutes, then turn off heat and let sit 5 minutes. Fluff with a fork and cover to keep warm until ready to serve.
Meanwhile, bring 1 in. of water to a boil in a large saucepan. Peel sweet potato and cut into 1/2-in. cubes. Put in a steamer basket over boiling water. Cover and steam until tender, about 10 minutes. Set aside.
While sweet potato is cooking, spoon about 1/4 cup from top of coconut milk in each can (the thick opaque layer) and put in a 4- to 5-qt. pot or deep sauté pan. Add curry paste and whisk until smoothly blended. Stir mixture over medium heat until nearly dry, 3 to 5 minutes.
Reduce heat to medium-low and add remaining coconut milk, lime zest, fish sauce, and brown sugar. Simmer 5 minutes.
Meanwhile, cut fish into 1 1/2-in. cubes. Increase heat to medium; add fish and spinach. Cover and cook until fish is no longer translucent, 5 to 7 minutes.
Chop basil and mint and stir into stew along with sweet potato cubes. Serve with rice and lime wedges.
Chicken: Substitute boned, skinned breast for the fish. Cut into 1/4- by 1/2- by 2-in. strips to ensure quick cooking.
Pork: Use tenderloin in place of the fish, trimming fat and cutting meat into 1/4-in.-thick strips.
Swap the greens: Try green Swiss chard instead of spinach: Thinly slice stems and steam with sweet potato in step 2; thinly slice the leaves and add with fish in step
Make it bountiful: Add chopped zucchini or other summer squash, green beans, thinly sliced red pepper, or slivered sweet onion to the sweet potato for the last 5 minutes of steaming time.
Switch the starch: Yukon Gold potatoes work nicely in place of sweet potato and have a similar cooking time.