What's New

Small Ball is in beta — here's what's been added and fixed recently.

October 19, 2026

New

  • "View roster" page for coaches

    Coaches get a clean, printable roster page per team — player name, number, emergency contact, and medical notes, all in one place, easy to scan before a game.

  • Tap a player on your roster for their full contact card

    Coaches can tap any player on their team roster to pop up a card with parent contact info and medical notes (decrypted, and deduped so a parent linked more than once doesn't show up twice). The roster table itself now also shows each player's primary guardian and phone right inline.

Fixed

  • "Pay for everyone at once" could show the wrong family's kids

    That bundle option on the payment page now only ever includes players you're actually a guardian of — never another family's child who happened to be registered by the same program admin.

October 18, 2026

New

  • Sign-Up Sheets

    Coaches and parents can now claim open volunteer slots on a sign-up sheet themselves — no more back-and-forth with an admin. Admins can build a sheet, preview it before publishing, filter slots by location, bulk-update which teams are assigned per slot at a location, add a one-off slot, assign a slot straight to a coach, and fix slot times that came in wrong from an Excel upload.

  • Email coaches directly from the Coaches channel

    Posting in the league/program admins + coaches channel now offers an "email also" option, so an urgent update (e.g. a weather cancellation) reaches every coach even if they've turned off standard notifications.

  • Home page shows every active season and its upcoming games

    The public home page now lists all of a league's active seasons with their upcoming games, instead of just the one most recent season.

October 15, 2026

Fixed

  • Opening a message channel now scrolls straight to the latest message

    Switching channels could leave you scrolled partway up, or scroll the wrong pane on mobile. Opening a channel now reliably lands on the newest message.

  • The on-screen keyboard no longer closes at the wrong moment while scrolling a message thread

    Scrolling through a conversation could unexpectedly dismiss the keyboard mid-type. It now only dismisses when you actually touch the thread.

October 14, 2026

New

  • Dashboard stat tiles are now tappable

    Tap a stat tile on the Dashboard (e.g. player count, upcoming games) to jump straight to the relevant page.

Fixed

  • Floating tab bar no longer covers the message box

    On phone, the bottom tab bar could sit on top of the message composer, blocking the send button. The composer now sits above it.

  • Pending co-guardian/coach invites now link up no matter how you sign up

    An invite tied to your email used to only get linked to your account if you signed up with a password. It now links up the same way if you sign up with Google or Apple instead.

October 13, 2026

New

  • Edit your own name from the Account page

  • "Contact us" note on the FAQs and How Do I pages

Fixed

  • Changing your contact email no longer locks you out of your own account

    Guardians editing their own email address could accidentally lose access tied to that account. Editing your email now keeps your account access intact.

October 12, 2026

New

  • Team rosters stay hidden until finalized

    A team's roster is now hidden from parents, coaches, and the public page until an admin finalizes it, instead of showing a half-settled list while assignments are still shuffling.

  • Public team pages show real player counts

    A team's public page now shows its actual player count, with a "Not finalized" flag while the roster is still being settled.

  • Sign in with Apple

    You can now create an account or sign in with Apple, same as the existing Google option — no password needed.

  • Finalize rosters: preview, add a note, and coaches get emailed too

    "Finalize rosters" now opens a confirmation popup first, showing the exact email that'll go out before anything sends — with an optional note field (e.g. practice times) included in every email in the batch. Each affected team's coaches now get their own "your roster is final" email too, not just parents.

  • Teams You Coach section on the Dashboard

    Anyone assigned as a team's coach now sees a "Teams You Coach" section right on the Dashboard — league, division, player count, and a direct link to manage that roster — alongside Your Players and Leagues & Programs You Manage.

  • Privacy Policy now notes medical notes are encrypted

    The Privacy Policy's "What we collect" section now specifically notes that medical notes are encrypted at rest, on top of standard database security.

Fixed

  • "Teams You Coach" card no longer overflows on mobile, and shows the sport

October 8, 2026

New

  • Phone navigation moved into a menu

    On phone, the long row of header links (Dashboard, My Players, Messages, and the rest) is now a single menu button next to the logo instead of wrapping across several lines. Parents also get a floating Dashboard/Schedule/My Players/Messages tab bar at the bottom of the screen for quick switching.

  • Dashboard: a real home page

    Signing in (or just opening the app) no longer shows the marketing pitch — you land straight on a new Dashboard. It shows your active players and their programs/teams, with a one-tap message icon on each, plus a combined upcoming-games schedule across every player. A new "Schedule" page shows the full combined schedule, not just a preview. Anyone who runs a league or program sees those listed on the same Dashboard too.

  • Favorite, hide, and sort channels on Messages

    Star a channel to pin it to its own section at the top of the list. Hide a channel you don't need cluttering the list (it still notifies you and counts toward unread — hiding only changes what shows) with a collapsed "Hidden channels" section to unhide it later. Every section now sorts by most recent activity instead of alphabetically.

Fixed

  • Long program/team names could run off the edge of the screen

    A long name next to its sport badge (e.g. "Beverly Cadets Boys Youth Basketball") could push content past the edge of the screen on the native app — including the message button on a Dashboard registration card. Long names now wrap to a second line instead.

  • Refund email didn't distinguish cash/check from online

    The refund-confirmation email always said to expect a few business days for it to appear, depending on your bank or card issuer — accurate for a real online refund, but misleading for a cash/check refund that was already handled directly with the program. It now says the right thing for each.

  • Sport shown when you manage two same-named programs

    The "Register a player with a program you manage" dropdown only showed each program's name, so an admin running two identically-named programs under different sports (e.g. two "Beverly Cadets" leagues) had no way to tell them apart. Each option now shows its sport too.

October 7, 2026

New

  • Delete your account

    A new "My Account" link in the header (replacing the old "Signed in as..." text) shows your name and email, with an option to permanently delete your account. Deleting scrubs your login info — name, email, password — but leaves each league's own records (registrations, rosters, payment history) untouched, same as your leagues keep their own data independent of your personal account. Blocked if you're the sole owner of a league or program, so it can't be orphaned.

  • Teams can have multiple coaches, each labeled Head or Assistant

    A team can now have as many coaches as you want, each tagged Head Coach or Assistant Coach. Add one directly by email (with an optional name, shown right away even before they've signed in) and set anyone's role from a dropdown — or still invite by link. This replaces the old single "Coach name"/"Coach email" fields entirely; wherever a team's coach was shown (its own page, My Teams, the public league page) now reflects the new coaches list.

Fixed

  • Payment reminders could double-count a parent's balance

    A parent linked to a player through more than one Guardian record (one per league they're active in, plus a leagueless one) had their unpaid registrations listed — and summed — once per duplicate record, both in the actual reminder email and its preview on the Payments page. Each registration now only counts once per parent.

  • Custom registration questions now get their own CSV column

    Exporting Registrations used to jam every custom-field answer into one "Custom field responses" cell (label: value; label: value...), hard to read or sort in a spreadsheet. Each distinct question now gets its own column, built from whatever questions actually appear in the export.

October 6, 2026

New

  • See who's in a message channel

    The "Visible to..." line under a channel's name is now a link — click it to see exactly who's in that channel right now, by name, instead of just the abstract rule.

  • Edit a season's dates after creating it

    Each season on Seasons & Divisions now has an Edit button to update its name, start date, or end date in place — previously the only way was creating it correctly the first time.

  • Finalize rosters before emailing parents a team assignment

    Assigning (or reassigning) a player to a team no longer emails their parents — shuffle freely while building rosters. A new "Finalize rosters" button on the Teams page (league and program) emails every parent whose player has a team once you're ready, and only re-announces whoever's changed if you reshuffle and finalize again later.

  • Registration detail page

    Click a player's name on the Registrations page (league or program) to see the full picture in one place: division, season, team, fee, jersey #, payment history, every linked guardian, health and emergency contact info, and the player's complete registration-form answers — instead of hunting across the row and a collapsed "N responses" toggle.

  • Filter the Registrations table, jump straight to a division's players

    The Registrations page (league and program) can now be filtered by player, guardian, division, team, shirt size, fee, or status, in any combination — the filtered view is bookmarkable via the URL. Clicking the "N registered" count on a division's row now takes you straight to its registrations, pre-filtered.

Fixed

  • Push notification setup steps missing on unsupported browsers

    The "How do I turn this on?" instructions for enabling push notifications disappeared entirely on a browser that doesn't support push yet (like iOS Safari before the site's added to the home screen) — exactly when they're needed most. They now stay visible; only the Enable button itself is swapped for a status message.

  • Division registration count could link to an empty page

    Clicking a division's "N registered" count on the league Divisions page always linked to the league's own Registrations page, which only shows league-direct signups — if all of a division's registrants came through a Program, that link landed on "No registrations match these filters." It now links wherever those registrations actually live: straight through for a single source, or a breakdown by program when they're split across more than one.

  • "Check for mismatches" could flag registrations that already fit

    The age/grade mismatch scan on a league's Divisions page measured age as of today instead of when the registration was made, so a birthday passing since sign-up could get a perfectly fine registration flagged for no real reason. Its "needs manual review" message also always blamed "no single matching division found," even when that wasn't the actual problem — it now names the real reason (no match, more than one match, or why the move itself failed).

October 5, 2026

Fixed

  • A second guardian couldn't pay for a shared registration

    Pay now, online checkout, paying in person, and "pay for everyone at once" all only recognized whichever parent actually submitted the registration — a co-guardian linked to the same player got "Not authorized," even though My Account correctly showed them the registration and a Pay now link. Either guardian can now pay and manage it.

October 1, 2026

New

  • Forgot your password?

    The sign-in page now has a "Forgot password?" link. Enter your email, get a reset link (good for 1 hour), and set a new password — works whether you're a parent, coach, or admin. A Google-only account doesn't get a reset email, since there's no password to reset there.

September 30, 2026

New

  • Admins get emailed when someone registers

    Every new registration — whether a parent signs up or an admin enters one directly — now emails the league's (or program's) OWNER/ADMIN members, so you don't have to keep checking the Registrations page to see who's signed up.

  • Division fixes after a birth date or grade correction

    When a parent corrects a player's birth date or grade after registering, Small Ball now re-checks their divisions. If the player no longer fits, the parent sees it on My players: they can move themselves in one click when nothing else is affected (no team yet, registration open, room in the new division, same fee), otherwise it goes to a new "Division changes" section on the Registrations page for an admin to approve or keep as-is. Moves email the parents and admins, and the old team's coach if the player came off a roster. Leagues and programs can also lock birth date and grade after payment, so any change waits for admin approval.

Fixed

  • Registration confirmation always showed a baseball

    The "You're registered!" page's icon was hardcoded to a baseball regardless of the league's actual sport — it now shows the right one (⚽ soccer, 🏀 basketball, 🏈 football, and so on).

  • Mobile polish for the message composer

    Tapping the message box no longer zooms the whole page in on iPhone, and the empty box no longer renders too short before you start typing.

September 29, 2026

New

  • Message composer supports multi-line messages

    The message box is now a proper multi-line text area: Return adds a line break instead of sending (Cmd/Ctrl+Return still sends), long messages wrap inside the bubble instead of running off as one line, and on mobile the box stays pinned right above the on-screen keyboard instead of leaving a gap below it.

September 18, 2026

New

  • Parent-only accounts land on My Players after signing in

    Signing in used to always land on "My Leagues & Programs" — an empty, confusing starting point for a parent who isn't managing any league or program. A parent-only account now lands on My Players instead; "My Leagues & Programs" in the nav still works normally if you ever do want to start a league.

September 4, 2026

New

  • Post-registration checklist (forms, equipment)

    A new "Checklist" page for leagues and programs tracks things that come up after a player registers — physical forms turned in, birth certificate provided, equipment issued (and returned at season end, for gear that needs it back). Informational only — nothing here blocks registration or payment. Coaches and admins can add items, and click any player's cell to set a status and a note.

  • Public homepages for programs and teams

    Programs and teams now each get their own shareable public page — a program's shows its open seasons/divisions and teams with a Register button, a team's shows its roster, schedule, and sponsor. League/program admins and team coaches can add a banner image, an about blurb, and a few links from their settings page. A team's public roster only ever shows player name and jersey number — nothing else.

  • Email when you're added as a guardian

    Adding a co-guardian by email — from My players, during registration, or when adding a player without a league — now sends that person an email if they don't already have a Small Ball account, letting them know who added them and for which player, with a link to create their account. Someone who already has an account still gets access immediately with no email needed.

  • Messages look like a real text thread now

    Channel conversations got a redesign: initials avatar next to each person's messages (none for your own), consecutive messages from the same person stacked together instead of repeating the name/time on every bubble, a day divider between dates, and softer, rounder bubbles.

  • League Overview: payment alert can be dismissed, new teams-by-division chart

    The "Payments aren't set up yet" notice now has a dismiss button, and the same notice appears on the Payments page too until Stripe is connected. "Registered players" is now "Registered programs"; the old "Teams" tile is replaced by a small bar chart showing team count per division. A "Programs" link was added to the quick-links section.

September 3, 2026

New

  • Auto-fix players left mismatched after a division rule changes

    Adding or tightening a division's age/grade rule after players already registered could leave some of them no longer fitting their own division, with no easy way to find them. Each division on Seasons & Divisions now has a "Check for mismatched players" link that finds anyone who no longer qualifies and moves them to whichever other division in the season actually fits — reporting how many were fixed and how many need a manual look (when there's no single clear match). Never touches a player placed there intentionally via the age/grade override.

  • Admin override for a division's age/grade rule

    A program/league admin can now place a player in a division outside its normal age/grade range on purpose — playing up for skill level, filling a roster, etc. An "Override age/grade restriction" checkbox shows up for admins entering a paper registration, and moving an already-registered player to a new division (on the Registrations page) now offers to override and retry if the move would otherwise be blocked. Only ever available to an actual admin of that league/program; capacity limits still apply either way.

  • Pay for multiple players in one checkout

    Registering more than one kid in the same program (or directly with the same league)? The payment page now offers a "Pay for everyone at once" option that combines every still-pending registration into a single online checkout instead of paying for each one separately. If you haven't added the other player yet, you'll be nudged to do that first so you can pay together. Refunding one player's share only returns their portion — the other player's payment is untouched.

