The story alternates between two timelines: "Now," during a present-day summer, and "Then," beginning two summers earlier, tracing how bookseller Thea Meyer and chef Alex Bruscato build a friendship after their respective divorces, and how that friendship slowly transforms into something neither planned. Thea has a lifelong habit of narrating her own life as a story, a tendency that both sustains and constrains her as she struggles to trust in happy endings.
Two years earlier, Thea returns to her former home in Pittsburgh to retrieve her golden retriever, Argos, from her ex-husband, Ethan. On the front steps, she meets Alex, who has come to collect his four-year-old daughter, Mia. They discover that Ethan and Alex's ex-wife, Jen, are already together, despite both claiming otherwise. Fueled by anger and camaraderie, Thea impulsively tells their exes that she and Alex are old friends. Alex escalates the lie, declaring they were each other's first love.
That night on Alex's back stoop, they take stock. Neither wants romance, both too bruised to risk it. They agree to be genuine friends and make a pact: Alex will quit cigarettes, Thea will quit gas station hot dogs, each vice a symbol of rock bottom. Alex gives Thea the nickname "Ted," a cooking-inspired reduction of Theodora, her full name.
Their friendship deepens quickly. Alex, a celebrated chef with James Beard recognition and a Michelin star, feeds Thea real food when she has nothing but peanut butter in her sweltering apartment, taking her to Luna's, his family's Italian restaurant and gelato shop. Watching him patiently spoon gelato for Argos, Thea thinks, "I love him," and knows it will not be the last time.
Thea's long-distance best friend, Lauren Vaughn, an architectural designer, anchors her emotional life but reveals devastating news: She is moving away from Pittsburgh for a consulting job. Over French wine at Thea's apartment, Lauren confesses she hates her birthday because it marks the anniversary of her mother's death. At their farewell dinner at Savoureux, a restaurant Thea secured through Alex's connections and that Alex secretly paid for, Lauren tells Thea to "be big" and take up space.
As autumn arrives, Thea and Alex maintain closeness through daily texts and "I moosh you" exchanges, Mia's pronunciation of "miss." Thea asks Alex to teach her to cook; in return, she reads aloud to him. He follows her curiosity rather than drilling fundamentals. These exchanges become the backbone of their bond.
At Thanksgiving with the Bruscatos, Alex's mother, Lydia, discerns they are not a couple and tells Thea that heartbreak needs time. Alex reveals the gathering doubles as a belated birthday celebration for Thea, complete with pumpkin cake, her favorite, because he remembered.
On New Year's Eve, tipsy and tender at a karaoke bar, Alex cups Thea's face, tells her she is beautiful and lovable, and says "I love you" for the first time. Later, on his couch, Thea brushes her lips against his in a faint, frightened first kiss. Panicked, she says goodnight and leaves. They never discuss it.
On their one-year friendiversary, Thea cups Alex's face and nearly confesses romantic love. Instead, she tells him she loves him so much she could never stand to lose him. Alex asks, "Meaning what?", revealing he has hoped for more. When Thea explains that friendships endure while romances end, his expression dims. He does not push. For the next year, they remain only friends.
The present-day timeline opens with Thea closing The Bookshop and catching up with Lauren by phone. Soon after, an email from Ethan and Jen invites them on a beach vacation to Ethan's family property in Bethany, Delaware, citing a "significant development" in Mia's life. They suspect a wedding and agree to go for Mia's sake.
In the weeks before the trip, Thea wrestles with parallel fears. She has been sitting on a proposal to co-own The Bookshop from its owner, Fern, afraid that pushing could cost her everything. Desire for Alex intensifies after an incident at a store event where they pretended to be romantic, igniting genuine arousal. Lauren flies in and delivers pointed advice: Thea can be grateful for what she has and still want more.
The morning before vacation, Thea presents her proposal to Fern, who asks her to speak from the heart. Fern promises to consider it after the trip. That evening, Jen unexpectedly appears at Thea's book club and breaks down, confessing she feels she is failing Mia. The conversation triggers a realization: Thea's own mother may have been doing her best within a broken system. Shaken, Thea texts her therapist, Sue, requesting an unscheduled call for the first time.
On the drive to the beach, Thea reads aloud to Alex through the night. When they arrive, he walks her to the ocean she has never seen. Thea whispers "I love you," and though the words are the same she has always said, their meaning has shifted. She can no longer wrap her feelings in safe labels.
At the beach house, they find one bed and compromise with couch cushions on the floor. On their third night, Alex asks why Thea always turned them away from romance. Thea blurts: "Because I want you. And I don't want anyone else to have you." Alex confesses he has wanted her too but waited for her to be ready. They kiss and bring each other to release, whispering declarations of love.
The next evening, Jen confronts Ethan. When he demands she choose between him and Mia, Jen chooses Mia and kicks him out. Thea plans to tell Alex everything, but seeing him exhausted, she suggests postponing. Alex is devastated, interpreting this as another deferral. He accuses her of always waiting for perfect conditions and leaves for the basement.
The next morning, alone after Jen takes Mia out, Thea makes three calls: to her mother, building on a recent exchange in which her mom revealed diagnoses of depression and ADHD; to Fern, who reveals she wants to sell Thea the entire store; and to Lauren. Then she spots Alex on the deck and runs to him.
They both apologize. Thea tells him he is worth it, that she loves every version of him. They make love for the first time, a final end to the waiting.
On their last morning, Alex suggests they look for a house together. Thea smiles so wide her cheeks ache. Opening her heart to the storyteller inside, she narrates aloud to Alex the story of a woman gazing at the man she loves, her best friend, who changed her life for the braver and more beautiful. She tells him she cannot wait for what comes next, because finally she has him: her happy ending.
An epilogue two years later finds them at a beach rental with Lauren and her partner, Zazie; Jen and her boyfriend, Luke; Mia; and Argos. Thea has cooked dinner herself. Alex hands her lemon seltzer for her nausea; she is pregnant. They have built a life: the store, the restaurant, and a house. On the deck at sunset, Thea tells Alex she could be anywhere in the world, so long as she was with him, and she would be what she already is: happy.