Melt the butter in a large pot over medium heat. Add the onion and cook until the onion has softened and turned translucent, about 5 minutes. Add the potatoes and garlic and continue cooking until the potatoes have softened slightly, about 10 minutes.
Pour in the chicken stock, tomatoes and carrots. Bring to a boil then reduce heat to medium-low, cover and simmer for 10 minutes. Add the milk and cream, season to taste with salt and pepper then stir in the fish.
Continue simmering uncovered until the fish is flaky and no longer translucent in the centre, about 10 minutes. Gently stir in the Cheddar cheese and chilli flakes until the cheese has melted. Serve immediately.