September 2, 2026

New

  • Push notifications replace email for messages

    "Enable push notifications" on the Messages page turns on real, near-instant notifications for new messages on this device. Email alerts for messages have been removed entirely in favor of push, so channels stay quiet instead of piling up in your inbox — the same per-channel mute settings (now labeled "push notifications" for clarity) control it. A "How do I turn this on?" guide covers the iPhone (Add to Home Screen first) and Android setup steps.

  • Files page for leagues and programs

    A new "Files" page lets admins upload and share documents — handbooks, waivers, roster exports — with their own admin team. Only admins of that league or program can see them. Up to 10MB per file.

August 31, 2026

New

  • Channel email alerts are now off by default

    To cut down on spam, a message channel no longer emails you unless you've explicitly turned it on — the reverse of before. Use "Mute All Channel Email Alerts" on the Messages page (or the toggle inside any channel) to opt back in wherever you want them.

August 27, 2026

New

  • Payments page shows one row per player

    The Payments page now shows a single, current-status row per registration instead of one row per payment attempt — repeated online checkout retries or a refund-then-restore no longer leave duplicate rows behind. Each row still gets whatever action fits its current state: mark as received, cancel an abandoned checkout, refund, or restore.

August 26, 2026

New

  • Remove a guardian from a player

    On My players, each parent/guardian now has a "Remove" link alongside "Edit" — handy for cleaning up a duplicate or mistaken entry. A player always keeps at least one guardian, so the last one can't be removed.

  • Mute all message channels at once

    The Messages page now has a "Mute all channels" link that turns off email alerts for every channel you belong to in one click — handy if you're on many leagues, programs, or teams and don't want to mute each one by hand. Click it again to turn emails back on everywhere, or re-enable just a few: any muted channel in the list now shows its own quick "Unmute" link, no need to open it first.

  • Help menu with How Do I... and FAQs

    A new "Help" menu in the top nav links to step-by-step answers for common admin tasks ("How Do I...") and plain-language explanations of Small Ball's concepts ("FAQs") — what a League vs. a Program is, how fees work, registration statuses, and more.

  • Edit a guardian's contact info

    Fix a mistyped guardian name, email, or phone number without re-registering the player. Admins get an "Edit" link on each registration's Guardian column; parents get the same on My players, next to each parent/guardian listed. Correcting the email re-links the guardian to the right Small Ball account automatically, same as adding one fresh.

