In singolare nel circuito maggiore ha vinto un solo titolo (su due finali disputate) e non ha mai superato il terzo turno nelle prove del Grande Slam. In doppio ha vinto un torneo ATP, ha raggiunto la semifinale all'Open di Francia 2026 e ha vinto alcuni tornei Challenger sia in singolare che in doppio. I suoi migliori ranking ATP sono stati il 46º posto in singolare nel giugno 2025 e il 47º in doppio nel settembre 2026.

Tra gli juniores ha vinto il torneo di doppio all'Open di Francia 2014 in coppia con Benjamin Bonzi e ha disputato altre due finali del Grande Slam in doppio e una in singolare. Ha raggiunto il 3º posto nel ranking mondiale juniores nel marzo 2014.

Carriera Juniores Ha raggiunto 4 finali del Grande Slam tra gli juniores, 3 in doppio e una in singolare, vincendo il torneo di doppio all'Open di Francia 2014 in coppia con Benjamin Bonzi, raggiungendo la 3ª posizione nel ranking mondiale di categoria.

Nel 2010 vince il torneo internazionale Under-14 Les Petits As che si tiene ogni anno in Francia. Nel 2011 gioca la Coppa Davis Junior con la Francia, che si piazza al terzo posto. Nel 2012 gioca tutti e quattro gli Slam, senza mai superare il terzo turno in singolare, mentre in doppio disputa la semifinale agli Australian Open. Gioca in coppia con Frederico Ferreira Silva la finale di doppio juniores agli US Open 2013 e vengono sconfitti da Kamil Majchrzak e Martin Redlicki.

Nel 2014 perde assieme a Johan Sébastien Tatlot la finale di doppio agli Australian Open, mentre vince insieme a Bonzi l'Open di Francia. Disputa anche la finale in singolare agli US Open di quell'anno e viene sconfitto da Omar Jasika in tre set.

2015- 2016, inizi tra i professionisti, titolo challenger Gioca il suo primo incontro del circuito ATP nel 2015 a Nizza perdendo da James Duckworth. I primi incontri del Grande Slam sono all'Open di Francia 2015, perso contro Rafael Nadal, e l'anno successivo al primo turno degli Australian Open supera Ivan Dodig ed esce di scena al secondo turno per mano di Novak Đoković. A fine aprile vince il suo primo torneo Challenger a Tallahassee, battendo in finale al terzo set Frances Tiafoe. Alla sua seconda esperienza al Roland Garros supera al primo turno Chung Hyeon e viene eliminato da Pablo Cuevas. A ottobre raggiunge la finale del torneo Challenger di Fairfield e perde contro Santiago Giraldo.

2017-2018, successi nei Challenger Inizia la stagione 2017 vincendo il titolo in doppio al Challenger di Noumea insieme a Tristan Lamasine. Su invito gioca i seguenti Australian Open dove viene fermato subito da Sam Querrey in quattro set. Al Challenger di Bergamo viene battuto in due set in finale da Jerzy Janowicz. Nella finale di Anning cede invece a Janko Tipsarević in tre set. All'Open di Francia viene eliminato al primo turno in cinque set da Marco Trungelliti, ma si rifà con la vittoria a luglio nel torneo di doppio al Guzzini Challenger di Recanati in coppia con Jonathan Eysseric.

Nel 2018 approda per la prima volta al tabellone principale di un Grande Slam vincendo i turni di qualificazione, e cede al tie-break del quinto set contro Casper Ruud. A febbraio vince il suo secondo Challenger a Quimper battendo in semifinale Stefanos Tsitsipas e in finale Aleksej Vatutin per 6–3, 7–6. Ad aprile sconfigge nettamente Calvin Hemery in finale sulla terra rossa indoor di Nanchang. Rifiuta la wild-card per il tabellone principale dell'Open di Francia, sostenendo di non essere sufficientemente competitivo, e perde da Andrea Collarini nel primo turno di qualificazioni. Arriva in finale all'Istanbul e perde contro Corentin Moutet.

2019- 2020, due titoli Challenger in doppio Nel 2019 l'unico risultato in singolare degno di nota è la finale raggiunta ad Aix-en-Provence, persa da Pablo Cuevas, mentre vince due titoli in doppio con Grégoire Barrère a Bordeaux e a Ismaning in coppia con Tristan Lamasine. Al Roland-Garros viene sconfitto in tre set da Kei Nishikori, nº 7 del mondo. Nel 2020 fa due apparizioni nei tornei del Grande Slam ed esce al primo turno sia agli Australian Open che al Roland Garros, sconfitto in entrambi i casi in cinque set, rispettivamente da Filip Krajinović e Marcos Giron

