Care that follows the weather

When rain is due, Fern moves the watering for plants on a balcony. When frost or a heatwave is coming, it tells you once. How that works, where your location comes from, what's in Pro, and what we still haven't settled.

Picture three pots of herbs on a balcony. Fern has the basil down for water tomorrow morning. Tonight it starts raining, and the forecast says it won't stop until tomorrow evening. A reminder to water the basil in the middle of that would be the kind of message that teaches you to ignore reminders.

Indoors, the same week barely registers. A pothos on a bookshelf doesn't know it rained, and if the heating is on it may not notice the first cold night either.

That gap is what this post is about. Fern can see the forecast where your plants live. The hard part is deciding what the forecast should be allowed to change, and for which plants.

What the forecast is allowed to touch

Weather can do two things in Fern. It can quietly adjust a plant's schedule, the way light or pot size does. Or it can send you a message. They need different rules, because a schedule change costs you nothing and a message costs you attention.

So the forecast gets a narrow job. Rain can move a watering for a plant outside. Heat can bring waterings closer together, and cold can spread them out. Frost and heatwaves can produce a warning. Everything else about a plant's care, from your soil checks to the rhythm Fern has learned from when you actually water, carries on as before.

Fern weighs each signal by how far it trusts it, and a live forecast counts as measured data, trusted almost as much as something you've told Fern yourself. On a plant's page, "Why today?" lists what it weighed: after a wet forecast, a line like "Rain coming (6mm)" with a small "Less water" tag.

Indoors and outdoors

The first decision was which plants weather applies to at all.

Every place in Fern is either indoor or outdoor. When you set one up there's a switch called "Indoor place", with a hint underneath: "Turn off for balconies & gardens". Picking Balcony from the room types turns it off for you. A plant you add to an outdoor place is an outdoor plant, and that's the plant the forecast speaks to most directly.

Rain only ever counts for outdoor plants. Indoors, Fern ignores it. Temperature and humidity still count indoors, at reduced strength: the engine takes 40% of the temperature effect and half the humidity effect, because walls and heating buffer a plant from what's happening outside.

Say Fern would water a plant every seven days, with nothing else in play. If the forecast shows highs of 32°C or more in the next three days, the same plant on a balcony moves to every four days. Indoors it moves to every six.

The cost is that the switch has only two positions, which we come back to at the end.

Rain moves the watering, and says so

If at least 5 mm of rain is forecast across today and tomorrow, Fern does two things for each outdoor plant in that spot. It stretches the plant's watering rhythm while the rain is in the forecast. And it takes any watering due before the rain clears and moves it to 9 AM the morning after. With between 1 and 5 mm forecast, Fern only stretches the rhythm a little and doesn't send anything.

Moving a task without a word would be easy, and confusing. You'd open Fern, find the basil missing from Today, and wonder whether someone had already watered it. So a moved watering stays on Today, faded, with a small "Rain" label and a line like "Moved to Thursday · rain". The note in our code says it plainly: nothing silently disappears.

The rain message is the only weather message written in Fern's own voice. It's titled "Rain is coming 🌧️", and the line underneath reads something like "I moved watering for Basil, Mint and Rosemary to after the rain." It reports something already done, so there's nothing for you to decide.

Heat and frost ask you to act

Heat and frost work differently. A schedule can make room for heat, but no new watering date protects a frost-tender plant on a balcony. Someone has to carry it inside.

A heat warning comes when any day in the seven-day forecast reaches 33°C. It's titled "Hot weather ahead 🌡️", and the body names the plants: "4 plants may need extra water: Monty, Fern, Phil and 1 more."

A frost warning comes when the forecast low drops to 2°C or below, and only for plants whose species Fern knows to be frost-sensitive. It's titled "Frost risk ahead ❄️" and says "Protect 2 plants from the cold", followed by their names. The line sits at 2°C, and that margin is worth having. The forecast is for the air about two metres up, and on a clear, still night frost can form on leaves and pots while that number is still just above freezing.

Both warnings reach indoor plants too. The heat one covers every plant at that location, wherever it sits, which is one of the open questions below.

One message for each kind of weather

Weather is the one kind of care news that gets its own push instead of waiting for the morning summary, as we wrote in our post about keeping Fern calm. That makes it the easiest place for Fern to get noisy, so it comes with rules.

The first rule is grouping. Fern gathers alerts by person, by place and by kind of weather. If a heatwave affects eleven of your plants, you get one message that names three of them and adds "and 8 more". Heat and rain on the same day are two messages.

Getting "place" right took a second try. Until recently, Fern grouped plants by home: plants in a shared home went in one group, plants that were only yours in another. So someone with a personal plant and a household plant in the same flat got two identical "Hot weather ahead" cards. Fern now groups by the spot the forecast comes from, rounded to about a kilometre. If your plants really are in two places, say your own flat in Casablanca and a family home in Marrakesh, each title names its city: "Hot weather ahead in Marrakesh 🌡️". With only one place, the city is left out.

