30.07 › 03.0830-3/7 | | | | Tour Alsace (2.2) | | | | more |
30.07 | 14 | 35 | | S1 (TTT)Stage 1 (TTT) - Sausheim › Sausheim | 4.3 | | | |
15.06 › 22.0615-22/6 | | | | Giro d'Italia Next Gen (2.2U) | | | | more |
22.06 | DNF | | | S8Stage 8 - Pinerolo › Pinerolo | 127 | | | |
21.06 | 120 | 102 | | S7Stage 7 - Bra › Prato Nevoso | 163 | | | |
20.06 | 11 | 90 | | S6Stage 6 - Ovada › Acqui Terme | 154 | | | |
19.06 | 104 | 105 | | S5Stage 5 - Fiorenzuola d'Arda › Gavi | 153 | | | |
18.06 | 121 | 104 | | S4Stage 4 - Manerbio › Salsomaggiore Terme | 134 | | | |
17.06 | 88 | 91 | | S3Stage 3 - Albese Con Cassano › Passo del Maniva | 144 | | | |
16.06 | 67 | 84 | | S2Stage 2 - Rho Fiera Milano › Cantù | 146 | | | |
15.06 | 104 | 104 | | S1 (ITT)Stage 1 (ITT) - Rho › Rho | 8.4 | | | |
26.05 | 3 | | | National Championships United States ME - Road Race (NC) | 198.6 | 7 | 60 | more |
24.05 | 1 | | | National Championships United States MU - Road Race (NC) | 135 | | 50 | more |
25.04 › 01.0525-1/4 | | | | Le Tour de Bretagne Cycliste (2.2) | | | | more |
| 26 | | | Mountains classificationMountains classification | | | | |
| 31 | | | General classificationGeneral classification | | | | |
01.05 | 51 | | | S7Stage 7 - Landébia › Plancoët | 159.2 | | | |
30.04 | 52 | 36 | | S6Stage 6 - Missillac › Le Pertre | 179.8 | | | |
29.04 | 44 | 43 | | S5Stage 5 - Erdeven › Guenrouët | 164.1 | | | |
28.04 | 90 | 74 | | S4Stage 4 - Plonéour-Lanvern › Landévant | 204.6 | | | |
27.04 | 33 | 26 | | S3Stage 3 - Loudéac › Plonéour-Lanvern | 212 | | | |
26.04 | 20 | 22 | | S2Stage 2 - La Gouesnière › Le Cambout | 182.2 | | | |
25.04 | 39 | 40 | | S1Stage 1 - Hirel › Le Fresnais | 143.2 | | | |
09.04 › 13.049-13/4 | | | | Circuit des Ardennes (2.2) | | | | more |
| 2 | | | Mountains classificationMountains classification | | | | |
| 22 | | | Points classificationPoints classification | | | | |
| 18 | | | General classificationGeneral classification | | | | |
13.04 | 7 | | | S5Stage 5 - Chooz › Charleville-Mézières | 167 | | | |
12.04 | 13 | 18 | | S4Stage 4 - Lac de Bairon › Lac des Vieilles Forges | 175 | | | |
11.04 | 24 | 27 | | S3Stage 3 - Boulzicourt › Saint-Marceau | 173 | | | |
10.04 | 29 | 22 | | S2Stage 2 - Rethel › Rethel | 171 | | | |
09.04 | 17 | 21 | | S1Stage 1 - Sedan › Nouvion-sur-Meuse | 133 | | | |
26.03 › 30.0326-30/3 | | | | Volta ao Alentejo (2.2) | | | | more |
| 6 | | | Youth classificationYouth classification | | | | |
| 27 | | | General classificationGeneral classification | | | | |
30.03 | 28 | | | S5Stage 5 - Estremoz › Évora | 151.5 | | | |
29.03 | 38 | 36 | | S4Stage 4 - Monforte › Castelo de Vide | 147.7 | | | |
28.03 | 74 | 75 | | S3Stage 3 - Carvalhal › Arraiolos | 181.5 | | | |
27.03 | 72 | 77 | | S2Stage 2 - Castro Verde › Grândola | 171.5 | | | |
26.03 | 82 | 83 | | S1Stage 1 - Beja › Moura | 166.6 | | | |
13.03 › 16.0313-16/3 | | | | Tour of Rhodes Powered by Rodos Palace (2.2) | | | | more |
| 50 | | | Youth classificationYouth classification | | | | |
| 2 | | | Mountains classificationMountains classification | | | | |
| 95 | | | General classificationGeneral classification | | | | |
16.03 | 108 | | | S3Stage 3 - Kremasti › Kremasti | 155.9 | | | |
15.03 | 112 | 105 | | S2Stage 2 - Rhodes › Kalithies | 158.5 | | | |
14.03 | 104 | 93 | | S1Stage 1 - Rhodes › Soroni | 148.5 | | | |
13.03 | 110 | 110 | | ProloguePrologue - Rhodes › Rhodes | 5.1 | | | |
08.03 | 62 | | | Rhodes GP (1.2) | 179.7 | | | more |
14.02 › 16.0214-16/2 | | | | Tour de la Provence (2.1) EF Education - EasyPost | | | | more |
| 32 | | | Youth classificationYouth classification | | | | |
| 99 | | | General classificationGeneral classification | | | | |
16.02 | 102 | | | S3Stage 3 - Rognac › Arles | 190.6 | | | |
15.02 | 86 | 79 | | S2Stage 2 - Forcalquier › Manosque | 167.3 | | | |
14.02 | 68 | 68 | | S1Stage 1 - Marseille › Saint-Victoret | 169.3 | | | |
02.02 | 70 | | | Trofeo Palma (1.1) EF Education - EasyPost | 149.9 | | | more |
01.02 | NR | | | Trofeo Andratx - Pollença (1.1) EF Education - EasyPost | 151.5 23 | | | more |