After a man’s family dies in what appears to be a murder, he gets a phone call from one of the dead, his niece. He’s not sure if she’s a ghost or if he’s going mad, but as it turns out, he’s not.
Jack Ratcliff’s brother Garret and his wife Susan and daughter Ashley are all killed in what appears to be a murder-suicide. However, Jack gets a call from Ashley from two weeks in the past just before her death. Jack does what he can to prevent her death by finding out who really killed her and her family, but he hides the truth from her.
From Ashley’s own investigation into her father’s dealings, she gets the name “Georgie”, whom Jack’s boss Howard says is a mysterious crime figure that has evaded capture for a long time. When Ashley starts questioning things and Jack can’t answer her, she stops talking to him, and her death happens a day earlier than before.
In the new timeline, Ashley escapes one of Georgie’s thugs after she discovers their meeting place. She and Jack soon learn that Jack’s partner Bobby was the true killer involved with Georgie, which is really an entire organization of dirty cops. Bobby kills Howard in the present timeline while his past self goes to kill Ashley and her family. He kills her parents, but she escapes and runs to Jack’s house. Just before Bobby kills Jack in the present, Jack kills him in the past, which erases the bad timeline and prevents Ashley’s death. Now that she is orphaned, Jack is most likely going to look after Ashley.
The movie starts with Jack Radcliff, a homicide detective, picking up his niece Ashley from a theater after her parents had forgotten. It is shown that she has a strong dislike for her father Garret due to his bipolar disorder and past years of drug abuse. Jack then convinces his brother to straighten up, however, the next day he receives a phone call from Ashley that comments on how Garret “got an ear-full” from Jack, however, a few hours later she calls again begging for help. Jack races to their home to find his entire family dead, but he finds his brother in his bedroom with a box full of cocaine beside him, having apparently killed his wife, Ashley, and himself in a rage. Ashley is shown dead in the bathroom, hiding in the shower having apparently been shot by her father in his suicidal rage. Jack blames himself, thinking that his chastising of Garret sparked this murder-suicide.
Two weeks later, he receives a phone call, but from Ashley, who is still alive. It is soon revealed that she is calling him from the past. Jack realizes that changing events in her timeline, changes his own, which re-writes the past.
Jack decides to covertly help her re-arrange events in her life in the hope of preventing the murder-suicide. Without frightening her, by not letting Ashley know about the murder, but it quickly becomes apparent that Garret was not responsible for the attack and in fact, he was a victim of the murder along with his family. Jack and his partner, another homicide detective named Bobby, begin to uncover evidence of an underground network of drug dealing cops working for an unknown figure called “Georgie”. Garret’s old connections to the drug underworld finally catches up with him, leading Georgie to collect some old debts and kill Garret and his family.
It at first seems that Roger Lee, a belligerent Internal Affairs agent, is working for “Georgie” but his involvement is unclear, however, someone must be involved beyond just one person because twice operatives for “Georgie” tried to kill Jack. In one instance, it appears they almost succeeded, but the effects of time travel saved him at the last moment as Ashley unwittingly altered the past and prevented him from ending up dead in a gunfight with “Georgie’s” foot soldiers.
As they decipher more and more of what is truly going on, and Ashley realizes that she is somehow communicating with Jack from an alternate timeline, it seems that Howard, Jack and Bobby’s boss and chief detective, is behind the entire operation. But things take a turn for the worse when Howard is killed and Bobby is revealed to be the real man behind the “Georgie” operation since “Georgie” isn’t a single person but a group which Bobby is the hired gun of.
Bobby, in the past, has become alerted to Ashley’s peering into his affairs and comes to kill her and her family as before. A fight erupts in both timelines between Jack and Bobby and between a past version of Bobby and Ashley, with the past version of Bobby killing Ashley’s parents in front of her, but she eventually manages to escape to a past version of Jack. He shoots Bobby in the past just in time and suddenly the two timelines re-align: the future Bobby vanishes in a flash, seconds before he was about to kill Jack two weeks in the future, and that entire timeline is erased. Ashley is in tears and Jack comforts her as they wonder what to do now, having finally re-aligned and merged the timelines. Now they’re the only ones with the memory of the previous world.
The film starts with Ashley Ratcliff (Storm Reid) calling her detective uncle Jack (David Oyelowo) to pick her up from the movies since her father forgot and her mother is too busy. Jack gets her and takes her to a diner for a meal. They discuss Ashley’s father/Jack’s brother Garret (Brian Tyree Henry), an aspiring musician/drug dealer whom both of them see as a screw-up. Jack promises to set Garret straight.
The next day at work, Jack gets a phone call from Ashley, who says that Garret appears to be trying to do better after Jack apparently reamed him for neglecting his daughter. Hours later, Jack gets what sounds like a frantic call from Ashley. He rushes to her house and finds Garret dead, along with his wife Susan (Shinelle Azoroh) lying on the floor in her own blood. Their dog Wilco is dead too. Jack then tensely walks up to the bathroom, and to his horror, he finds Ashley dead in the shower. The case is ruled a murder-suicide, and Jack feels responsible for what he told Garret. Jack is supported by his partner Bobby (Mykelti Williamson)
Two weeks later, Jack is still shaken from the scene. He then receives a strange phone call coming from Ashley’s phone. He checks the evidence room for her phone and finds it there, meaning it can’t be some kind of prank. He takes the phone and goes back to Garret’s house where he starts speaking to what sounds like Ashley’s voice. Jack is in utter disbelief.
Bobby visits Jack to let him know that Internal Affairs is considering Jack as a suspect in his family’s deaths. He is interviewed by IA agent Roger Lee (Byron Mann), who presses Jack with questions on what motivation he could have had to get rid of his family, like perhaps he was attracted to Susan and wanted Garret out of the way.
Jack gets another call from Ashley. She starts repeating the same conversation she had with him right before she died (mentioning how Jack gave Garret an “ear-full” and ordering a garlic chicken dish Jack always recommended). As he walks around her house again, Jack asks Ashley to walk to the shed outside and tell him what she sees. She mentions a spray paint can and he tells her to paint a big red X on the shed’s doors. Moments later, Jack closes the doors outside and sees the big X, to his surprise. Jack soon realizes that Ashley is calling him from two weeks in the past, days before her murder. He then hears Ashley saying she sees her father talking to someone that pulled up in a white car. Jack tells Ashley to try and make out the license plate, but she can’t.
At work, Jack starts to obsessively go over the case files and crime scene photos to try and find some kind of clue as to how to prevent his family’s deaths. This brings the attention of his boss, Howard (Alfred Molina), who is growing concerned with Jack’s behavior and suggests that he try to move on. Meanwhile in the past, Ashley tries to look into what her father is involved with per Jack’s requests. She gets him the name “Georgie”. Jack brings it up to Howard, who says that “Georgie” is a mysterious crime figure that has evaded capture for a long time. It is believed that Garret had drug dealings with Georgie that went bad, which led to the murders. Jack continues to investigate and realizes the murders were staged.
Ashley calls Jack again and says she found Garret’s day planner with Georgie’s address. She tells him that she and Wilco are walking toward Jack’s house, but Jack urges her to turn around due to Past-Jack not having any idea what is going on. When Jack gets back to his house, some gangsters drive by and shoot at him. He is shot in the side, but is otherwise fine. Jack takes himself to the police station and goes back into the evidence storage room with Bobby, who tries to send him to the hospital. Jack gets called by Ashley again, but he continues to dodge the truth to her and only tells her to call the cops and tell them to arrest Garret because someone is coming to kill him. He also mentions drugs that were found under the bed from the crime scene. Jack gives her Bobby’s number to let him know that she needs help just as he passes out from blood loss. Medics show up to revive him.
Ashley goes to Jack’s house and asks him questions that he has no idea about. She becomes angered due to her belief that Jack is messing with her and keeping something from her. She tells him to leave her alone. When she returns home, she sees Garret playing the guitar while Susan watches. Ashley tries talking to her parents. It later leads to her and her family’s murders again, only it happens a day earlier than it originally happened, and Ashley is found dead in her bedroom as she tried but failed to escape from there. This erases the current timeline that Jack was in.
Jack remembers what has happened and he and Bobby arm themselves as he thinks Georgie’s thugs are going to come after him again. In the past, Ashley (still alive) rides her bike to the warehouse where Garret is meeting with Georgie. She is spotted and then flees on her bike while being followed by a man. As she crosses the barrens, her backpack falls and gets wet, which is something Jack recognizes from a crime scene photo in which Ashley’s bag was found wet. Ashley manages to evade the thug and she calls Jack, who is attacked and shot at again. He tells her to go to a diner, which he also goes to and sits in the same booth she is in. He tests her by having her chew gum and stick it under the table, which he then pulls off and describes to her. He tells her that they are communicating two weeks apart from each other, and he tells her that she and her family will be murdered if they don’t stop her father’s involvement with Georgie.
Jack goes back to the police station to look inside the evidence room. Howard and Bobby confront him as he tries looking for Ashley’s backpack. After he tells them some information he learned from Ashley, Bobby chimes in that Roger Lee’s license number matches the one that Ashley gave Jack, meaning that Lee might be Georgie. Howard then states that “Georgie” isn’t one person, but a whole group of dirty cops involved in major criminal activities.
The three drive off outside of town to continue an investigation. Just when it appears that Howard might be involved with Georgie, Bobby shoots him dead and reveals himself as the one who killed Garret, Susan, and Ashley. In the past, Bobby becomes aware that Ashley has been snooping around, and he goes to take care of her and her family. Present-Bobby is getting ready to kill Jack as he is trying to get in touch with Ashley. Garret tries reasoning with Bobby, as it becomes clear that the two were involved in the drug trade, but Bobby shoots him in the face before killing Wilco and then going after Susan and Ashley. He kills Susan, but Ashley makes it out of the house after smashing her bedroom window since Jack told her she couldn’t get it open. She runs to Jack’s house for protection, and Bobby follows her. Ashley gets Jack’s attention and he sees what Bobby is up to. Before Bobby can kill Jack in the present, Jack shoots him dead in the past. The bad timeline is erased. Jack comforts a crying Ashley.