28.09 | DNF | | | Ruota d'Oro - GP Festa del Perdono (1.2U) | 173 | | | more |
24.09 | DNF | | | World Championships MU - Road Race (WC) | 161.1 | | | more |
03.09 › 05.093-5/9 | | | | Giro della Regione Friuli Venezia Giulia (2.2) | | | | more |
| 94 | | | General classificationGeneral classification | | | | |
05.09 | 138 | | | S3Stage 3 - Mortegliano › Pordenone | 157 | | | |
04.09 | 91 | 94 | | S2Stage 2 - Casarsa della Delizia › Piancavallo | 142 | | | |
03.09 | 94 | 94 | | S1Stage 1 - Rive d’Arcano › Tarvisio | 153 | | | |
28.08 | DNF | | | Brussels Cycling Classic (1.Pro) Team Qhubeka NextHash | 205.3 | | | more |
13.08 › 22.0813-22/8 | | | | Tour de l'Avenir (2.Ncup) | | | | more |
| 86 | | | General classificationGeneral classification | | | | |
22.08 | 81 | | | S9Stage 9 - La Toussuire › Col du Petit Saint-Bernard | 151.6 | | | |
21.08 | 67 | 93 | | S8Stage 8 - La Tour-en-Maurienne › Saint Jean d’Arves | 71.3 | | | |
20.08 | 79 | 101 | | S7Stage 7 - Saint-Vulbas › Grand Colombier | 97.9 | | | |
19.08 | 112 | 111 | | S6Stage 6 - Champagnole › Septmoncel | 111 | | | |
18.08 | 110 | 105 | | S5Stage 5 - Tomblaine › Bar-sur-Aube | 150.7 | | | |
17.08 | 97 | 112 | | S4Stage 4 - Provins › Bar-le-Duc | 183.9 | | | |
16.08 | 136 | 126 | | S3Stage 3 - Château-Thierry › Donnemarie-Dontilly | 153.4 | | | |
15.08 | 24 | 113 | | S2 (TTT)Stage 2 (TTT) - Laon › Laon | 26.8 | | | |
14.08 | 110 | 117 | | S1Stage 1 - Charleville-Mézières › Soissons | 161.2 | | | |
13.08 | 90 | 90 | | ProloguePrologue - Charleville-Mézières › Charleville-Mézières | 5 | | | |
30.07 › 02.0830-2/7 | | | | Kreiz Breizh Elites (2.2) | | | | more |
01.08 | DNF | | | S3Stage 3 - Ploërdut › Carhaix | 180.5 | | | |
31.07 | 55 | 60 | | S2Stage 2 - Calanhel › Plouray | 189.9 | | | |
30.07 | 14 | 63 | | S1 (TTT)Stage 1 (TTT) - Ploumagoar › Ploumagoar | 12.5 | | | |
04.07 | 38 | | | Giro del Medio Brenta (1.2) | 171.6 | | | more |
24.06 | 47 | | | Giro dell'Appennino (1.1) | 192.1 | | | more |
03.06 › 12.063-12/6 | | | | Giro Ciclistico d'Italia (2.2) | | | | more |
| 101 | | | General classificationGeneral classification | | | | |
12.06 | 135 | | | S10Stage 10 - San Vito al Tagliamento › Castelfranco Veneto | 162.7 | | | |
11.06 | 75 | 98 | | S9Stage 9 - Cavalese › Nevegal | 167.1 | | | |
10.06 | 70 | 103 | | S8Stage 8 - Aprica › Andalo | 115.5 | | | |
09.06 | 125 | 108 | | S7Stage 7 - Sondrio › Lanzada Lago di Campo Moro | 119.4 | | | |
08.06 | 139 | 103 | | S6Stage 6 - Bonferraro di Sorgà › San Pellegrino Terme | 177.5 | | | |
07.06 | 83 | 87 | | S5Stage 5 - Fanano › Sestola | 142 | | | |
06.06 | 72 | 98 | | S4 (ITT)Stage 4 (ITT) - Sorbolo Mezzani › Guastalla | 25.4 | | | |
05.06 | 29 | 100 | | S3Stage 3 - Cesenatico › Cesenatico | 132.5 | | | |
04.06 | 139 | 128 | | S2Stage 2 - Riccione › Imola | 138.3 | | | |
03.06 | 35 | 35 | | S1Stage 1 - Cesenatico › Riccione | 144.5 | | | |
30.05 | 45 | | | Coppa della Pace - Trofeo F.lli Anelli (1.2U) | 172 | | | more |
19.05 › 23.0519-23/5 | | | | Alpes Isère Tour (2.2) | | | | more |
| 39 | | | Youth classificationYouth classification | | | | |
| 33 | | | Mountains classificationMountains classification | | | | |
| 92 | | | General classificationGeneral classification | | | | |
23.05 | 94 | | | S5Stage 5 - Pressins › Crolles | 141.4 | | | |
22.05 | 100 | 95 | | S4Stage 4 - Les Roches-de-Condrieu › Saint-Maurice-l'Exil | 174 | | | |
21.05 | 62 | 78 | | S3Stage 3 - Saint-Exupéry › Pusignan | 157.8 | | | |
20.05 | 100 | 88 | | S2Stage 2 - Saint-Jean-de-Soudain › La Verpillière | 167.3 | | | |
19.05 | 47 | 49 | | S1Stage 1 - Charvieu-Chavagneux › Charvieu-Chavagneux | 136.4 | | | |
25.04 | DNF | | | Gran Premio della Liberazione (1.2U) | 138 | | | more |
05.04 | 25 | | | Giro del Belvedere (1.2U) | 166.8 | | | more |
21.03 | 1 | | | National Championships South Africa ME - Road Race (NC) | 178 | 15 | 100 | more |
19.03 | 1 | | | National Championships South Africa MU - ITT (NC) | 40 | | 25 | more |