Put the potatoes in a pan and cover with cold water. Bring to the boil, cover with a lid and cook for 7-8 mins until a knife easily pierces them but they still hold their shape. Drain and leave to steam dry. Meanwhile, heat the butter and oil in a frying pan, and when the butter is sizzling, add the shallots. Fry until soft, about 5 mins, then add the potatoes and fry for about 15 mins until crispy on all sides.
While the potatoes are cooking, make the hollandaise. Whisk the yolks and cornflour together until smooth. Add the cream and vinegar, and season well. Pour into a small pan, heat very gently, whisking constantly, until the consistency of custard. If the sauce looks like it’s splitting, curdling, or getting too hot, add a splash more cream and whisk vigorously – it should become smooth again. Check the seasoning, adding a little more salt or vinegar if it needs it.
Heat the grill to medium-high. Heat a drizzle more oil in another small, ovenproof frying pan. Add the spinach, season and cook until just wilted. Spread the spinach across the pan and place the haddock fillets on top. Spoon over the hollandaise to cover each fillet. Grill for 10 mins until the fish is flaking and the sauce is browning in patches.
Scatter the potatoes with the capers, dill and lemon zest. Serve alongside the fish with lemon wedges for squeezing over.