Unreleased
[Website] - 2026-11-01 (Update 2)
Added
- Website: privacy policy and terms published. Plain-English pages set out what RefCoach stores, who processes it, how long it is kept, your rights, and the terms of use.
Fixed
- Website: public pages are readable in dark mode. On a device set to dark mode, text on the home, privacy and terms pages showed pale grey on white.
[Website] - 2026-11-01
Added
- Website: refcoach.io is open. Sign in with an email code or Apple. Your matches appear there once the iPad app starts syncing, in a coming update.
- Website: review a match at your desk. Each synced match gets its debrief, summary, events, officials, diagrams and shootout, with Markdown and text exports and a print layout for PDFs.
- Website: light and dark appearance. Choose System, Light or Dark at the foot of the sidebar.
[26.4] - 2026-08-26 (TestFlight Build 73)
Added
- Sunlight mode, for reading the screen in bright light. Turn it on from the match menu when the tiles are hard to see on a sunny touchline. It switches to a white background with bold black text and heavy borders.
- Three sunlight styles to choose from. The menu item cycles through Bright, Mono and Dark so you can find what works in real conditions. Your choice applies to that match only.
- Caution a player at a natural stoppage. Key Match Decision now opens the player selector, so a caution for dissent or delaying a restart no longer has to be logged as a free kick first.
- The player selector shows who is on the field. Rows are labelled On field and Bench, players who came on are marked with an up arrow, and players who went off are dimmed with a down arrow.
- Kick-off time can be edited after a match is created. Tap the Kickoff tile on Match Overview at any point in the match.
- Name your starting XI. Before kickoff, drag a substitute above the Substitutes line to put them in the team. Whoever they replace drops to the bench.
- See who was on the bench. The match overview now lists substitutes who never came on, tucked under a Substitutes row you can tap to open.
- You can record which players were involved when adding an event from a team-talk screen. Pre-kickoff, half time, extra time and penalties previously offered no player selector at all.
- The disciplinary code grid is reachable straight from the player. Tap a player to a caution or send-off and the codes appear, without first choosing a Key Match Decision.
- You can correct a player's squad number during a match, and their goals and cards follow them. Previously the number was fixed as soon as the player appeared in any event, so a number written down wrong could never be put right.
- Giving a player a number a team-mate already wears swaps the two, and swaps their events with them. For when two shirts were noted the wrong way round.
- Events can be deleted from the event editor. Removing one no longer means backing out and finding it again in a list.
- The clock turns amber when a half has run well past its length. If you forget to end a half, events keep going against the wrong one with nothing on screen to say so.
- Sunlight mode now follows the light. The palette switches by itself when you walk out into the sun and back when you come in. Turn it off in the Sunlight panel to choose by hand.
- A Sunlight panel that shows you the difference. Each option applies to the screen behind as you tap it, so you can compare before committing.
Changed
- The squad screen scrolls per team. Each team's list scrolls on its own now, with the team name and Add Substitute button staying put.
- The event editor only offers periods the match has reached. It listed every period, so an event could be filed under extra time in a match that finished in ninety minutes.
- Moving an event to another period now moves its clock too. A 34th-minute event moved to half time stayed at 34.
- The squad is fixed once the match kicks off. Players can no longer be added or removed after kick-off, so the squad you name is the squad you assess. Renaming players and changing their numbers stay available throughout.
- A Key Match Decision now needs an incident type before it can be saved. Otherwise the event records that something important happened without recording what it was.
- One tap shows the card you are about to log. With Caution Issued chosen, the first tap turns the player yellow; Send Off Issued turns them red.
- Mono is now genuinely monochrome. It previously looked almost identical to Bright.
- The logging screen is readable in sunlight. Teams, score, timer and event rows used to disappear against the bright background.
Fixed
- The Lock Screen clock now keeps counting while the app is closed. It used to freeze at the moment you closed the app. It stays in match minutes, so the 65th minute reads 65:23, and a paused clock still stops.
- The progress bar under the Lock Screen clock now moves with it. It stops at full rather than running past the end of the half, and is a flat green throughout. The clock above it still shows stoppage time.
- A match already running when you install this build keeps a frozen Lock Screen card. End that match and start a new one. Every match started on this build is fine.
- Both players cautioned in one incident now show in the debrief. An incident with two cautions only ever showed one player, and showed no card unless you had picked a code.
- Cautions and goals in the match summary are now in time order. They were listed by squad number, so an early caution could sit below a late goal and read as missing.
- Editing an event no longer loses a caution. Opening an event where you had tap-cycled a player to a caution without picking a code, then saving, removed the card from the player, the debrief and the summaries.
- A caution and a send-off in the same incident stay separate. Editing the event turned the send-off into a second caution.
- Turning off player tracking mid-match no longer strips players from events you then edit. The players, cards and victims stayed on screen but were removed on save.
- Adding an event from a team-talk screen twice in quick succession no longer creates two.
- Photos attached to events keep their quality. Every edit re-compressed the photo, so it degraded a little each time.
- Tapping Add Event repeatedly no longer logs the same event several times. If the screen hesitated, every tap that landed in the meantime was recorded as a separate event.
- Error messages now clear themselves. A failure message such as "Failed to delete event" stayed on screen for the rest of the match, which made the app look frozen.
- You are now told when flagging an event fails. The flag simply sprang back with no explanation.
- Two players cautioned in one event now both get a card. Only the first was recorded, losing the second caution.
- Cards you did not show no longer count as cards. They now appear under their own Cautions Not Issued heading.
- Undo on a pitch diagram stays undone. Drawing a new line used to bring every undone line back.
- Sunlight mode stops changing on its own. It could switch as you moved between menus, or when you took a screenshot.
[26.3] - 2026-08-05 (TestFlight Build 71)
Added
- The goal button, and the sin bin button if you use it, now sit in the top bar in portrait on iPad. Both took an extra tap before. iPhone is unchanged.
- Half-time length is now a setting (5, 10 or 15 minutes) under Match Defaults. It was fixed at 15, so a match with short halves spent most of the break showing a countdown that had already passed.
- You can now turn off usage data sharing. A new Privacy section in Settings lists exactly what is collected. Nothing you type about a match is included: no names, teams, competitions, venues, notes or photos.
- "Reset to Defaults" leaves your privacy choice alone, so a reset cannot quietly switch usage data sharing back on.
- The stoppage timer now shows the comparison it was built for. Match Overview and the debrief show, for each half, how long it actually ran, how much the referee added, and what you timed.
- The extra-time kickoff team is now saved. Your choice on the "Prepare for Extra Time" screen was previously ignored. The second-half screen now shows the opposite team.
- You can now save Field of Play diagrams from the debrief. Saved diagrams appear in a tile where you can reopen or delete them. Anything you drew was previously lost when you closed it.
- Exports now mark events that have a photo or a pitch diagram attached, so whoever reads the report knows to ask for them.
Changed
- The app now works properly with VoiceOver, Voice Control, Switch Control and Full Keyboard Access. Competency tiles, filters, player chips, official selectors and the squad editor now announce themselves and their state.
- RefCoach now requires iPadOS or iOS 17 (was 16.2). This affects one known device; everyone else is unaffected.
- Match settings are no longer frozen once the match starts. Extra time, penalties, sin bin, the tracking options and the extra-time half length can all be changed at any point.
- Half length is still locked once the match is live, because changing it would move the minute shown against every event you had already logged.
- Photos attached to events are stored at higher quality, and the viewer no longer offers more zoom than the photo can support. Photos you have already taken open and zoom as before.
- Button Size now genuinely fills the screen. Tiles reflow to fill the row instead of only growing wider, so a larger setting no longer means more scrolling. It scales the toolbar buttons too.
- Settings that were being quietly ignored now work, including "Extra Time Available", "Penalties Available" and "Extra Time Half", plus your debrief tile order, hidden tiles and custom colours.
- Opening a match no longer wipes your custom tile colours. Starting a match without a layout template applied was silently clearing every colour you had set.
- "Save Current Layout" now saves your actual layout instead of creating an empty template that cleared everything when you applied it.
- "End Match" now takes you back to the match overview. It used to leave you on the live logging screen, where you could keep adding events to a finished match.
- "Hide Tile" no longer hides that tile for every official at once when no official is selected, which was the state after every event you logged.
- "Restart Tour" now restarts the tour straight away, and asks before deleting the demo match. It used to do nothing until you reopened the app, and claimed success even when the delete failed.
- The tour can be left at any point, and no longer lets taps through. An interrupted tour used to stay active but invisible. The Skip control is now clear and easy to hit.
- The demo match keeps its DEMO badge after a settings reset. A reset used to strand it in your match list looking like a real match you had forgotten about.
- Debrief filters now work together. Tile counts respect the rating filter, a selected rating stays visible, and you can combine "Flagged" with a competency. An over-narrow filter now says so.
- The note field and the buttons beside it are now the same height. The note used to sit visibly shorter than the pitch, photo and flag buttons next to it.
- Deleting a match now asks first, and tells you how many events you are about to lose. It was previously a single uninterrupted swipe.
- Deleting a photo now asks first. If it was taken in RefCoach it is not in your camera roll, so it could not be recovered.
- Failed saves now tell you. Across the squad, substitution, official, event and half-time screens, a save that failed used to look exactly like one that worked. Those screens now stay open and show an alert.
- Deleting a starting player now explains why it is not allowed. The delete action previously did nothing at all for a starter.
- Squad numbers are now protected once a player has events. Two players cannot share a number, and you cannot renumber or delete a player who already has a goal, card or substitution recorded.
Fixed
- The match clock could freeze after you switched away from the app and came back, while the sin bin timers carried on counting down. Brief interruptions like opening Control Centre were enough to cause it.
- A match could show "Setup" in your list while it was actually running in the second half. Coming back from a match never refreshed the list.
- Matches are never expired automatically any more. RefCoach used to mark an in-progress match "Expired" 24 hours after kickoff, even mid-match. Matches an earlier version expired still open.
- Your kickoff time now lands on the day you chose. Setting a match up the evening before recorded it as kicking off the previous day, which put it under the wrong date heading and made the countdown wrong.
- Your existing events now show the moment you open a match. The recent events strip read "No events yet" until you added one more. Nothing was ever lost.
- The match header no longer jumps sideways when you start a stoppage, and no longer sits off to the left.
- The pre-kickoff countdown reads sensibly for a match on another day. It only counted in minutes, so a match three days ahead counted down from "4320:00". It now shows a date instead.
- The search, substitution and menu buttons no longer have a stray highlight behind them. Those three were drawn differently from everything else in the same bar.
- First half length is no longer measured from the planned kickoff. If you kicked off late the figure was over by however late you started, in the very comparison built to check the referee's added time.
- Match minutes were wrong for any match not using 45-minute halves. A 30-minute-half match showed 46' one minute into the second half instead of 31', and that minute was saved onto every event.
- Events already recorded keep the minute they were saved with; everything logged from now on is correct.
- The Lock Screen and Dynamic Island clock had the same problem and is now also correct.
- "Set Time Manually" asked for a different number than the clock was showing. In the second half the clock might read 52 while the picker opened on 7. It now works in match minutes throughout.
- A saved pitch diagram no longer drifts out of shape on a different device or window size. The icons moved but your lines and arrows did not. Rotating the iPad or using Split View had the same effect.
- The extra-time break timer counted from the wrong point, showing roughly 80 to 90 minutes instead of counting up from zero.
- Everyone named on a card event was shown as carded. An incident with three players and one caution badged all four yellow. Cards are now recorded per player, and a caution and a send-off both survive.
- Sin bins ran down during half time if you had a stoppage running when you ended the half. A player binned at 43' should have around 7 minutes left when the second half starts.
- Sin bins could carry over into your next match, take a slot, and record a completion against the wrong match. A bin finishing as you backgrounded the app could also stick, or complete twice.
- Substitutions could report success without saving anything. If you picked a player off one team and a player on from the other, nothing was recorded but the sheet still closed with a confirmation.
- Report totals did not match the events in the report. Neutral-rated events, which includes every sin bin and stoppage, were listed in the event log but left out of every total.
- The same event showed two different times in one report, once in the per-official timeline and once in the table below it.
- Markdown exports cut every note off at 40 characters. The text export kept them in full, so the same button lost your observations in one format and not the other.
- An expired match could not be reopened. There is now a "Reopen Match" button. Nothing is expired automatically any more, so it only recovers matches an older version already stranded.
- The event editor could close without saving. With no polarity selected the save failed silently. Save now stays disabled until you pick one, and a genuine failure shows an alert.
- Removing a photo or Field of Play markup now actually removes it. Clearing an attachment in the event editor appeared to work but the original stayed on the event.
- Duplicating an event in the debrief no longer loses the players, cards, photo and pitch diagram. Duplicating from the logging screen still does not carry them, because that copy is a fresh observation at the current time.
- Emptying a row in the tile editor no longer duplicates its tiles. Dragging the last tile out of a row put that row's original tiles back, so they appeared twice.
- Own goals were detected by looking for the letters "OG" in your note. A note mentioning a player called Ogden credited the goal to the other team, and writing "own goal" in full was not detected.
- The foul count under a player was counting their goals and offsides too.
- Sin bin and stoppage events were saved without an official or competency. They counted towards your totals but were missing from exports, debrief filters and the Match Events tile. Existing ones are not repaired.
- Exports could come back with an empty event list. If a match had no officials assigned, the summary counted your events but the Full Event Log was blank.
- Plain-text exports of an empty match now say so. Previously you got a header and nothing else, which looked like the export had failed.
- Extra-time half time showed the wrong break duration, reading around 35 minutes or more instead of the minute or so actually elapsed. The match overview timer had the same problem.
- Flagging, editing and deleting events in the debrief no longer fail silently.
- The "Live" filter on the match list was hiding matches that were at full time, in the extra-time interval, or in a penalty shootout.
- A substituted-off player no longer appears in the substitutes list as though they could come back on, and can no longer be deleted.
- The onboarding tour's flagged example event now shows as flagged.
[26.3] - 2026-07-30 (TestFlight Build 70)
Changed
- Re-issue of Build 69 after TestFlight's 90-day expiry.
[26.3] - 2026-04-30 (TestFlight Build 69)
Added
- Customisable half duration. Pick 10 to 45 minutes per half when creating a match, from a picker on the New Match screen or by tapping to edit on Match Overview. Locked once the match goes live.
- Paused sin bin banner on the half-time summary, listing each player still in the sin bin and their remaining time. It matches the banner already on the "Prepare for Second Half" screen.
Changed
- Half length options expanded to 10 to 45 minutes in 5-minute steps, was 30 to 50. Shorter options added for training and youth matches; the 50-minute option was removed.
Fixed
- Sin bin timers disappearing at the start of the second half. Backgrounding the app during half time could silently complete a paused bin before the second half kicked off.
[26.3] - 2026-03-16 (TestFlight Build 68)
Added
- Competency search in the event editor. A search field filters tiles by code or name when editing events.
- Match Events settings. Choose which elements appear in the Match Events debrief tile: goals, cards, player incidents.
- Player incidents grouped by competency. The Match Events tile breaks incidents down by type with home and away columns, and highlights repeat offenders in orange.
- Reorderable player incident competencies. Drag to reorder them in Settings, and the saved order is used in the Match Events tile.
- Collapsible search in the match logger toolbar. It collapses to a magnifying glass; tap to expand with the keyboard focused.
- Quick actions in the portrait menu. Goal, Substitution and Stoppage are now available from the 3-dots menu.
Changed
- Event editor portrait layout. Period, time and official selectors are on separate rows, for readability on iPhone.
- Portrait toolbar simplified to a single menu button, with the quick actions moved into the menu.
Fixed
- Nested 3-dots menu on iPhone portrait, which required two taps to reach anything.
- The event editor was slow and laggy when editing. It now opens and responds instantly.
- Repeat offenders were counting non-foul events, including goals and injuries.
[26.3] - 2026-03-15 (TestFlight Build 63)
Added
- End Half in the 3-dots menu, with a dynamic label, so it is reachable in portrait.
Fixed
- Toolbar button tint not rendering in landscape on iPhone. The teal backgrounds now appear immediately rather than after you interact.
- Portrait toolbar nesting, caused by a separate end-half button that made iOS collapse items into an extra menu.
[26.3] - 2026-03-08 (TestFlight Build 62)
Added
- Unknown scorer for goals. With player tracking on, the Quick Goal sheet has a "?" button per team so you can record a goal without knowing the scorer. Own goals are supported.
- Competency search box in the match logging toolbar, filtering tiles in place within their rows for quick discovery during a live match.
- Official first names on logging tiles, shown below the role code for quicker identification during a match.
- Active sin bin timers in the half-time summary card, showing the remaining time for each.
Changed
- Player order now respects squad entry order. The "Players Involved" selector and Quick Goal sheet follow the order you set in Squad Entry rather than sorting by shirt number.
- Event time is now captured when you tap the first official, not when you choose the competency, so it better reflects when you noticed the event.
- Neutral polarity is now visible and selected by default for new events.
- Removed the player tracking flag from two goal-line competencies.
- Reordered the Assistant Referee competencies: Half-Way Positioning moved after Follow to Goal Line, and Split-Flag Throw added.
Fixed
- The new match button did not respond to a tap, only to a long press.
- Missing yellow and red card badges on player chips when the disciplinary event was created by tap-cycle without picking a specific code.
- Sin bin timers disappearing at half time. Timers started before half time now persist into the second half.
- Wrong match state after ending the second half, caused by the timer's periodic save overwriting it.
- Duplicate tiles in the AR competency template preview, which doubled every tile when no custom order was saved.
- AR tile reorder snapping back, caused by those duplicate tiles.
- Tiles could not be dropped into empty rows, because empty rows were not drawn in reorder mode.
- A new competency tile had no drag handle, caused by the same duplicate entries.
- Player order from the teamsheet was ignored in the disciplinary listing and the substitution sheet.
[26.2] - 2026-02-04 (TestFlight Build 61)
Added
- Per-official competency timeline in exports. Each official's section now includes a timeline of competencies with event times.
- Export loading indicator, shown while the share sheet initialises.
- Quick Add test match. Long-press the + button on the match list to create a test match instantly.
Changed
- Tidier stoppage time format. Additional time now reads 90+03:30 rather than 90:00+03:30.
[26.2] - 2026-01-22 (TestFlight Build 58)
Changed
- Manual team and competition entry. Dropdowns replaced with free text fields.
- Team badges now show initials instead of logos.
[26.2] - 2026-01-18 (TestFlight Build 57)
Added
- Match Events tile in the debrief and half-time summary, showing goals, cards and repeat offenders.
- Stoppage event logging. Pressing the stoppage button now logs a Stoppage event automatically.
Changed
- Header toolbar tidy, with an improved layout and consistent colours.
[26.2] - 2026-01-17 (TestFlight Build 56)
Added
- Stoppage alert flash. The navigation bar flashes red after 10 seconds of stoppage tracking.
- Whistle Tone competency, for evaluating referee whistle technique.
Fixed
- Critical battery drain caused by high CPU use while sin bin timers were running.
[26.2] - 2026-01-17 (TestFlight Build 53)
Added
- Quick goal entry. A new toolbar button for one-tap goal recording.
- Polarity filter in the Match Debrief, available after selecting an official or competency.
Changed
- Redesigned the official summary box in the debrief into a compact horizontal layout.
[26.2] - 2026-01-16 (TestFlight Build 52)
Added
- Per-template tile colours. Customise the frame, text and fill colour of any competency tile.
Fixed
- The colour picker opened black on the first attempt.
- Tiles disappeared after cross-row moves.
- Official selection badges were cut off in landscape.
[26.2] - 2026-01-15 (TestFlight Build 49)
Added
- Disciplinary code abbreviations. Codes now display customisable abbreviations.
[26.2] - 2026-01-15 (TestFlight Build 48)
Added
- Flag events from the recent events strip. Tap the flag icon to mark an event for discussion.
Fixed
- Default polarity when adding events.
- Timer cropping on the iPhone game screen.
[26.2] - 2026-01-11 (TestFlight Build 44)
Added
- Unified full-screen event editor. All event editing now uses one consistent full-screen interface.
- Layout Preview Editor. A full-screen simulator in Settings for configuring tile layouts.
- Load Layout mid-game. Apply a different layout template while a match is in progress.
[25.51.1] - 2026-01-02 (TestFlight Build 37)
Added
- Extended event timing options. Pre-Game, Half Time, ET Half Time and Post-Game are now available in the half picker.
- Photo attachment when creating events.
[25.51.1] - 2026-01-02 (TestFlight Build 36)
Added
- Photo attachment for events, during logging or editing.
- Stoppage time tracking, for time lost to injuries, substitutions and other delays.
- Field of Play markup for events. Attach pitch diagrams to individual events.
- Penalty shootout tracking. Full support for matches that go to penalties after extra time.
[25.51.1] - 2025-12-31 (TestFlight Build 27)
Added
- Player Events Card. Track goals, cards and substitutions on Match Overview.
- Field of Play diagram. An interactive pitch for the debrief, with drawing tools.
- Live score tracking, with the score shown in the header.
- Sin bin timer. A 10-minute countdown for temporary suspensions.
- Competency tile hiding. Long-press to hide tiles, and save the result as a reusable layout template.
Happy New Year, may the ball run kindly for you in 2026!
[25.49.1] - 2025-12-03 (TestFlight Build 1)
Added
- First TestFlight release.
- Complete match logging workflow with a real-time timer.
- Match debrief view, with filtering by official, competency, polarity and half.
- Export to Markdown and CSV via the iOS share sheet.
- Team picker with 8,000+ teams from major leagues worldwide.
