Fair warning: considerable spoilers follow – read after watching.

It’s kind of funny: I feel a little bit like I can’t talk about Star Wars: The Last Jedi – arguably the biggest film of the year, which came out late last week – without acknowledging the online backlash which has emerged against it in the last few days. And the reason I feel I need to acknowledge it is that, by contrast to that, any review I give is going to seem alarmingly positive and contrarian.

I really liked Star Wars: The Last Jedi. And more than that, I think the backlash against it is a sad by-product of the internet culture surrounding uber-popular franchises. Fans have spent the better part of two years speculating about the events of this film and guessing the outcomes of several mysteries – Rey’s lineage, Snoke’s background – and are disappointed that the film didn’t match up with the collective conclusion reached by these fan communities.

Or to put it another way: Rian Johnson’s film was too imaginative.

And the fans annoyed or turned off by minor details like Luke Skywalker drinking green milk, or Laura Dern’s Holdo having pink hair, or the presence of porgs or nuns or ice foxes, or the addition of a sense of humour that has not been a big part of these films … I mean, firstly, those are exceptionally minor details that have no real bearing on what was happening in the film, and secondly, that is how blockbuster franchise films are made – they play to nostalgia, they set up merchandising, and they pander to a broad audience. This is how blockbuster films are made in 2017; if you can’t look past that stuff, you’re never going to enjoy a blockbuster film again.

I’m not saying every criticism is wrong. Star Wars: The Last Jedi has a few structural flaws that force the story to drag a bit longer than it needed to – some scenes, like those on Canto Bight or parts of the bombing run that opens the film or the closing of Finn and Rose’s capture on the star destroyer, could have been edited further. Poe’s mutiny against Holdo didn’t need to happen for the story; I assume it was added purely for his character development. And at least one of the jokes probably didn’t need to drag on as long as it did (Poe messing with Hux, I’m looking at you).

But despite all of that, there was no part of the film I didn’t like. Every scene had its place in the film, and each contributed to a sense of tension that stayed with the film throughout, until it was released in the final moments as it set up the next film in the franchise.

When you boil everything down, you’re left with two story strands: the first is Rey’s mission to Ahch-To to recruit Luke Skywalker to the rebel cause – and her rejection by a disillusioned Luke, who now believes the Jedi should not exist – while the second follows the Resistance as they go on the run from the First Order, with their numbers dwindling as their ships get picked off one by one. Both plots are absolutely riveting.

Rey’s tutelage (such as it is) at the hands of Luke form an emotional spine for the film, and lead to one of the greatest set pieces in Star Wars film history as Rey confronts Kylo Ren and Supreme Leader Snoke. It is also gives stars Daisy Ridley and Adam Driver a bit more to play with in terms of character progression, giving them more opportunity to play off each other and setting up their dynamic as we head toward the conclusion of this new trilogy; that Ren both kills Snoke this early in the franchise, and delivers the gut-wrenching blow that Rey’s parents are nobodies, makes the Vader wannabe a true iconoclast, tearing down what came before and taking the franchise into new ground. Hell, Ren even says it himself: “let the past die, kill it if you have to”.

Plus, I can’t say enough about Mark Hamill, whose performance here is mesmerising. The Last Jedi’s Luke is a grizzled and disillusioned version of the wide-eyed optimist we last saw in Return Of The Jedi; this is a character who has seen some shit, and whose worldview is informed by so much life experience that happened off screen. Hamill manages to convey that perfectly, transforming over the course of the film as that optimism slowly returns. I would go as far as to say his performance is Oscar-worthy.

The secondary plot isn’t as riveting, but it has its moments: Oscar Isaac does some great work as Poe Dameron, who learns what it takes to be a true leader in the Resistance, even as he constantly rubs his superiors – Carrie Fisher’s Leia and Laura Dern’s Holdo – completely the wrong way. If anything, I felt like John Boyega’s Finn was the odd man out here. His side-mission to fetch a code-breaker and shut down a hyperspace tracker on a First Order ship, alongside newcomer Rose (played by Kelly Marie Tran), took far too long and detracted from the legitimate tension of a slow-speed pursuit that has left the Resistance in tatters.

However, the payoff is worth it. An extraordinary scene in which Holdo rams the lead rebel ship into a star destroyer at lightspeed drew audible gasps in the theatre, and the concluding scenes on the tiny planet of Crait – visually splendid and narratively satisfying, as it brings the film back together – formed a highly emotional climax to the film.

So don’t believe the hype – or the anti-hype, as it has turned out to be. Star Wars: The Last Jedi is a great addition to the Star Wars universe, taking the story in a few unexpected directions and giving us a handful of visuals and scenes that are among the best in the franchise history. And I’m very excited to see where this franchise goes next.

Star Wars: The Last Jedi is written and directed by Rian Johnson, and stars Daisy Ridley, John Boyega, Adam Driver, Oscar Isaac, Carrie Fisher, Mark Hamill, Laura Dern, Domhnall Gleeson, Kelly Marie Tran, Gwendoline Christie, Benicio del Toro, Anthony Daniels, Andy Serkis and Lupita Nyong’o. It is in cinemas now.