2021, due finali Challenger in singolare, due titoli Challenger in doppio Nel 2021 perde la finale nei Challenger di Forlì, contro Mats Moraing, e di Porto un mese dopo contro Altuğ Çelikbilek. In doppio vince il Challenger di Biella con Lamasine e quello di Mouilleron-le-Captif con Eysseric. Nel corso della stagione supera le qualificazioni agli Australian Open e – per la prima volta – agli US Open, e in entrambi i tornei esce di scena al primo turno.

2022, tre titoli Challenger, ingresso in top 100 Raggiunge la finale al Challenger di Forlì e perde contro Pavel Kotov. A fine febbraio vince il Challenger di Pau battendo in finale Vasek Pospisil per 4–6, 6–4, 6–3, ottenendo il suo primo titolo dal 2018 e il quarto in carriera. Continua il buon momento raggiungendo la finale anche nei successivi due Challenger, perde quella di Torino da Moraing e vince in rimonta contro Ričardas Berankis quella di Lille. A inizio di maggio grazie alla vittoria in finale ad Aix-en-Provence sul connazionale Hemery, entra per la prima volta nella top 100 ATP. Viene fermato da Alexei Popyrin nella finale di Bordeaux e sul finire della stagione da Barrere in quella di Orleans. Partecipa per la prima volta in carriera a Wimbledon e sconfigge Benoît Paire in quattro set, prima di perdere contro Nikoloz Basilašvili al secondo turno. A ottobre vince il titolo sul sintetico indoor dell'Ismaning Challenger sconfiggendo il tedesco Max Hans Rehberg e chiude la stagione con il nuovo miglior ranking al 64º posto mondiale.

2023, prima semifinale ATP e 61º nel ranking Raggiunge per la prima volta i quarti in un torneo ATP all'Auckland Open, viene eliminato da Jenson Brooksby, sale alla 61ª posizione del ranking ma subito scende con la sconfitta contro Tsitsipas al primo turno degli Australian Open. Esce nei quarti anche all'ATP di Montpellier dopo aver sconfitto Alejandro Davidovich Fokina. Si spinge per la prima volta fino al quarto turno in un Masters 1000 al Miami Open e cede in due set a Daniil Medvedev dopo aver vinto in rimonta contro il nº 18 del mondo Alex de Minaur. A Estoril raggiunge la sua prima semifinale nel circuito maggiore e viene sconfitto nel tie-break del set decisivo dal nº 5 ATP Casper Ruud. Dopo una serie di risultati negativi, vince a giugno il Challenger di Blois. Raggiunge per la prima volta il terzo turno in uno Slam a Wimbledon e cede in quattro set al top 10 Jannik Sinner. Nel prosieguo della stagione vince un solo incontro e a fine anno scende al 100º posto mondiale.

2024, crollo in classifica, prima finale ATP e risalita Il momento negativo continua nei primi mesi del 2024, nei quali raggiunge al massimo una semifinale Challenger, e a giugno scende alla 223ª posizione. Si riscatta a Wimbledon, dove perde al terzo turno contro Holger Rune in cinque set dopo aver eliminato il nº 22 del mondo Karen Khachanov. Disputa la sua prima finale ATP al successivo Swiss Open Gstaad grazie al successo in due set sul nº 37 ATP Jan-Lennard Struff e raccoglie solo quattro giochi contro un ritrovato Matteo Berrettini. A settembre perde la finale al Challenger di Rennes e rientra nella top 100, il mese successivo perde in finale anche agli Internationaux de Tennis de Vendée. All'ultimo impegno stagionale esce nei quarti di finale al Moselle Open e chiude il 2024 alla 72ª posizione mondiale.

