Daisy Ridley as Rey in Star Wars: The Rise of SkywalkerPhoto: Lucasfilm
Star Wars: The Rise of Skywalker represents a dual ending. It’s the final chapter of what’s been deemed the Skywalker Saga, a four-decade-plus space opera that birthed a massive multi-tendriled property and shaped the blockbuster as we now know it. But it’s also, more immediately, the conclusion of the Star Wars sequel trilogy, three movies that have become a fascinating documentation of the push and pull between franchises and filmmakers, and artists and fans, in the 2010s. Lucasfilm has had a string of high-profile partings-of-way with filmmakers who apparently didn’t square with its vision for the cinematic world. One of them was Jurassic World’s Colin Trevorrow, who was slated to direct The Rise of Skywalker before getting fired in 2017 (he retains a “story by” writing credit).
J.J. Abrams, who’d kicked the series off with The Force Awakens, was brought back to take his place, and from all appearances, to undo many of the distinctive choices, large and small, made in Rian Johnson’s middle installment, The Last Jedi. To watch the trilogy boomerang between Abrams’s reverent nostalgia and Johnson’s desire to set the past on fire in The Last Jedi — literally, with the spirit of Yoda summoning lightning to burn the library of sacred Jedi texts — is to see a studio desperate to know what fans want. And the result is a series that feels like an antagonistic game of exquisite corpse, as two filmmakers try to push the story in opposite directions, with Abrams finally bringing it all back around to bite its own tail. Here’s a look at some of the ways in which The Rise of Skywalker reverses what The Last Jedi put into action.
Rey’s Parentage
The most radical proposition The Last Jedi offered is that orphan scavenger Rey’s (Daisy Ridley) importance stems not from her lineage, but from what she was capable of achieving in her future. What was teased as a mystery in The Force Awakens — that Rey has been abandoned by people she only faintly remembers, people she kept hoping would come back to retrieve her and thus must be significant — was boldly brushed aside in Johnson’s follow-up. “They were filthy junk traders who sold you off for drinking money,” moody anti-hero Kylo Ren (Adam Driver) told Rey of the family she’s been pining for. “They’re dead in a pauper’s grave in the Jakku desert. You have no place in this story. You come from nothing. You’re nothing — but not to me.” To underscore its freeing of the Force from the dynastic lines, the film ended by showing one of the child stablehands on Canto Bight using unseen powers to summon a broom to his hand.
The Rise of Skywalker doesn’t throw out this idea entirely — Rey’s parents were nobodies, it allows, but only because they had to be — because they were in hiding. The movie otherwise pulls a 180 by revealing Rey to be the granddaughter of Emperor Palpatine (Ian McDiarmid), who reemerges in undead form to be the final franchise baddie. Suddenly Rey’s parentage matters a lot, so much that Palpatine claims it was his plan all along to summon her to his evil lair of a planet so that she could kill him, fuse with his essence, and take his place at the head of the Sith. (He does, somewhat confusingly, go on to taunt his grandchild as “nothing” and “a scavenger girl” when she doesn’t comply.) The Rise of Skywalker ends on a note of chosen family, with Rey taking on the last name of “Skywalker” and being reassured by the Force ghost of Luke (Mark Hamill) that “some things are stronger than blood.” But given everything that’s come before, it reads as more than a little garbled, as though being the child of someone evil but important is better than being the child of some normie.
Vice Admiral Holdo’s Kamikaze Move
One of the highlights of The Last Jedi involved Vice Admiral Holdo, the Resistance leader played by Laura Dern, sacrificing herself by piloting an otherwise evacuated cruiser through the First Order’s flagship dreadnought at light speed and splitting it open. It was a dramatic development, but it also opened the door to possibilities of suicide runs that the franchise presumably didn’t want to deal with. That might be why, in The Rise of Skywalker, when a Resistance fighter played by Dominic Monaghan suggests they try “Holdo maneuvers,” he’s immediately shot down by Poe (Oscar Isaac), who describes them as “one in a million” decisions. And they’re never spoken of again.
Kelly Marie Tran as Rose Tico.
Photo: Lucasfilm
The Rose Tico and Finn Romance
The strangest, sourest reversal in The Rise of Skywalker is the one involving the budding romance between Rose Tico (Kelly Marie Tran) and Finn (John Boyega). The two met-cute in The Last Jedi, when Rose zapped Finn to stop him from deserting to find Rey, and soon after they went off on a mission together to try to deactivate the First Order’s means of tracking their fleet. Later, at the showdown on Crait, Rose collided with Finn in order to stop him from making a run at the First Order’s siege cannon at the expense of his own life, and they shared a kiss while an explosion blossomed behind them. It was sweet, an earned love connection in a trilogy that hasn’t spared a lot of time for that kind of story development.
The Rise of Skywalker strangles this relationship with curious dedication. When the rest of the characters haul off on an adventure in the new film, Rose insists she has to stay behind, and remains offscreen for most of the film. Jannah (Naomi Ackie), a perfectly good new character, is essentially introduced to fill the vacated spot at Finn’s side in the final act, while he tells Rose to leave the two of them behind. Adding salt to the wound, at the big celebration at the film’s conclusion, Finn gives Rose a desultory pat on the shoulder before going off to hug Poe and Rey. It’s baffling, this sidelining of the character, and feels practically perverse in the light of the online abuse that Tran has gotten just for appearing in this fictional universe.
The Supervillainy of Snoke
The Last Jedi admittedly left The Rise of Skywalker in a tricky spot by killing off Supreme Leader Snoke (performed by Andy Serkis), the cadaverous First Order leader who seduced Kylo Ren to the dark side, leaving the final installment without its primary villain. Entirely likely that Johnson had imagined Ren would become the trilogy’s ultimate antagonist, something The Rise of Skywalker swerves away from in favor of abruptly resurrecting a trusty old foe. More accurately, the movie insists that Palpatine was actually around the whole time, pulling strings and playing 4-D chess, and that Snoke, clones of whom are glimpsed briefly floating in a vat, was merely his creation and puppet. “I have been every voice you’ve ever heard in your head,” he tells Ren. As for Snoke’s claims in The Last Jedi that he’d been the one who engineered the connection between Ren and Rey (“It was I who bridged your minds!”), that’s been done away with — the two are instead revealed to have an innate connection because they are a “a dyad in the Force.”
Kylo Ren’s Helmet
In The Force Awakens, Kylo Ren is introduced wearing a dark helmet that covers his face and gives his voice a mechanical, less than human resonance. It’s a point of pride for Ren, a symbol of his aspirations to follow in the footsteps of his grandfather Anakin — which is why, when he’s being chastised for his failures by Snoke in The Last Jedi, he’s told to “take that ridiculous thing off.” “You’re no Vader. You’re just a child in a mask,” Snoke sneers, an assessment Ren finds so infuriating that he smashes the helmet to bits in the elevator on his way out. In The Rise of Skywalker, one of Palpatine’s minions is shown welding the pieces of Ren’s signature headgear back together so that the character can wear it in front of the uneasy remnants of the First Order. If it’s meant to be a metaphor — something that was broken once again made whole — it’s a better one than intended, because that restored version sure looks like a mess.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(3),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),(auth.isSubscriber()||auth.isMobileAppRequest())&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"3":3,"4":4,"17":17,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]