The echoes of David Crowley’s 2020 county executive election win in his 2026 primary victory
As the saying goes, history does not repeat itself, but it often rhymes. There are some similar stanzas in Crowley’s 2020 victory in Milwaukee County as in his win to become the Democratic nominee.
The Recombobulation Area is a 19-time 21-TIME! Milwaukee Press Club award-winning opinion column and online publication founded by Milwaukee journalist Dan Shafer.
This column is one part of Dan Shafer’s deep-dive mega-breakdown of the election results from Wisconsin’s Aug. 11 partisan primary. Read the full column with all 12 takeaways here.
Each of these 12 takeaways are available as a standalone free version. Find each of those here.

In the Spring Election in 2020, David Crowley won the race for Milwaukee County Executive by a less than 1% margin. He was the less-known underdog in the race, and eventually defeated the more progressive candidate.
In that victory, Crowley assembled a coalition of Black voters from the city’s north and northwest side, scattered support from west-side neighborhoods and suburbs near the Assembly district he represented from 2017 to 2020, and carried many of the surrounding suburbs.
As Marquette’s John Johnson pointed out, that coalition looks remarkably similar to the Milwaukee County map in his 2026 primary win. “Crowley reliably draws support from a seemingly contradictory set of places,” Johnson wrote. “In Milwaukee County, he wins the poorest wards and the richest, the most Black and the most white, the most Democratic and the most Republican.”
The path to victory rhymes too. When then-County Executive Chris Abele announced in late 2019 he wouldn’t seek another term, a large field formed to replace him: State Sen. Chris Larson, a well-known progressive who’d lost to Abele in 2016; County Board Chair Theodore Lipscomb; Glendale Mayor Bryan Kennedy; former state senator Jim Sullivan, who’d served in Abele’s administration; longshot nonprofit executive Purnima Nath (since a perennial candidate in various races); and Crowley, then in his second Assembly term.
Abele initially backed Sullivan, but that race was upended when Sullivan and Kennedy were both removed from the ballot for violating election law while collecting nomination signatures — an issue initially raised by Lipscomb. With the field narrowed, Crowley gained Abele’s support, finished second in the primary, and beat the more progressive Larson in the general runoff.
Now, there is not a perfect one-to-one analogue between Sullivan and Lt. Gov. Sara Rodriguez, or between Hong and Larson, or between Abele and Evers. But, as the saying goes, history does not repeat itself, but it often rhymes. Here, there are some remarkably similar stanzas, and certainly some echoes of Crowley’s 2020 victory in Milwaukee County in his 2026 victory in the Democratic primary. He won by 0.53% in 2020 and by 0.48% in 2026. Even in a state where elections are often decided by decimal-point margins, that is remarkable in its similarity.
From the archives: See our coverage of that 2020 Milwaukee County Executive race — and eventual endorsement of David Crowley — here:
Dan Shafer’s work this week has been referenced nationwide, from places like The Guardian, HuffPost and beyond.
Dan Shafer is an independent journalist from Milwaukee who writes and publishes The Recombobulation Area. He worked with Civic Media from 2024 to 2026. He’s written for The New York Times, The Daily Beast, Heartland Signal, Belt Magazine, WisPolitics, and Milwaukee Record. He previously worked at Seattle Magazine, Seattle Business Magazine, the Milwaukee Business Journal, Milwaukee Magazine, and BizTimes Milwaukee. He’s won 24 Milwaukee Press Club Excellence in Journalism Awards. He’s on Twitter at @DanRShafer.
Subscribe to The Recombobulation newsletter here and follow us on Facebook and Instagram at @ therecombobulationarea.
Already subscribe? Get a gift subscription for a friend.
Part of a group who might want to subscribe together? Get a group subscription for 30% off!
Follow Dan Shafer on Twitter at @DanRShafer, at BlueSky at @danshafer.bsky.social, and on Threads at @danshafer.







