| 05.10 | 48 | | | Il Lombardia Under 23 (1.2U) | | 170.6 | | | more |
| 27.09 | 7 | | | World Championships MU - Road Race (WC) | | 173.6 | 20 | 60 | more |
| 18.08 › 24.0818-24/8 | | | | Tour de l'Avenir (2.Ncup) | | | | | more |
| 16 | | | Youth classificationYouth classification | | | | | |
| 5 | | | Mountains classificationMountains classification | | | | | |
| 14 | | | Points classificationPoints classification | | | | | |
| 29 | | | General classificationGeneral classification | | | | | |
| 24.08 | 98 | | | S6Stage 6 - Bobbio Pelice › Colle delle Finestre | | 127.2 | | | |
| 23.08 | 46 | 7 | | S5Stage 5 - Les Karellis › Condoue | | 119.3 | | | |
| 22.08 | 3 | 2 | | S4Stage 4 - La Rosière › Les Karellis | | 142.6 | 1 | 5 | |
| 21.08 | 2 | 2 | | S3Stage 3 - Peisey-Vallandry › La Rosière | | 70.7 | 2 | 9 | |
| 20.08 | 57 | 10 | | S2Stage 2 - Mouchard › Plateau d'Hauteville | | 170.2 | | | |
| 19.08 | 79 | 11 | | S1Stage 1 - Sarrebourg › Ronchamp-Champagney | | 184.5 | | | |
| 18.08 | 9 | 9 | | ProloguePrologue - Sarrebourg › Sarrebourg | | 7.1 | | | |
| 17.07 › 21.0717-21/7 | | | | Giro Ciclistico della Valle d'Aosta - Mont Blanc (2.2U) | | | | | more |
| 1 | | | Youth classificationYouth classification | | | | | |
| 3 | | | Mountains classificationMountains classification | | | | | |
| 2 | | | Points classificationPoints classification | | | | | |
| 1 | | | General classificationGeneral classification | | | 25 | 30 | |
| 21.07 | 3 | | | S5Stage 5 - Valtournenche › Breuil-Cervinia | | 95.5 | 1 | | |
| 20.07 | 1 | 1 | | S4Stage 4 - Saint-Vincent › Ayas (Champoluc) | | 163.1 | 5 | 5 +1 | |
| 19.07 | 3 | 2 | | S3Stage 3 - Sarre › Pré Saint Didier (Verrand) | | 129.5 | 1 | | |
| 18.07 | 65 | 8 | | S2Stage 2 - Verrès › Borgofranco d'Ivrea | | 127.8 | | | |
| 17.07 | 8 | 8 | | S1Stage 1 - Saint Gervais Mont Blanc › Passy (Plaine Joux) | | 40.8 | | | |
| 14.07 | 14 | | | Giro dell'Appennino (1.1) | | 198.5 | 7 | 5 | more |
| 09.06 › 16.069-16/6 | | | | Giro d'Italia Next Gen (2.2U) | | | | | more |
| 1 | | | Youth classificationYouth classification | | | | | |
| 2 | | | Mountains classificationMountains classification | | | | | |
| 4 | | | Points classificationPoints classification | | | | | |
| 1 | | | General classificationGeneral classification | | | 25 | 30 | |
| 16.06 | 46 | | | S8Stage 8 - Cesena › Forlimpopoli | | 137 | | | |
| 15.06 | 25 | 1 | | S7Stage 7 - Montegrotto Terme › Zocca | | 182 | | +1 | |
| 14.06 | 1 | 1 | | S6Stage 6 - Borgo Virgilio › Fosse | | 172 | 5 | 5 +1 | |
| 13.06 | 112 | 1 | | S5Stage 5 - Bergamo › Cremona | | 138 | | +1 | |
| 12.06 | 107 | 1 | | S4Stage 4 - Pertusio › Borgomanero | | 139 | | +1 | |
| 11.06 | 1 | 1 | | S3Stage 3 - Verrès › Pian della Mussa | | 134 | 5 | 5 +1 | |
| 10.06 | 31 | 6 | | S2Stage 2 - Aymavilles › Saint-Vincent | | 105 | | | |
| 09.06 | 9 | 9 | | S1 (ITT)Stage 1 (ITT) - Aosta › Aosta | | 8.8 | | | |
| 22.05 › 26.0522-26/5 | | | | Alpes Isère Tour (2.2) | | | | | more |
| 1 | | | Youth classificationYouth classification | | | | | |
| 6 | | | Mountains classificationMountains classification | | | | | |
| 2 | | | Points classificationPoints classification | | | | | |
| 1 | | | General classificationGeneral classification | | | 25 | 40 | |
| 26.05 | 2 | | | S5Stage 5 - Saint-Pierre de Chartreuse › Le Bourg d'Oisans | | 171.2 | 2 | 3 | |
| 25.05 | 64 | 2 | | S4Stage 4 - Saint-Maurice-l'Exil › Roussillon | | 149.4 | | | |
| 24.05 | 73 | 2 | | S3Stage 3 - Aéroport Saint-Exupery › Genas | | 154 | | | |
| 23.05 | 3 | 2 | | S2Stage 2 - Val-de-Virieu › Saint-Savin | | 142.9 | 1 | 1 | |
| 22.05 | 81 | 5 | | S1Stage 1 - Charvieu-Chavagneux › Charvieu-Chavagneux | | 127.6 | | | |
| 12.05 | 2 | | | Flèche Ardennaise (1.2) | | 174 | 10 | 30 | more |
| 01.05 › 05.051-5/5 | | | | Ronde de l'Isard (2.2U) | | | | | more |
| 1 | | | Youth classificationYouth classification | | | | | |
| 11 | | | Mountains classificationMountains classification | | | | | |
| 5 | | | Points classificationPoints classification | | | | | |
| 2 | | | General classificationGeneral classification | | | 18 | 25 | |
| 05.05 | 4 | | | S5Stage 5 - Pamiers › Saint-Girons | | 134.4 | | | |
| 04.05 | 9 | 3 | | S4Stage 4 - Lavelanet › Plateau-de-Beille | | 122.3 | | | |
| 03.05 | 20 | 2 | | S3Stage 3 - Bagnères-de-Luchon › Saverdun | | 153.2 | | | |
| 02.05 | 3 | 2 | | S2Stage 2 - Bagnères-de-Bigorre › Bagnères-de-Luchon | | 125.8 | 1 | | |
| 01.05 | 48 | 48 | | S1Stage 1 - L'Isle-en-Dodon › Trie-sur-Baïse | | 146.1 | | | |
| 13.04 | DNF | | | Liège-Bastogne-Liège U23 (1.2U) | | 175 | | | more |
| 04.04 › 07.044-7/4 | | | | Circuit des Ardennes (2.2) | | | | | more |
| 11 | | | Youth classificationYouth classification | | | | | |
| 9 | | | Mountains classificationMountains classification | | | | | |
| 21 | | | Points classificationPoints classification | | | | | |
| 22 | | | General classificationGeneral classification | | | | | |
| 07.04 | 12 | | | S4Stage 4 - Sedan › Sedan | | 163.7 | | | |
| 06.04 | 9 | 28 | | S3Stage 3 - Charleville-Mézières › Aiglemont | | 145.8 | | | |
| 05.04 | 68 | 50 | | S2Stage 2 - Auvillers-les-Forges › Hardoncelle | | 167.6 | | | |
| 04.04 | 57 | 57 | | S1Stage 1 - Juniville › Asfeld | | 165.1 | | | |
| 30.03 | DNF | | | Volta NXT Classic (1.1) Lotto Dstny | | 190.8 | | | more |
| 19.03 › 23.0319-23/3 | | | | Settimana Internazionale Coppi e Bartali (2.1) Lotto Dstny | | | | | more |
| 8 | | | Youth classificationYouth classification | | | | | |
| 22 | | | General classificationGeneral classification | | | | 3 | |
| 23.03 | 37 | | | S5Stage 5 - Forlì › Forlì | | 157.9 | | | |
| 22.03 | 19 | 21 | | S4Stage 4 - Brisighella › Brisighella | | 150.7 | | | |
| 21.03 | 67 | 32 | | S3Stage 3 - Riccione › Riccione | | 132.2 | | | |
| 20.03 | 17 | 28 | | S2Stage 2 - Riccione › Sogliano al Rubicone | | 156.5 | | | |
| 19.03 | 64 | 64 | | S1Stage 1 - Pesaro › Pesaro | | 109.7 | | | |
| 03.03 | 1 | | | Ronde van Limburg (NAT) | | 173.4 | | | more |
| 28.02 | 95 | | | Trofeo Laigueglia (1.Pro) Lotto Dstny | | 202 | | | more |