Heading into Bad Sisters, this show had a lot to prove to me, personally. There are a number of shows about middle-class white women drinking wine as they are drawn into murder plots, and I needed this Apple TV+ series to set itself apart from the get-go, or it would have been a “Slán!” from me. Thankfully, the premiere quickly ensnares with its strong sense of setting (a small town on the Irish coast), its nonlinear storytelling (two story lines, set roughly six months apart), and how much I started rooting for these women to murder their brother-in-law despite being, as a general rule, against murder. Bad Sisters’ depiction of both the quiet viciousness of domestic abuse and the dearth of options we have in patriarchal society to protect women from it is infuriatingly brilliant.
That being said, the first episodehas a lot to get done (five is a lot of sisters, David). It introduces us to the sisters Garvey: eldest Eva (Sharon Horgan), sweet Grace (Anne-Marie Duff), nurse mom Ursula (Eva Birthistle), wonderfully angry (and mysteriously eye-patched) Bibi (Sarah Greene), and youngest Becka. The introductions to these various characters, and the other important people in their respective orbits, is confidently paced (I expect nothing less from Catastrophe creator Horgan, who both stars in and writes this adaptation of the celebrated Flemish series Clan). We only have so much time to meet these women, as the episode also must introduce surrounding characters and the potential murder plot at play; future episodes promise a more in-depth look into the nitty-gritty of their respective lives. In the meantime, it’s easy to fall in love with each of the sisters — in no small part because of the ferocious affection and commitment they all have to one another.
Bad Sisters is told in two timelines. The first begins on the day of JP’s funeral. The second takes us back six months, to give greater context to JP’s death and the complex dynamics at play in this family. As the episode progresses, it becomes clear just how fitting the nickname JP’s sisters-in-law have for him (“The Prick,” also the title of this episode). In fact, JP may be the worst man in the world, which is a pretty competitive category. In this first episode, we witness him make cruel comments to every single one of the Garvey sisters — ostensibly his family. But JP’s most villainous acts come in the way he treats the person closest to him: his wife, Grace (an always excellent Duff, who will forever have my heart for her turn as Fiona in the original Shameless). JP uses both body and brain to intimidate, manipulate, and coerce Grace in subtle and overt ways. To JP, Grace’s strong, healthy relationship with her sisters is the biggest threat to his control over her, and he uses every opportunity he can to undermine it.
Just one devastating example: When the sisters decide to bring Grace’s teen daughter, Blánaid (Saise Quinn), on their annual Christmas Day swim in the wintry waters off the coast of their town — a tradition they started with their parents that they continued after their presumably untimely deaths — JP has Grace drink a glass of Champagne under the guise of celebration. Then, when an excited Grace and Blánaid prepare to leave, he not only insists that she is too drunk to drive and swim but implies she is at fault for the entire situation. It’s classic gaslighting behavior, and it’s done in full view of their daughter.
Back in the post-JP timeline, we meet the brothers Claflin, who make up the buddy insurance-men comedy side plot of this story. Thomas (Brian Gleeson) and Matthew (Daryl McCormack) are half brothers, working together in their late father’s business. They provide effective counter-stakes to the solving of JP’s maybe-murder, as Thomas will lose the family business if they have to pay out on his life-insurance policy. This might not be so bad if the situation isn’t further exacerbated by the fact that Thomas’s funny, likable, chips-loving wife is very pregnant, confined to bed rest.
Thomas is an idiot, but — in a counterpoint to JP — he also seems to genuinely love and respect his wife (though, admittedly, not enough to be honest with her, his partner, about the state of the business). He is also a (mostly) endearingly desperate man, roping Matthew into crashing JP’s funeral with him in order to play detective. Later, he has a panic attack and confesses everything to Matthew. It says a lot about Matthew that, despite starting the day by falling off his motorcycle at speed in order to avoid hitting Becka and then getting dragged to a funeral to harass people he doesn’t know, he is able and willing to reassure Thomas that he is not alone. While Thomas may treat Matthew like an undependable vagabond bassist, he is obviously the adult in this situation.
Past their function as plot drivers putting pressure on the Garvey sisters, Thomas and Matthew are also a reminder that this is a show about siblings and the complicated family dynamics that can follow us into adulthood — or sometimes evolve there. While the Garvey sisters may have had one another from the time they were little — a solid foundation on which to depend, even and perhaps especially through tragedy — it is unclear at what point Thomas and Matthew got to know each other. When Matthew tells Thomas their father wouldn’t have crashed a funeral to investigate an insurance claim, Thomas bites back unkindly: “How do you know what he would’ve done?” It’s the kind of efficient characterization that this show excels at. In the space of 30 seconds consisting of two lines of dialogue, a hurt look from Matthew, and a look of tired contrition from Thomas, we understand so much about these characters and their dynamic, even if we don’t know the details of what has transpired between them in the past.
Television probably has enough murder stories. But if we are going to keep telling them, I want them to be like this one: centering complex relationships between complex women; deeply interested in establishing a sense of place (extra points for Irish accents!); and recognizing how humor and love can still exist in the midst of grief and pain. If you’re reading this recap without having seen this episode (this kind of TV fan still exists, right?), then know that any time and attention you choose to grant Bad Sisters will not be misplaced.
Sisterly Advice
• Eve Hewson, the actress who plays Becka, is Bono’s daughter. You’re welcome.
• Sarah Greene, the actress who plays Bibi, also played Connell’s mom in Normal People. You’re welcome.
• Grace lies to Thomas about where she was on the night of JP’s death. It could have just been a lie inadvertently made in the midst of the mental stress of mourning, but I am also low-key wondering if Grace is the one who killed JP. She endured so much from him. Note: The show also begins with Grace saying aloud an apology to the universe as she makes a sandwich.
• Bibi is introduced in the tub, alongside her caring wife, the morning of JP’s funeral. “She needs you.” “She doesn’t. Not anymore.” This is how Bibi views her relationship to Grace and, again, gives us a wealth of character information all in one exchange of lines. This simultaneously tells us that the sisterly relationship between Bibi and Grace has experienced great change, while also leaving us with questions that make us want to keep watching: When did this change happen? What was the catalyst? Does Grace view their relationship in the same way?
• Meanwhile, Ursula is introduced paying attention to her phone, her back turned to a cacophony of kids and husband in the house behind her. She opens the door to them, and the camera shoots the three kids and husband all in one doorway — visual symbolism for how Ursula feels about her crowded life.
• “Will you flush for me, please?” JP’s insidious comments to his family members are surely his most villainous actions, but this gross request he makes to Ursula, while coming out of the bathroom, is probably the act I most viscerally reacted to. A monster!
• “I know you don’t think he’s a good man. But he’s a good husband and a good father, and he makes me happy. Can you not just let me be happy?” In many ways, Grace is the most mysterious of the Garvey sisters, as she has seemingly hidden herself so far away in response to JP’s abuse. Still, for a moment, she is able to stand up to her sisters (though, admittedly, to rise to JP’s defense). It says a lot about the strength of the trust she has in her sisters that she still feels able to show her anger to them, even for a moment.
• “That’s my scarf.” “I want that scarf back, Becka!” “She always keeps my shit.” These moments of mild sibling irritation are much appreciated and help ground what is, in some ways, an outlandish plot.
Update: An earlier version of this recap misidentified Daryl McCormack. It has been updated.
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()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),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(1),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 o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.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()&&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;
}, {"1":1,"4":4,"12":12,"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();
// ]]