2025, semifinale all'ATP 500 di Dubai e 46º nel ranking di singolare, semifinale al Paris Masters, primo titolo ATP e 107º nel ranking di doppio Eliminato nuovamente al secondo turno agli Australian Open, il primo grande risultato stagionale è la sua prima semifinale raggiunta in un torneo ATP 500 a Dubai, in particolare supera al turno di esordio il nº 9 ATP Andrej Rublëv, primo top 10 sconfitto in carriera, e viene battuto da Felix Auger-Aliassime dopo aver vinto il primo set, risultato con cui porta il miglior ranking alla 59ª posizione. Continua l'ascesa spingendosi fino al secondo turno in entrambi i Masters 1000 dell'Indian Wells Open e del Miami Open. Nonostante resti inattivo il mese successivo e venga poi sconfitto al primo turno al Madrid Open e agli Internazionali d'Italia, il 19 maggio porta il miglior ranking al 50º posto mondiale. Sale al 46º a fine giugno dopo aver raggiunto per la prima volta il terzo turno al Roland Garros. Ha poi inizio un periodo negativo, nella seconda parte della stagione perde spesso al primo turno e a novembre scende al 92º posto. Gli ultimi due impegni stagionali lo vedono ben figurare in doppio, in coppia con Pierre-Hugues Herbert si spinge fino alla semifinale al Paris Masters e vince il suo primo titolo ATP in carriera all'ATP 250 di Metz con la vittoria su Guido Andreozzi / Manuel Guinard con il punteggio di 7-5, 6-3. Porta il miglior ranking in doppio alla 107ª posizione.

2026, semifinale al Roland Garros e 51º nel ranking in doppio, primo titolo ATP in singolare Vince in singolare alcuni incontri e recupera posizioni in classifica nei primi tornei del 2026, ma a marzo esce dalla top 100 dopo l'eliminazione al primo turno a Dubai. Vi fa rientro a fine mese dopo aver raggiunto il quarto turno al Miami Open battendo tra gli altri il top 20 Alejandro Davidovich Fokina. Di rilievo nel periodo successivo la semifinale raggiunta al Challenger 175 di Bordeaux e il terzo turno al Roland Garros. Nella prima parte della stagione gioca solo tre tornei di doppio, di nuovo con Herbert, e fa il suo ingresso nella top 100 con la semifinale raggiunta all'ATP 500 di Doha. Escono in semifinale anche al Challenger di Bordeaux e soprattutto al Roland Garros, nel quale eliminano le teste di serie nº 4 Christian Harrison / Neal Skupski e vengono sconfitti dalle nº 2 Harri Heliövaara / Henry Patten. Questi risultati portano Halys alla 57ª posizione nel ranking di doppio. In singolare esce in semifinale a Bordeaux e al terzo turno al Roland Garros.

Nei tornei successivi disputa in singolare due quarti di finale e il secondo turno a Wimbledon. Il 25 luglio 2026 vince il suo primo titolo ATP in singolare, trionfando in finale all'Austrian Open Kitzbühel contro la testa di serie nº 1 e nº 11 al mondo Aleksandr Bublik con il punteggio di 6-4, 7-6, e risale al 52º posto mondiale. Al Cincinnati Open supera le qualificazioni e perde al secondo turno al tie-break decisivo contro il top 10 de Minaur. Al secondo turno degli US Open cede al quinto set contro il vincitore del torneo Alexander Zverev e si porta in 49ª posizione. Nonostante che dopo il Roland Garros vinca solo due dei sette incontri giocati in doppio, a fine settembre porta il miglior ranking alla 47ª posizione.

Statistiche Singolare Vittorie (1) Legenda Grande Slam (0) ATP Finals (0) ATP Masters 1000 (0) ATP Tour 500 (0) ATP Tour 250 (1) N.DataTorneoSuperficieAvversario in finalePunteggio 1. 25 luglio 2026 Austrian Open Kitzbühel, Kitzbühel Terra rossa Aleksandr Bublik 6–4, 7–6(6)

Finali perse (1) Legenda Grande Slam (0) ATP Finals (0) ATP Masters 1000 (0) ATP Tour 500 (0) ATP Tour 250 (1) N.DataTorneoSuperficieAvversario in finalePunteggio 1. 21 luglio 2024 Swiss Open Gstaad, Gstaad Terra rossa Matteo Berrettini 3–6, 1–6

Doppio Vittorie (1) Legenda doppioGrande Slam (0)ATP Finals (0)ATP Masters 1000 (0)ATP Tour 500 (0)ATP Tour 250 (1) N.DataTorneoSuperficieCompagnoAvversari in finalePunteggio1. 8 novembre 2025 Moselle Open, Metz Cemento (i) Pierre-Hugues Herbert Guido Andreozzi Manuel Guinard 7–5, 6–3

Tornei minori Singolare Vittorie (12) Legenda tornei minori Challenger (7) Futures (5)