TIFF 2025: Our Review of ‘Bad Apples’

Posted in Festival Coverage, Movies, TIFF 2025 by - September 10, 2025
TIFF 2025: Our Review of ‘Bad Apples’

We should all know what a bad apple is, but in case we don’t it’s an unruly, disruptive person who doesn’t follow society’s rules. Unfortunately you can find them in every corner of society. In Saoirse Ronan’s new film Bad Apples, we see more than one of them, and the worst of the bunch isn’t who you might think.

Ronan plays Maria, a struggling primary school teacher whose job is on the line. Unfortunately for her, one of her students is a nightmare to deal with. He’s disruptive, prone to violent outbursts and doesn’t contribute anything but a headache to the class. After he injures a fellow student, Maria takes matters into her own hands and does something that can only make things worse.

Bad Apples is a dark comedy, and like all dark comedies it’s not for everyone. It’s not a bad film, but the plot is so far out there.

Ronan is her usual charming self in the film, which is really what makes the film watchable. Other actors may have a hard time. There’s something about her soft Irish accent that makes what she’s doing at least a little more acceptable.

Bad Apples is an interesting look into the theory that one bad apple can spoil the lot, but it’s not realistic enough to get its point across. It needed something a little more grounded in reality to do that. While some people will enjoy the film, it’s not something a general audience will enjoy.

This post was written by
While Roderick has only been writing movie reviews for a relatively short time, he's been a fan of film for as long as he can remember. It's a love affair that started when he saw Star Wars at a drive-in theatre in Kitchener when he was four years old. In the past decade he's fulfilled his dream of interviewing celebrities, attending red carpets events at festivals such as TIFF and writing reviews for outlets such as Realstylenetwork.com. He's always on the hunt for the next big thing to hit the screen.
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-61364310-1', 'auto'); ga('send', 'pageview');