TIFF 2026: Our Review of ‘Four Seasons in Java’

Posted in TIFF 2026 by - September 16, 2026
TIFF 2026: Our Review of ‘Four Seasons in Java’

Kamila Andini is a rising star in the festival circuit – not everybody saw her film Yuni, but I was one of those lucky people who caught that moving during the 2021 version of TIFF. Five years later, she’s back at the festival with a new and mysterious genre mashup film Four Seasons in Java. It’s about an Indonesian town’s prodigal daughter Pertiwi (Putri Marino), coming back after twenty years in prison. Calling her the town pariah seems reductive because she still has friends who wonder about her changing. Her return, though, changes the town, now filled with fantastical beings that she and some select women see. A sexual assault survivor, seeing her rapist temporarily makes her leave but supernatural forces bring her right back.

Four Seasons in Java meanders, but even some of those side quests provide a rich tapestry with nuance. At least shows that not everyone in that small town has a small mind and seethingly hates Pertiwi. If anything, she gathers her own squad of freaks who fondly remember her despite her long absence. One can really feel the gravity of the lore between those characters and relationships they try to rekindle. Of course, the small minded people run the town, even taking some of her ideas as their own. I don’t want to give too much away but the movie ends in a big party for the town. This modern Western thriller has parties like traditional ones but that ending is something critics will remember.

This post was written by
While Paolo Kagaoan is not taking long walks in shrubbed areas, he occasionally watches movies and write about them. His credentials are as follows: he has a double major in English and Art History. This means that, for example, he will gush at the art direction in the Amityville house and will want to live there, which is a terrible idea because that house has ghosts. Follow him @paolokagaoan on Instagram but not while you're working.
(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');