Khoi Vinh’s review published on Letterboxd:
The action starts almost as soon as the curtain rises in this third official John McClane installment and Hollywood’s 849th attempt at recapturing the magic of the original. It’s almost as if director John McTiernan, returning to the franchise after getting bruised at the box office with “The Last Action Hero,” can’t wait to get back in the ring and show all of the pretenders exactly how a “Die Hard” film is made. For a while, everything he puts into play works astonishingly well, including a grizzled, jaded version of Willis’s protagonist; a smart pairing with a skeptical but energetic Samuel Jackson; a set of super villain-level plot contrivances that basically amount to “Die Hard in a City”; a wise strategy to basically pretend the second movie never happened; and, perhaps most satisfyingly, a decision to largely forgo corny one-liners and witless callbacks. The action and plotting are sturdy for at least ninety minutes, but before too long McTiernan seems exhausted by the Herculean effort required to hold it all together. Ultimately the clockwork like precision that he summoned for the first “Die Hard” abandons him and we land in much less inspired territory. The last act of the movie is hardly disastrous, but it just can’t deliver—neither on the legacy of the first movie, nor on the promise of having the originator of this genre back in the director’s chair, sadly.
' ].join(''); if ( adsScript && adsScript === 'bandsintown' && adsPlatforms && ((window.isIOS && adsPlatforms.indexOf("iOS") >= 0) || (window.isAndroid && adsPlatforms.indexOf("Android") >= 0)) && adsLocations && adsMode && ( (adsMode === 'include' && adsLocations.indexOf(window.adsLocation) >= 0) || (adsMode === 'exclude' && adsLocations.indexOf(window.adsLocation) == -1) ) ) { var opts = { artist: "", song: "", adunit_id: 100005950, div_id: "cf_async_c8e0aa5f-4972-4b58-a85e-9cb2aa669f73" }; adUnit.id = opts.div_id; if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } var c=function(){cf.showAsyncAd(opts)};if(typeof window.cf !== 'undefined')c();else{cf_async=!0;var r=document.createElement("script"),s=document.getElementsByTagName("script")[0];r.async=!0;r.src="//srv.tunefindforfans.com/fruits/apricots.js";r.readyState?r.onreadystatechange=function(){if("loaded"==r.readyState||"complete"==r.readyState)r.onreadystatechange=null,c()}:r.onload=c;s.parentNode.insertBefore(r,s)}; } else { adUnit.id = 'pw-c8e0aa5f-4972-4b58-a85e-9cb2aa669f73'; adUnit.className = 'pw-div -tile300x250 -alignleft -bottommargin'; adUnit.setAttribute('data-pw-' + (renderMobile ? 'mobi' : 'desk'), 'med_rect_btf'); if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } window.addEventListener('DOMContentLoaded', (event) => { adUnit.insertAdjacentHTML('afterend', kicker); window.ramp.que.push(function () { window.ramp.addTag('pw-c8e0aa5f-4972-4b58-a85e-9cb2aa669f73'); }); }, { once: true }); } } tag.remove(); })(document.getElementById('script-c8e0aa5f-4972-4b58-a85e-9cb2aa669f73'));
' ].join(''); if ( adsScript && adsScript === 'bandsintown' && adsPlatforms && ((window.isIOS && adsPlatforms.indexOf("iOS") >= 0) || (window.isAndroid && adsPlatforms.indexOf("Android") >= 0)) && adsLocations && adsMode && ( (adsMode === 'include' && adsLocations.indexOf(window.adsLocation) >= 0) || (adsMode === 'exclude' && adsLocations.indexOf(window.adsLocation) == -1) ) ) { var opts = { artist: "", song: "", adunit_id: 100005950, div_id: "cf_async_c6d53f46-16be-4bcb-b7b8-1f3cd9ed0d40" }; adUnit.id = opts.div_id; if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } var c=function(){cf.showAsyncAd(opts)};if(typeof window.cf !== 'undefined')c();else{cf_async=!0;var r=document.createElement("script"),s=document.getElementsByTagName("script")[0];r.async=!0;r.src="//srv.tunefindforfans.com/fruits/apricots.js";r.readyState?r.onreadystatechange=function(){if("loaded"==r.readyState||"complete"==r.readyState)r.onreadystatechange=null,c()}:r.onload=c;s.parentNode.insertBefore(r,s)}; } else { adUnit.id = 'pw-c6d53f46-16be-4bcb-b7b8-1f3cd9ed0d40'; adUnit.className = 'pw-div'; adUnit.setAttribute('data-pw-' + (renderMobile ? 'mobi' : 'desk'), 'sky_btf'); if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } window.addEventListener('DOMContentLoaded', (event) => { adUnit.insertAdjacentHTML('afterend', kicker); window.ramp.que.push(function () { window.ramp.addTag('pw-c6d53f46-16be-4bcb-b7b8-1f3cd9ed0d40'); }); }, { once: true }); } } tag.remove(); })(document.getElementById('script-c6d53f46-16be-4bcb-b7b8-1f3cd9ed0d40'));