I have never gotten motion sick from watching a movie. Ever. My stomach stayed strong through the shaky-cam antics of Cloverfield, and I didn’t flinch watching either of the first two V/H/S films in the theater. (V/H/S Viral upset my digestion, but only because it’s kind of a terrible movie.) I can endure buckets of gore without batting an eye. Hell, even the blunt and graphically artistic cruelty of 12 Years a Slave troubled me on spiritual rather than physical levels. So it’s to Russian rocker and filmmaker Ilya Naishuller’s credit that his debut picture, Hardcore Henry, came close to making me hurl within only a fraction of its hour and a half running time.
Take that as an endorsement if you like. Hardcore Henry is about as confounding a moviegoing experience as you can get, all highs and lows, peaks and valleys, excitement and the anticipation of excitement; it is the rare film that can fairly and accurately be characterized as a roller coaster ride. It is not a movie of thought or substance. It is a movie of visceral sensation. That is arguably true of every action film, but even the greatest of those films don’t filter their action through a first-person perspective. Naishuller tried out this aesthetic while directing music videos for his band, Biting Elbows, which he filmed using a GoPro camera; somewhere between now and then, he got it in his head to direct a full movie the exact same way. Thus: Hardcore Henry.
What Naishuller has done here isn’t new, per se; in their contribution to that aforementioned horror omnibus, V/H/S/2, Eduardo Sánchez and Gregg Hale affixed a GoPro camera to the helmet of a cyclist on a leisurely bike ride through zombie-infested woods with effective results. There, the third-person approach works. It works for Hardcore Henry, too, but only for so long before queasiness starts setting in. Such is the difference between a short and a feature. But this is what makes Hardcore Henry so hard to evaluate: The nausea factor will hit some viewers harder than others, and even if the film leaves your guts in a state of free fall, it’s hard to deny its value as sheer entertainment. It’s like watching someone else play a video game, only it isn’t intolerably boring.
It’s fashionable to compare dumb action flicks and big, noisy blockbusters to video games, and more often than not, those comparisons are made by people who rarely ever play them. In Hardcore Henry, it is the best and most accurate comparison that one can make to articulate what, exactly, you are getting into when by paying the price of admission. We see everything through the point of view of Henry, a man who has been brought back to life by his scientist wife, Estelle (Haley Bennett), as a cybernetic soldier, sans any memory of his (or their) past together. But no sooner does he get back on his feet than Estelle’s facility is invaded by Akan (Danila Kozlovsky), a megalomaniac bent on world domination who has an army of mercenaries at his command. Before long, she’s been kidnapped, and Henry is left to save his princess from the villain’s castle, with only the enigmatic Jimmy (Sharlto Copley) to help him along the way.
Replace every instance of “Henry” with “you,” or “the player,” and you wind up with more or less the same thing. Henry moves from location to location in Moscow, and Jimmy tasks him with objectives and arms him with gadgets and guns as needed. When ammo and arms grow scarce, Henry simply collects what he needs from the corpses of his many (many) fallen enemies. Without speaking to the handful of twists in what passes as Naishuller’s script, that’s pretty much the whole movie, which means that you will know immediately whether Hardcore Henry is for you just by reading its synopsis. Naishuller has nothing to say about anything; he only wants to present scores of bad guys for Henry and his occasional allies to mow down. The film asks no questions. It poses no answers, save to its own idiosyncrasies and mysteries. You will learn zippity doo from watching this thing, but if you’re any kind of action fan, you’ll have a good enough time learning all of that zippity doo. If the nature of the format guarantees occasional incoherence, particularly toward the beginning and just at the end, the film’s willingness to get nasty is never lost on us.
It’s a novelty act, and for genre aficionados, it is close to essential viewing if only for sheer chutzpah. But ask yourself this: Wouldn’t you rather just re-watch a “normal” action movie shot through traditional lenses? Wouldn’t you rather appreciate the choreography, violence, and stunt work from the vantage afforded us by good old fashioned cinematography? The best action movies blow minds with technique instead of artifice; Gareth Evans’ The Raid and The Raid 2, Chad Stahelski and David Leitch’s John Wick, Johnnie To’s Exiled, George Miller’s Mad Max: Fury Road, Paul Greengrass’s The Bourne Ultimatum, and Mark Neveldine and Brian Taylor’s Crank each encourage the dropping of our jaws through craft. (Of these, The Bourne Ultimatum and Crank feel like Naishuller’s clearest reference points.) Hardcore Henry just wants to dazzle us with conceit, and your mileage will vary based on your capacity for tolerating Naishuller’s gimmickry. This isn’t for those who are weak in tummy or faint of heart.
{"id":"2","mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"featured_image","featured_image_url":"https:\/\/agcrump.work\/wp-content\/uploads\/2025\/10\/image-asset-179x200.webp","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":false,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"A Constant Visual Feast","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Support My Work:","form_subtitle":"","currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thanks for supporting my work!","payment_confirmation_title":"A Constant Visual Feast","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much do you want to tip?","initial":{"instruction_type":"normal","instruction_message":"How much do you want to tip?"},"empty":{"instruction_type":"error","instruction_message":"How much do you want to tip?"},"invalid_curency":{"instruction_type":"error","instruction_message":"How much do you want to tip?"}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"Want to make a recurring tip?"},"success":{"instruction_type":"success","instruction_message":"Want to make a recurring tip?"},"empty":{"instruction_type":"error","instruction_message":"Want to make a recurring tip?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Pingback: Review: Kill Switch, 2017, dir. Tim Smit | A Constant Visual Feast