> ## Documentation Index
> Fetch the complete documentation index at: https://playbook.smedleygroup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Weather

> The session's air and track temperature, wind, humidity and rainfall as of the playhead, as a row of stat tiles.

## Overview

The Weather widget (registry id `weather`, built by `WeatherStrip`) shows the most recent weather reading **as of the playhead** as a row of stat tiles. Reach for it to check conditions at a given point in the session, for example whether rain arrived before a round of pit stops.

> [!NOTE]
>
> The store keeps the session's whole weather history, so scrubbing the playhead backwards shows the reading that was current at that moment, not an empty strip. For the shape of a change over time, use the four [Weather Charts](/software/internal/watchparty/widgets/weather-charts).

***

## What It Shows

![The Weather strip mid-session; fields missing at source render as dashes (Madrid 2026)](https://mintcdn.com/smedley_group/Tjan_fF50tdTQI7z/images/watchparty/weather.png?fit=max\&auto=format\&n=Tjan_fF50tdTQI7z\&q=85\&s=12e71abc0ffdf8566e31f40776e01119)

| Tile | Field | Format |
| - | - | - |
| Air | `air_temp` | Degrees Celsius, 1 decimal place |
| Track | `track_temp` | Degrees Celsius, 1 decimal place |
| Wind | `wind_speed` (with `wind_direction` when known) | m/s, with degrees appended when direction is available |
| Humidity | `humidity` | Per cent, whole number |
| Rain | `rainfall` | A 0 or 1 flag, whole number |

Any field that is missing or not a finite number renders its tile as a dash, never a fabricated zero.

***

## Data Behind It

Weather is entirely client-derived, with no insight metric behind it.

* **WS channel**: `weather`, part of the Section 5 envelope family (`vpw:v1:{session_key}:weather`) defined in `libs/vpw-contracts`.
* **REST hydration**: `GET /v1/sessions/{session_key}/weather`, an offset-paged row endpoint, read by `SessionController.enter` alongside the other row endpoints and re-read on a WS reconnect or a `seek`.
* **A retained history, not a single slot.** Every envelope is appended to the session's weather history. The `weatherHistoryAsOf` selector filters that history by the playhead cutoff, and `weatherAsOf` picks the latest surviving reading for this strip. The four chart widgets read the same filtered history.
* **Column names**: the weather table's real columns are the short forms `air_temp` and `track_temp`, not the longer `air_temperature` and `track_temperature`.
* Live and replay envelopes are wire-identical; the widget never branches on envelope `source`.

***

## States

| State | Behaviour |
| - | - |
| No reading received yet | "No weather data" empty state |
| Playhead scrubbed before the session's first reading | Same empty state: nothing is yet "as of" the cutoff |
| Playhead scrubbed back mid-session | Shows the reading that was current then, not the session's last one |
| Live vs replay | Identical rendering |
| Session-type gating | None: shown in every session type |
| Reading present but some fields missing or non-numeric | Only the affected tiles show a dash; the rest render normally |

***

## FAQ

> **Why are Air and Track blank on some backfilled sessions?**
>
> FastF1-backfilled weather rows can carry no temperature values at all. The tiles show dashes rather than inventing a figure. The live-sourced copy of the same session usually has them.

> **Does this update while the playhead moves?**
>
> Yes. The strip always shows the latest reading at or before the playhead, so it changes as you scrub.

> **What does Rain = 1 mean?**
>
> The feed reports rainfall as an on or off flag rather than a rate, so 1 means wet and 0 means dry. There is no millimetre figure on the wire.

***

## Next Steps

> **[Weather Charts](/software/internal/watchparty/widgets/weather-charts)**
>
> The same readings plotted across the whole session.

> **[Race Control](/software/internal/watchparty/widgets/race-control)**
>
> Official messages issued as conditions changed.

> **[Timing Tower](/software/internal/watchparty/widgets/timing-tower)**
>
> How the field responded to the conditions.

> **[Stints](/software/internal/watchparty/widgets/stints)**
>
> Tyre choices against the weather at the time.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.