Kaikai started his career at Crystal Palace when he was fifteen. In May 2013, his goal against Liverpool the previous August won the League Football Education Goal of the Season award.
2013–14: Crawley (loan)
On 7 February 2014, Kaikai joined League One side Crawley Town on an initial one-month loan along with Hiram Boateng. He made his senior debut on 25 February when he came on as a substitute for Andy Drury in the 33rd minute of a 1–1 draw at Swindon Town. On 7 March, he extended his loan with Crawley until 5 April. After making five appearances for the club, two being starts, Kaikai returned to his parent club upon expiry of his loan spell.
2014–15: Debut and Cambridge (loan)
On 24 September 2014, Kaikai made his Crystal Palace debut in the third round of the League Cup, replacing Jonathan Williams in the 80th minute of the match against Newcastle United at Selhurst Park. He equalised in added time to send the game into extra time, which the Eagles lost 2–3. On 27 November 2014, Kaikai joined League Two club Cambridge United, on loan until 3 January 2015. Two days later, Kaikai made his debut for the club, assisting Liam Hughes in a 2–1 win over AFC Wimbledon at the Kingsmeadow Stadium. Kaikai scored his first goal of his loan on 16 December in the FA Cup second round replay, the only goal of a win at Mansfield Town. He signed his first professional contract with Palace on 29 December 2014. On 16 January 2015, Kaikai's loan at Cambridge was extended until the end of the season. The next day, he scored his first league goal, in a 4–0 win over Newport County at the Abbey Stadium. Kaikai scored a brace on 18 April, in a 3–1 home win over Mansfield. He returned to Palace in the first week of May. He won Palace's Vice-President's Young Player or the Year Award, and the Development Player of the Year Award on 13 May. Ahead of the Premier League match against Liverpool three days later, Kaikai was among several youngsters to make a trip, but was not included either in the starting line-up or substitution bench.
2015–16: League debut and Shrewsbury (loan)
The following season, on 17 September 2015, Kaikai joined League One side Shrewsbury Town on a four-month loan deal. He made his debut as a 67th-minute substitute for Mat Sadler in a 1–0 home defeat to Crewe Alexandra two days later, and got his first goals for the club in a home victory against Colchester United on 10 October, scoring twice to put his team 3–2 and then eventually 4–2 ahead after they had trailed by two goals at half time. After scoring in subsequent matches against Scunthorpe United and Bury, giving him four goals in five appearances, he won the PFA Fans Player of the Month award for October 2015 for League One. Kaikai was recalled to cover for injuries at his parent club on 23 December, rejoining Shrewsbury for a further loan deal until the end of the season in March 2016. He scored four times in the first four games of his second loan, including two first-half strikes in a 2–1 draw at Bury on 19 March which earned him a place in The Football League's Team of the Week. He finished the season as Shrewsbury's top scorer, with 12 goals, before being recalled again by his parent club on 3 May. Kaikai made his Premier League debut on 15 May in the last game of the season, replacing Jordon Mutch at half time in a 4–1 loss at Southampton. He took the corner kick from which Jason Puncheon scored the Eagles goal. He was handed the number 25 shirt to wear for the 2016–17 season, switching from his previous squad number 43.
2016–17: Brentford (loan)
On deadline day, 31 August 2016, Kaikai joined Brentford on a season-long loan and was given the number 25 shirt. He made his debut against Palace's fierce rivalsBrighton & Hove Albion replacing Lewis Macleod in the 80th minute of a 2–0 away victory on 10 September. Four days later he provided an 88th-minute assist for John Egan as Brentford drew 1–1 with Aston Villa. Kaikai scored his first goal for the Bees in a 3–1 loss at Wolverhampton Wanderers on 24 September. He scored both of Brentford's goals a 2–2 draw with Cardiff City on Boxing Day, after coming on as a second-half substitute, before being recalled by Crystal Palace on 2 January 2017.
2017–18: Charlton (loan)
On 26 January 2018, following four appearances for Palace in the first half of the season, Kaikai moved across South London to join Charlton Athletic on loan until the end of the season. He made his league debut for them on 3 February in a 3–2 loss against Oxford United as a 69th-minute substitute for Stephy Mavididi.
NAC Breda
On 21 January 2019, Kaikai joined Dutch club NAC Breda on a permanent transfer. He made his Eredivisie debut four days later, as a 65th-minute substitute for Giovanni Korte in a 1–1 home draw with ADO Den Haag. He made six appearances in the Netherlands, all but one from the bench.
Blackpool
In July 2019, Kaikai terminated his contract with Breda and signed for League One side Blackpool on an initial two-year contract with an option of a further year. He was given a starting debut in their 2–0 victory over Bristol Rovers at Bloomfield Road on 3 August, and his first goal in a 2–2 draw away at Gillingham 17 days later. It was his first goal since 26 December 2016, when he scored both of Brentford's goals in a home draw with Cardiff City in the Championship.