| 04.10 | 1 | | | European Continental Championships MU - Road Race (CC) | 121.1 | 40 | 125 | more |
| 26.09 | 34 | | | World Championships MU - Road Race (WC) | 164.6 | | 3 | more |
| 22.09 | DNS | | | World Championships MU - ITT (WC) | 31.2 | | | more |
| 23.08 › 29.0823-29/8 | | | | Tour de l'Avenir (2.Ncup) | | | | more |
| 2 | | | Youth classificationYouth classification | | | | |
| 1 | | | Mountains classificationMountains classification | | | | |
| 7 | | | Points classificationPoints classification | | | | |
| 2 | | | General classificationGeneral classification | | 18 | 110 | |
| 29.08 | 3 | | | S6b (ITT)Stage 6b (ITT) - Montvalezan › La Rosière | 10.3 | 1 | 5 | |
| 29.08 | 1 | 4 | | S6aStage 6a - La Rosière › La Rosière | 41.6 | 5 | 15 | |
| 28.08 | 1 | 5 | | S5Stage 5 - Saint-Gervais-Mont-Blanc › Tignes 2100 | 121 | 5 | 15 | |
| 27.08 | 69 | 21 | | S4Stage 4 - Montagnat › Val-Suran | 110.2 | | | |
| 26.08 | 17 | 21 | | S3Stage 3 - Etang-sur-Arroux › Châtillon-sur-Chalaronne | 158.6 | | | |
| 25.08 | 90 | 22 | | S2Stage 2 - Saint-Symphorien-sur-Coise › Vitry-en-Charollais | 136.7 | | | |
| 24.08 | 51 | 7 | | S1Stage 1 - Aoste › Saint-Galmier | 188.6 | | | |
| 23.08 | 6 | 6 | | ProloguePrologue - Tignes › Tignes 1800 | 3 | | | |
| 16.07 › 20.0716-20/7 | | | | Giro Ciclistico della Valle d'Aosta - Mont Blanc (2.2U) | | | | more |
| 1 | | | Mountains classificationMountains classification | | | | |
| 1 | | | Points classificationPoints classification | | | | |
| 1 | | | General classificationGeneral classification | | 25 | 30 | |
| 20.07 | 1 | | | S5Stage 5 - Valtournenche › Breuil Cervinia | 119.5 | 5 | 5 | |
| 19.07 | 1 | 1 | | S4Stage 4 - Saint-Pierre › Valsavarenche (Pont) | 160.6 | 5 | 5 +1 | |
| 18.07 | 1 | 1 | | S3Stage 3 - Pré-Saint-Didier › Colle del Gran San Bernardo | 81.7 | 5 | 5 +1 | |
| 16.07 | 55 | 55 | | S1Stage 1 - Aosta › Aosta | 85.4 | | | |
| 15.06 › 22.0615-22/6 | | | | Giro d'Italia Next Gen (2.2U) | | | | more |
| 22.06 | DNS | | | S8Stage 8 - Pinerolo › Pinerolo | 127 | | | |
| 21.06 | 112 | 34 | | S7Stage 7 - Bra › Prato Nevoso | 163 | | | |
| 20.06 | 35 | 4 | | S6Stage 6 - Ovada › Acqui Terme | 154 | | | |
| 19.06 | 33 | 4 | | S5Stage 5 - Fiorenzuola d'Arda › Gavi | 153 | | | |
| 18.06 | 59 | 1 | | S4Stage 4 - Manerbio › Salsomaggiore Terme | 134 | | +1 | |
| 17.06 | 1 | 1 | | S3Stage 3 - Albese Con Cassano › Passo del Maniva | 144 | 5 | 5 +1 | |
| 16.06 | 4 | 23 | | S2Stage 2 - Rho Fiera Milano › Cantù | 146 | | | |
| 15.06 | 27 | 27 | | S1 (ITT)Stage 1 (ITT) - Rho › Rho | 8.4 | | | |
| 21.05 › 25.0521-25/5 | | | | Ronde de l'Isard (2.2U) | | | | more |
| 1 | | | Youth classificationYouth classification | | | | |
| 3 | | | Mountains classificationMountains classification | | | | |
| 1 | | | Points classificationPoints classification | | | | |
| 1 | | | General classificationGeneral classification | | 25 | 30 | |
| 25.05 | 34 | | | S5Stage 5 - Saubens › Saint-Girons | 150.08 | | | |
| 24.05 | 3 | 1 | | S4Stage 4 - Espéraza › Pla de Soulcem | 124.3 | 1 | +1 | |
| 23.05 | 8 | 1 | | S3Stage 3 - Aspet › Salies-du-Salat | 142.94 | | +1 | |
| 22.05 | 1 | 1 | | S2Stage 2 - Luz-Saint-Sauveur › Cauterets | 132.11 | 5 | 5 +1 | |
| 21.05 | 8 | 4 | | S1Stage 1 - Saint-Mont › Bagnères-de-Bigorre | 149.19 | | | |
| 03.05 | 1 | | | Flèche Ardennaise (1.2) | 174.3 | 15 | 40 | more |
| 19.04 | 1 | | | Liège-Bastogne-Liège MU (1.2U) | 174.6 | 15 | 30 | more |
| 09.04 › 13.049-13/4 | | | | Circuit des Ardennes (2.2) | | | | more |
| 1 | | | Youth classificationYouth classification | | | | |
| 3 | | | Mountains classificationMountains classification | | | | |
| 12 | | | Points classificationPoints classification | | | | |
| 2 | | | General classificationGeneral classification | | 18 | 30 | |
| 13.04 | 41 | | | S5Stage 5 - Chooz › Charleville-Mézières | 167 | | | |
| 12.04 | 25 | 2 | | S4Stage 4 - Lac de Bairon › Lac des Vieilles Forges | 175 | | | |
| 11.04 | 1 | 2 | | S3Stage 3 - Boulzicourt › Saint-Marceau | 173 | 5 | 7 | |
| 10.04 | 83 | 66 | | S2Stage 2 - Rethel › Rethel | 171 | | | |
| 09.04 | 43 | 47 | | S1Stage 1 - Sedan › Nouvion-sur-Meuse | 133 | | | |
| 25.03 › 29.0325-29/3 | | | | Settimana Internazionale Coppi e Bartali (2.1) | | | | more |
| 8 | | | Youth classificationYouth classification | | | | |
| 28 | | | Mountains classificationMountains classification | | | | |
| 11 | | | Points classificationPoints classification | | | | |
| 22 | | | General classificationGeneral classification | | | 3 | |
| 29.03 | 11 | | | S5Stage 5 - Brisighella › Forli | 132.5 | | | |
| 28.03 | 17 | 23 | | S4Stage 4 - Brisighella › Brisighella | 150.4 | | | |
| 27.03 | 74 | 27 | | S3Stage 3 - Riccione › Cesena | 142.1 | | | |
| 26.03 | 2 | 2 | | S2Stage 2 - Riccione › Sogliano al Rubicone | 163.9 | 12 | 5 | |
| 25.03 | 128 | 128 | | S1Stage 1 - Ferrara › Bondeno | 174.5 | | | |
| 22.02 › 23.0222-23/2 | | | | Tour des Alpes-Maritimes (2.1) Lotto | | | | more |
| 3 | | | Youth classificationYouth classification | | | | |
| 7 | | | General classificationGeneral classification | | 20 | 35 | |
| 23.02 | 24 | | | S2Stage 2 - Villefranche-sur-Mer › Vence | 131.8 | | | |
| 22.02 | 5 | 5 | | S1Stage 1 - Contes › Gourdon | 162.4 | 4 | | |
| 21.02 | 35 | | | Classic Var (1.1) Lotto | 164 | | | more |