Fixed

  • Retrying online payment no longer piles up pending charges

    Clicking "Pay online now" again after an abandoned checkout now supersedes the earlier attempt instead of leaving it behind as a stray pending row — the old Stripe session is expired and marked failed automatically. Admins can also clear an already-stuck pending online payment by hand from the Payments page with the new "Cancel abandoned checkout" link.

August 25, 2026

New

  • One coach email field, with automatic linking

    Adding a coach to a team now asks for their email just once. If they already have a Small Ball account, they're linked immediately; if not, it's remembered and they're automatically tied to the coach position the moment they sign up with that email — no separate "Assign" step needed. The generate-invite-link option is still there as an alternative.

  • Set one address for all fields at once

    On a Fields page, "Set one address for all fields" applies a single address to every field in the list in one step, instead of editing each one individually.

  • Shared Fields list per program/league

    Home fields (e.g. "Field 1 at Memorial Park") are now managed once from a new "Fields" page per program (or per league, for a league with no programs) — every team can pick from that same shared list no matter which division it's in, instead of re-adding the same field for every division. Switching a team's division no longer clears its field selection either.

  • Registration form builder tweaks

    Guardian info now sits above your custom questions in the form builder, so a long waiver no longer buries the parent fields below it. Long question text also collapses with a "Show more" toggle instead of stretching the row, and the custom-questions section is now labeled "Custom Form Fields".

  • Drag-and-drop registration form builder

    League and program admins can now fully customize their registration form: reorder fields, hide the ones you don't need, and add your own questions (short answer, paragraph, dropdown, multiple choice, checkboxes, date, number, or a waiver-style agreement). Leagues without a program can now add custom questions too. Switching to the builder is opt-in — leave it off and your form stays exactly as it is today.

  • Program cards on the public league page are now clickable

    Each program listed on a league's public home page now links to that program's registration page.

  • Cleaner Messages channels for league admins

    League admins no longer get an individual chat channel for every single program in the league (unmanageable for a large league, and not something you should be messaging into if you don't run it). You now get exactly 3 admin-tier channels per league — Admins, Program Admins, and Program Coaches — plus individual channels only for programs/teams you personally run.

August 24, 2026

New

  • Sport shown on each Messages channel

    Every channel in Messages now shows its sport as a badge — useful if you run two programs with the same name (e.g. two "Beverly Cadets", one baseball, one football).

  • Messages is now real group chat

    Messages rebuilt from one-off broadcasts into persistent group channels — League Admins, Program Admins, and one for every program/team you belong to — that anyone in the group can post into, like a normal group chat. Join a program or get put on a team and you get that channel automatically, with full history; leave and it's gone from your view. Email notifications are now a per-channel mute, not all-or-nothing.

Fixed

  • Deleted league/program/team could still show a channel in Messages

    Navigating to Messages via a link shortly after deleting a league, program, or team (or removing a member) could still show its channel until a hard reload — the underlying data was already gone, but the page wasn't told to refresh. Fixed.

August 23, 2026

New

  • Export uniform orders

    The Teams page now has an Export CSV button — one row per rostered player with team name, player name, shirt/pant size, jersey number, team color, sponsor, and sponsor logo URL.

August 22, 2026

New

  • Export payments to CSV

    The Payments page now has an Export CSV button, same as Registrations — opens directly in Excel with player, division, amount, platform fee, method, status, date, and guardian email.

  • New navy accent color

    Buttons, links, and status badges switched from green to navy blue.

  • Payment method shown on Registrations

    The Status column now shows Online/Cash/Check under a paid registration's status.

  • Move a registration to a different division

    The Registrations table's Division column is now editable — pick a different division in the same season to correct a mis-registered player. Re-checks them against the new division's age/grade rule and capacity first, and reassigns their team since the old one belongs to the old division.

  • Nudge toward Teams after setting up divisions

    A new program's Seasons & Divisions page now points you to Teams next once your divisions are set up, the same next-step pattern already on the Overview page.

  • A real logo

    The ⚾ emoji in the header is now the actual Small Ball wordmark and mark.

  • Clickable Overview stat tiles

    The Registered players / Teams / Total registrations / Fees collected tiles on a Program or League's Overview page now link straight to that page instead of being decorative.

Fixed

  • Program payments showing up on the platform's own Stripe dashboard

    Registration fees were charged as destination charges on the platform's own Stripe account, so every league/program payment showed up there too. Charges are now made directly on the receiving league/program's own connected account, so they only appear on that account's dashboard from now on.

  • Confusing admin-entry message for a parent registering their own kid

    The registration form told any league/program admin to enter "the parent's" info, not their own — confusing when they're registering their own kid through their own link. Now clarifies that case and disappears once an existing player is picked.

  • Guardian fields blank when entering an existing player

    When an admin entering a paper registration picked one of their own existing players, the guardian fields stayed blank and required — even though that player already has them as a guardian on file. Now prefills automatically.

  • Registration fields moved next to Registrations

    It was sitting between Seasons & Divisions and Teams in the sidebar — moved after Registrations, with the rest of the registration-related pages.

  • Payment reminders only reached one guardian per player

    A player with two guardians on file only had one of them counted and emailed — the other never knew a payment reminder existed. Reminders (and the Payments page's recipient list) now reach every guardian on the registration.

August 21, 2026

New

  • Payment reminder emails

    "Send payment reminders" on a program's Payments page now actually emails each parent with an unpaid balance — one email per parent summarizing every kid they owe for, with a link back to their account to pay.

  • Mobile-friendly League admin layout

    The same mobile layout that shipped for Program admin pages now covers League admin pages too: a compact header with a menu button and workspace switcher, and a bottom tab bar for Overview/Teams/Registrations/Settings. Desktop is unchanged.

  • Mobile-friendly Program admin layout

    On phone-sized screens, a program's admin pages now use a proper mobile layout instead of a stacked sidebar: a compact header with a menu button and a workspace switcher to jump between your other leagues/programs, and a bottom tab bar for Overview/Teams/Registrations/Settings. Desktop is unchanged.

  • Messaging

    A new "Messages" inbox (with an unread badge in the header) for everyone. Leagues can message their league admins, program owners/admins, and parents from a new Messages page; programs can message their admins, coaches, and parents; team coaches can message their own team's parents from the team page; platform admins can broadcast to everyone or one league from /owner/messages. Every message also sends an email notification.

  • Delete a scheduled game

    A "Delete" option next to each game on a league's Schedule page removes it for good — no games need to be removed manually anymore to clear a team or program for deletion.

  • Delete a team

    A "Delete" option on the Teams page removes a team for good, as long as it has no players assigned and no games scheduled — remove those first. Useful for clearing out an empty program before deleting the program itself.

  • Delete a program

    A program owner can now permanently delete their program from a new "Danger zone" on Program settings, typing the program's name to confirm. Only possible while it has no teams or registrations — remove those first. For an independent program, this also cleans up the hidden league created behind the scenes for it.

  • Custom registration fields per program

    Programs can now add their own questions to their registration form — text, dropdown, or checkbox (e.g. a waiver, with the full text shown and a required "I agree") — from a new "Registration fields" page. Live immediately on the program's registration link, so opening that link is the preview.

  • Pant size and emergency contact relationship

    Player registration now also captures pant size (same sizing as shirt size) and how the emergency contact is related to the player — available when registering, adding a player, or editing a player's info afterward.

Fixed

  • Payment reminders could report success without sending anything

    If the email provider wasn't configured, sending failed silently instead of showing an error — "Send payment reminders" (and other emails) could say a reminder went out when nothing actually reached Resend. A misconfigured or failing send now surfaces as a real error instead of a false success.

  • Existing-players picker missing for league/program owners

    A later change (admin paper registration) accidentally hid the "register one of your existing players" picker any time the signed-in user administered the league or program — including when they were simply registering their own kid through their own link. It's back regardless of admin status; only the guardian fields still default blank for admin entries.

August 20, 2026

New

  • Sign in with Google, and email verification

    You can now create an account or sign in with Google, no password needed. Accounts created with a password now get a verification email — a banner shows until you confirm it, with a resend option if it doesn't arrive. Existing accounts are unaffected and already count as verified.

August 19, 2026

Fixed

  • Signing out sent you to the wrong domain

    Now that Small Ball is reachable from more than one domain, signing out always landed you back on the original vercel.app URL no matter which one you started on. Sign out now keeps you on whichever domain you were actually using.

August 12, 2026

New

  • Add non-game events to a team's schedule

    Program owners and league admins can now add events like picture day or a team party to a team's Schedule from the team's own page — no game required. Events show alongside games on the team page, the parent/coach view, and My Teams, each marked with an "Event" badge.

August 8, 2026

New

  • Calendar view on My Teams

    A "List / Calendar" toggle on My Teams shows every one of your players' games, across all their teams, on one month-by-month calendar — each game color-coded by team and linking to that team's page. Switch months with Prev/Next.

  • Export a schedule for GameChanger

    A league or independent program's Schedule page now has an "Export for GameChanger" button that downloads a CSV in GameChanger's own import format (date, time, home, away, location, duration), ready to drop straight into their schedule importer. Each division now has an editable game duration (defaults to 60 minutes) used for the exported duration column.

  • Admins can enter paper registrations for a parent

    Visiting a registration link while signed in as a league/program admin now clears the guardian fields instead of prefilling your own info, with a note that you're entering it on the parent's behalf. The player is tied to whatever email you enter, not your account — and if that parent later creates a Small Ball account with the same email, this registration automatically shows up for them. The Registrations page now flags a guardian who doesn't have an account yet.

  • League name shown on program pages

    A program's sidebar now shows its league's name right under the program name, or "Independent program" if it isn't part of one, so it's always clear which kind you're managing.

  • My Leagues and My Programs merged into one page

    Both pages showed the same leagues-you-administer and programs-you're-part-of information, just organized differently. They're now a single "Your leagues & programs" page under one nav link.

  • Pending payments banner links to Payments

    The "N registrations pending payment" notice on a league or program's overview page now links straight to its Payments page.

  • Color-coded sport badges on My Leagues and My Programs

    Each league/program now shows its sport as a colored pill (baseball blue, football green, and so on) instead of plain text, so you can scan a long list at a glance.

  • Registration auto-picks the right division

    As soon as a player's date of birth or grade is entered (or an existing player is selected), registration jumps straight to the one division that actually matches their age or grade, instead of leaving it on whatever was picked first. Grade is now required during registration so grade-based divisions can always be matched.

  • Delete a division

    A "Delete" option on a league's Seasons & Divisions page permanently removes a division, as long as it has no teams or registered players yet.

Fixed

  • Game times could save several hours off

    Scheduling or editing a game's date/time sent it to the server as a plain, timezone-less value, which got interpreted in the server's own timezone instead of yours — a game entered for 6:00 PM could save (and display) as 2:00 PM. Game times are now converted to an exact moment in time before saving, so they show correctly regardless of server timezone. Games created before this fix may still have the wrong time saved — re-open and re-save each affected game's date/time to correct it.

  • Restoring a registration didn't re-assign a team

    Cancelling or refunding a registration clears its team, but restoring it left the player unassigned even in a division with auto-assign on — you had to go re-run "Assign now" by hand. Restoring now re-assigns a team automatically when auto-assign is on.

  • League page showed "Free" for divisions the league doesn't charge for

    When a league doesn't collect its own fee and leaves that to its programs instead, its public page no longer labels every division "Free" — the price is only shown once a fee's actually been entered on the division.

August 7, 2026

New

  • Age cutoff date and grade-based divisions

    Divisions now support three ways to determine eligibility: an age range as of today (as before), an age range as of a fixed cutoff date (the standard "age as of a set date" rule), or a school grade range instead of age at all — handy for combined-grade divisions. Set it when adding a division; players now have an optional grade field too.

Fixed

  • Max age/grade could be left blank on a new division

    A division with no upper age or grade bound was easy to create by accident. Max age is now required for the two age-based eligibility modes, and max grade is now required for grade-based divisions.

  • Due dates and birth dates showing a day early

    Payment due dates, dates of birth, season dates, and division age-cutoff dates could display one calendar day earlier than what was actually entered, depending on your timezone. They now always show the exact date on file.

August 5, 2026

New

  • Delete a player from My Players

    Permanently remove a player you added, as long as they're not currently registered in any program — a "Delete" button shows up next to Edit, disabled with an explanation if they still have an active registration somewhere.

  • Privacy Policy

    A plain-language Privacy Policy page (linked in the footer and on sign-up) explaining what data Small Ball collects, who can see it — including that platform admins can access data across the platform for support — and how to request deletion.

  • Platform owner dashboard

    A new "Platform" page (visible only to platform admins) shows every league and program on Small Ball at a glance — counts, total revenue collected, platform fees earned, and Stripe Connect status, with a full listing to drill into any of them.

  • Refund an online payment directly from Small Ball

    "Refund via Stripe" issues a real refund straight from the app for card payments — the money returns to the parent's card and comes back out of the league/program's own Stripe balance. Cash/check payments still use "Mark refunded" for bookkeeping.

  • Auto-assign teams for a division

    Turn on "Auto-assign teams" on a division (once it has at least one team) and every new registration gets put on a team automatically — spread evenly round-robin if there's more than one team, or straight onto the one team if there's only one. Available both on a league's Seasons & Divisions page and on a program's own Divisions & fees page.

  • Add a player without joining any league

    "My players" now has an "Add a player" button that creates a player tied to your account directly — no league, program, season, or registration link needed. Register them anywhere later using the "one of your existing players" option.

  • Add a player without registering for a season yet

    A registration link can now be shared before a season is even open — parents can create their player's profile and add themselves as guardian, then come back to register for a season/division once it's ready.

  • Register an existing player in a different league

    A player is no longer tied to just one league — registering the same kid somewhere new (e.g. a different sport's league) now offers a "use one of your existing players" option instead of creating a duplicate profile. My Players now shows one card per player with every league/program they're registered in underneath.

  • Registration codes for programs

    In a league with multiple programs, parents now need a registration link or a short program code to register — no more picking freely from every program in the league.

  • Guardian email on Registrations

    Each row now shows the parent's name and email — handy for adding them as a program admin.

  • Online card payments

    Parents can now pay registration fees by card at checkout. Still in test mode during beta — no real charges are made yet.

Fixed

  • Restoring a refunded registration still showed "Refunded" on Payments

    The Payments page only ever showed that specific payment's own status, so a restored registration still looked stuck as refunded even though it was correctly back to pending payment. It now shows the registration's current status alongside the payment's history.

  • Card processing fees billed to the platform instead of the league/program

    Online card payments now correctly bill Stripe's processing fee to the receiving league or program's own connected account, instead of the platform account absorbing it on every transaction.

  • Auto-assign teams didn't apply to already-registered players

    Turning on auto-assign teams now immediately assigns anyone who registered before it was enabled, and an "Assign now" link lets you re-run it anytime — handy after adding a new team.

  • Parents/guardians listed twice on My Players

    A player registered in a league after being added without one could show the same parent twice. Each league/program name on a registration is now also a link to that league's page.

  • Restoring a refunded registration wrongly showed it as paid

    Restore now puts a refunded registration back to pending payment instead of claiming the (actually refunded) fee is paid again.

August 4, 2026

New

  • Permanently delete cancelled registrations

    Clean up test or duplicate entries for good — only available once a registration is already cancelled or refunded.

  • Team pages for parents

    Click a team from My Teams to see its full roster, schedule, coach, and home field.

  • Payment due dates for league divisions

    Set a due date per division (and apply one to every division in a season at once) — previously only available for programs.

  • Uniform numbers

    Coaches and admins can set each player's jersey number once rosters are finalized, from the team page.

  • Team roster & schedule page

    Click a team's name from the Teams list to see its full roster and upcoming games.

  • Mark a payment refunded

    Record that a payment was refunded outside the app, with a one-click way to undo it if it was a mistake.

  • Sport shown on league and program lists

    My Leagues, My Programs, and My Teams now show which sport each one is.

  • Quick remove for unused divisions

    Remove a division from a program in one click when it has no teams or registrations yet.

  • Payment reminder preview

    See who still owes a fee and how much, from a program's Payments page.

  • Shirt size on registration

    Captured during registration and editable anytime from a player's profile.

  • Role explanations on invites

    Owner, Admin, and Coach roles are now explained right where you add or invite someone.

Fixed

  • Program name missing from registration links

    A registration link for a specific program only showed the league name — the program name is now shown prominently at the top of the page.

  • Admin pages unusable on phones held vertically

    The sidebar and top navigation were squeezed into a sliver on narrow screens — both now stack properly on mobile.

  • Cancelled registrations could still show a team assigned

    Removing a player from a team now clears the assignment properly, and a Restore option brings a removed or refunded registration back to Paid.

August 3, 2026

New

  • Team sponsors and home fields

    Capture a sponsor's name, colors, and logo, plus one or more home fields per team.

  • Standalone programs

    Run a single program on its own, without needing to set up a separate league around it.

  • Invite links

    Invite program admins and team coaches by shareable link instead of requiring them to already have an account.

  • Remove a player from a program

    Take a player off a program's roster while keeping them in the system, still tied to their parent.

August 2, 2026

New

  • Programs

    Run multiple independently-managed programs under one league, each with its own teams, fees, and payments.

  • Offline payment options

    Accept cash or check for registration fees, with an optional due date and a way to mark payment received.

  • Coach accounts

    Coaches can sign in and manage their own team's roster and results without full admin access.

  • Small Ball launches

    Registration, teams, age divisions, fee payments, and game scheduling for youth sports leagues.