ADVERTISEMENT

Clunky, but effective: A review of 'Fast X'

Published May 17, 2023 01:03 am

A scene from 'Fast X'


First things first. While you may think that given this is Fast X, this may be the end of the road for a film franchise that can now count 22 years of existence; there isn't anything to worry about. No curtain calls for now, as Vin Diesel has officially announced that the last chapter of the saga will extend over three films. So for those of you (and it seems there are many of you out there) who can't seem to get enough of the Toretto ‘family’, there’s still more to come, after this tenth installment. Distributed by Universal Pictures, Fast X is directed by Frenchman Louis Leterrier - best known for the first two Transporter films, The Incredible Hulk, and Now You See Me. The screenplay is by Dan Mazeau and Justin Lin. And while credits will say it’s based on a story from Mazeau, Lin and Zach Dean, you could really say it’s based on all the previous films, and based on what new location will allow them to go crazy with souped-up cars and motorcycles, explosions, and wholesale structural destruction, while being thankful that we opted to choose to film there. In this film’s case, the thankful cities include Rio, Rome, Naples, London, home base Los Angeles, and that’s just naming those in the first hour of the film. At two hours, twenty minutes, if this was a goodbye to the franchise, it would have been a long but sweet goodbye. As it isn’t their end of the road, you have to wonder why, given there isn’t that much of a story, and the overriding theme of family seems to have weakened, we have to be saddled with such a long running time. As for the cast of Fast X, I was waiting for the cameo of the ‘kitchen sink’. And I say this because literally everyone who had been involved with the franchise over the 22 years seemed to have been brought back (or brought back to life via old footage and photos), for this outing. So of course there’s the core team of Dominic (Vin Diesel), Letty (Michelle Rodriguez), Han (Sung Kang), Roman (Tyrese Gibson), Tej (Ludacris) and Ramsey (Nathalie Emmanuel). But you’ll also find John Cena, Charlize Theron, Rita Moreno, Brie Larson, Jason Statham, Jordana Brewster, Scott Eastwood, Helen Mirren, and Michael Rooker, all popping up to say more than a token hello. And I have to say that quite a number of them look to have been Botox-ed to death, with nothing above the mouth-line moving naturally. Bravo to Helen Mirren, who obviously hates this form of Hollywood facial care, and seems to have insisted that she be filmed with age lines, wrinkles, and crow’s feet in all their splendor. If you’re looking for a real, and new, reason to watch this film - the number one answer would be Jason Momoa as Dante, son of a Brazilian drug lord, who was an unfortunate casualty of one of the early adventures of the Toretto team. I’m not sure what the Director gave Momoa to eat, but in this film, he’s game to make a fool of himself, act against type in a big way, paint his toenails, and act super silly - all as part of the role of an unhinged, obsessed, avenging son. By and large, it works. I just have to wonder if the gay members of the audience will at times be offended by some of the absurdities of the attack on the role. Come for the F&F gang, but stay for Jason; and go home knowing it may be a clunky, unoriginal film, but it’s shot with love for the franchise, and it’s a more than effective popcorn film.
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.