The second rule is that one heatwave makes one alert. The forecast slides forward every morning, so if you only compare dates, a five-day heatwave looks like a new one each day. Fern keeps one live alert per plant for each kind of weather until that event's last forecast day has passed. It also checks each plant twice each morning, in case a run is missed, and the second check finds the alert already live and stays quiet.

Weather news once shared a single type of notification, and one bug from that time put a snowflake on a heat warning. Heat, frost and rain are now separate types, and the card on Today draws each one differently.

Timing changed too. Weather alerts used to go out once a day at 7:00 UTC, which is breakfast in London in winter and the small hours in New York. Now Fern looks at each plant in its owner's morning, between 8 and 10 local time. A push that would still land at night, for a housemate in another time zone, waits until 8 AM where they are, and quiet hours hold it back the same way. Weather pushes also count toward the daily budget of three care pushes. If the budget is already spent, the push is dropped, and the alert still waits in your inbox and on Today.

In a shared home, the push goes to one person: the plant's caretaker, or its owner if nobody has claimed it. The card on Today is shared. Everyone who can see the plant sees the card, with "4 plants affected" and a "See plants" button, so the person who wasn't pushed still finds out the next time they open the app. Tapping the push opens your plant list with exactly the plants it named.

"Weather alerts" has its own switch in your notification settings, described as "Heat, frost and rain changes". Turning it off stops the push. Muting a home silences its weather news along with everything else from it. Either way, the rain moves still happen.

Where Fern gets your location

A plant's forecast comes from the home it's in, which you set as that home's "Garden location". If the home has no location, or the plant isn't in a shared home, Fern uses your own, under Location & weather on the You tab. If neither is set, that plant's schedule simply leaves the weather out.

You can search for a city or postcode, or tap "Use my current location". Fern asks iOS for a location only when you tap a button like that one, and only ever an approximate one. City-level is all a forecast needs, and the permission prompt says what it's for: "Fern uses your approximate location to tailor care schedules to your local weather and climate."

The forecast itself comes from Open-Meteo. Fern rounds each location to about a kilometre and keeps each forecast for three hours, so every plant and every person in the same spot shares one. Forecasts are fetched in the background, so the app's screens never wait on a weather service. If a forecast can't be fetched, the plant falls back to its ordinary schedule until one arrives.

Setting a location does two more things, on any plan. It updates your time zone, which decides when your morning is, for the summary and for weather. And it tells Fern which hemisphere you're in. Without a location, Fern assumes the north, so a plant in Melbourne would be treated as resting in January, in the middle of summer.

What's free and what's Pro

The weather-smart schedule is part of Fern Pro, and so are weather alerts, including during the free trial. On the free plan, Fern doesn't fetch a forecast for your plants at all. Their schedules still adapt to the season, the light and pot you've told Fern about, your soil checks and the way you water. Once you have plants, Today on the free plan shows a small locked card called "Weather-aware care" with a Pro badge.

Whether a plant follows the weather depends on its owner's plan. In a shared home where one person has Pro, their plants follow the forecast and a housemate's free plants don't, even on the same balcony.

The cost lands on balconies. Outdoor growers get the most from a rain move, and on the free plan they don't get one.

What Fern doesn't do

Fern reads a forecast by the day, plus current conditions. It doesn't look hour by hour, so it can't tell a morning shower from an all-day soak that adds up to the same number of millimetres.

It doesn't follow your phone around either. The location is the one you saved, for you or for the home, and it stays put until you change it.

There's no wind alert and no dry-spell alert. The app can already draw a wind card, and the alert record has a slot for a dry spell, but nothing sends either today.

And frost warnings depend on Fern knowing that a species is frost-sensitive. For a plant whose species doesn't say, Fern stays quiet.

What we haven't settled

Should a heat warning name indoor plants? Right now it covers every plant in that place. On a 35°C day, a fern by an open window may well need water sooner. One in an air-conditioned bedroom may not, and Fern can't tell the two apart.

What about covered balconies? A balcony under the one above gets the rain move, and its pots may stay bone dry. A third kind of place, or one more question when you set it up, would fix that, at the price of one more thing to answer.

What should rain do to a schedule you set yourself? If you choose Custom, the app promises Fern "will stick to exactly this", and the interval does stay exactly as you set it. Rain still moves the next watering for an outdoor plant on a custom schedule. That may be what most people want after a downpour. It isn't quite what the setting says.

And what should the location prompt promise? The card on Today says "Set your location and Fern skips waterings on rainy days." For someone whose plants all live indoors, or who's on the free plan, that won't happen as written, though the location still sets their time zone and their seasons. Whether that card should promise less or explain more is still open.

The first frost warnings of the northern autumn will be the real test of the 2°C line. If one reaches you too late to matter, or for a plant that didn't need it, we'd like to hear about it.