Results are still coming in from across England, so this is essentially a half-time report. But the picture emerging is that Labour has gone backwards slightly from 2014, missed most of its targets (including all of them in London) and gained few seats. Opposition parties are supposed to do well in midterm contests, and these aren't the results of one that's about to storm the next general election.
As things stand, there's small swing towards towards the Conservatives nationally, compared with a 2014 result that was already reasonably good for a governing party. The concern for the Tories, and Rob Ford has pointed out, is that they seem to be underperforming yet more in ethnically diverse wards.
Beneath the surface, there's a continuing divergence between London and the provinces, or perhaps more accurately between Remain and Leave areas. Because the wards up this year are disproportionately among the former, the net seat changes look slightly better for the opposition than the changes in vote share. Seat totals and changes as of 6:45am are:
LAB 1410 (+23)
CON 848 (+8)
LD 326 (+42)
UKIP 2 (-91)
GRN 20 (+7)
OTH 96 (+12)
In terms of council control, the results in London illustrate precisely the pattern I highlighted yesterday. Labour has been getting bigger swings in the places (such as Wandsworth and Westminster) where it needed bigger swings. But if the polls were slightly off – and it looks as though Labour has undershot both the polls and its general election performance in London – the opposition could come away empty handed, and that’s precisesly what’s happened in the capital.
Outside the capital there were a few changes in control with Labour gaining Plymouth and the Tories gaining Basildon and Peterborough but losing overall control of Trafford.
The Lib Dems have retaken control of Richmond-on-Thames from the Conservatives (with an 11 per cent swing in the popular vote) and held Sutton, both of which set the Europhiles up well for neighbouring Kingston-on-Thamnes which counts later today.
UKIP has been all but wiped out, losing 90 of its 91 seats declared so far, though bizarrely gaining one in Derby from the leader of that council’s Labour group.
Sinn Fein held West Tyrone in the Westminster by-election with a slightly reduced majority.
More to follow once the results are in.