What's new

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

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.