What's New

The latest features and improvements shipped to Picklebeast.

April 2026
Apr 30, 2026 Leagues
League Sub Pool — Lock In Substitutes Before Game Day
A per-league pool of potential substitutes managed directly by the organizer. Search club members or add free-form contacts (no Picklebeast account required). Queue swaps for any combination of weeks — including weeks whose matches haven't been generated yet — and the substitute is auto-applied when the session runs.
  • Add contacts via club-member search (privacy-scoped to the club's active membership) or by typing a name + email/phone
  • Auto-link to existing Picklebeast accounts when name AND (email OR phone) match — strict to prevent the wrong-person link
  • Phone-based dedupe (digits-only) catches the same person entered with different formatting
  • Queued-swap intents persist before matches exist — per-round rung ladders generate Round 1 with the substitute already in the lineup
  • Multi-week chip selector: pick 1, several, or all weeks in a single confirmation
  • Branded sub-in email + Universal Link 'View Schedule' button (opens the app on mobile, web on desktop)
  • Email preview button — see exactly what the substitute will receive before you confirm the swap
  • Cancel queued swaps from the sub pool index, with a 'sub for X' badge on the rung roster preview for the affected week
  • Push notifications via the existing league_sub_assigned channel when the substitute has the app + push enabled
Learn more →
Apr 28, 2026 Platform
2 Free Events at a Time — Unified Free Tier Pricing
Any user can run up to 2 active small (≤16-player) events at a time for free — leagues or tournaments, any format, any registration mode. The third event charges the platform's standard per-registration fee. Paid Clubs always pay; demo events are excluded.
  • Schedule-driven: the platform owner controls the capacity threshold and the next-tier fee at /platform_owner/fee_schedules — not a hardcoded $5
  • Decoupled from legacy casual restrictions — any league type, any registration mode, public or private, with or without DUPR
  • Tournaments count toward the same 2-cap as leagues (combined active count)
  • Soft cap: the third event is allowed to publish, but every registration is charged the next-tier fee — no hard publish block
  • Stamped at registration time and forward-only — capacity changes mid-season don't retroactively re-bill
  • API: GET /api/v1/me/free_event_slots returns the user's current state for in-app banners
  • AI chat: ask 'is my next league free?' and the AI answers with the user's exact slot count
  • Demo carve-out: any club marked is_demo never enters the free tier (prevents demo data from masking billing)
Learn more →
Apr 25, 2026 Club Admin
Embeddable Leaderboards — Real-Time Standings on Your Website
Drop real-time league and tournament leaderboards onto any club website with one line of code. Branded in your colors. Updates the moment a match score is entered. Free on every plan.
  • Six widget types: league standings, combined leaderboards, tournament brackets, rung ladders, upcoming matches, head-to-head
  • Multiple embeds per club, each independently configured (one for your homepage, one for the leagues page, etc.)
  • Selector UX for multi-entity embeds — tabs, dropdown, sidebar, or auto-rotating carousel
  • Per-embed privacy controls: full name / first initial / first only / opaque (Player 1, Player 2…); hide avatars optional
  • Brand inheritance from your existing ClubEmbedConfig — colors, fonts, logo apply automatically
  • Real-time updates via ActionCable WebSocket + 30s polling fallback for behind-firewall viewers
  • Standalone shareable URL per embed (works in browser tabs, iMessage, Twitter, anywhere)
  • Pause / archive states with optional auto-archive 30 days after a league ends
  • Mobile share button on existing in-app league/tournament screens uses the OS share sheet
  • Free on every tier — no usage limits, no view caps, 'Powered by Picklebeast' footer
Learn more →
Apr 25, 2026 Tournaments
MLP Format — Major League Pickleball Team Tournaments + Leagues
Full Major League Pickleball format support: 4-player teams, men's + women's + 2 mixed sub-matches per matchup, 21-point Dreambreaker on 2-2, organizer-day overrides, and league weekly play. Works across every bracket type (single-elim, double-elim traditional + consolation, round-robin) with no per-bracket configuration.
  • 4-player rosters with gender-aware sub-match generation (Men's Doubles, Women's Doubles, Mixed 1, Mixed 2)
  • Dreambreaker auto-creates as a 5th sub-match the moment teams tie 2-2; first-to-21 with all 8 players
  • Cross-bracket support: single-elim, double-elim (traditional + consolation), round-robin all generate sub-matches automatically when both teams are set
  • League weekly play: team_size=4 division produces MLP matchups every week; playoffs inherit MLP format automatically
  • Organizer-day overrides: Force Finalize, Void Sub-match, Reset Dreambreaker — all require a written reason for the audit trail
  • Mid-tournament substitutions auto-resync sub-match participants to the new roster — no stale references
  • Standings count parent matchups (one win per MLP matchup, not five), DUPR submission targets only the playable sub-matches
  • Roster gap hints on the registration UI: 'needs 1 more woman' instead of generic 'incomplete'
  • Composite indexes on (parent_match_id, mlp_match_type) tuned for the hottest query at 50k scale
  • 120+ specs locking in correctness across services, models, controllers, hardening, and performance
Learn more →
Apr 24, 2026 Mobile App
Mobile Playoff Manager — Run Playoff Day From Your Phone
A tournament director's complete toolkit, now on mobile. Three-tab shell (Now / Divisions / Courts), native score entry, court assignment, per-division designation, and a podium reveal at completion — with ActionCable real-time sync across every connected admin device.
  • Three-tab shell: Now (live + ready + pending queues), Divisions (per-division detail), Courts (venue-wide grid)
  • Native bottom-sheet score entry with dynamic game rows, auto-winner detection, tie rejection, haptic feedback
  • Per-match court picker that honors the division's designated court subset
  • Per-division court designation modal with cross-division conflict detection and real-time claim-map sync
  • Auto-Assign button with diagnostic toast (assigned count · ready · waiting · already on courts)
  • Podium card auto-renders when a division's final match completes — gold / silver / bronze with seeds
  • ActionCable `LeaguePlayoffChannel` pushes match_scored / court_assigned / division_completed / court_designation_changed / venue_updated / match_ready / court_freed events to every admin device
  • Four new admin-only push types: match_ready_overdue (20+ min waiting), division_completed, event_wrapping, score_entered (opt-in)
  • Hourly PlayoffReadyMatchScanJob using a partial index on ready_since_at to flag stuck matches
  • AsyncStorage cache survives airplane-mode transitions; offline banner surfaces cached state
  • JWT auth flows through the existing web mutation endpoints transparently — no shim, no duplicate logic
  • Rolled out behind FeatureDefinition flag `mobile_playoff_manager_v1` with a per-user beta allowlist
Learn more →
Apr 21, 2026 Leagues
Per-Round Rung Ladder — Live Rung Shuffling on League Night
A Mexicano-style variant of the rung ladder format where players reshuffle between rungs after every round on the same night, instead of once per week. Toggle on the league setup form.
  • New 'Rung Movement Mode' setting: Weekly (classic) or Per Round (Mexicano)
  • After every round completes, top half of each rung moves up one rung and bottom half moves down one
  • Next round auto-generates with the new rung composition — no admin action needed
  • Rung positions persist across sessions — end night 1 on Rung 2, start night 2 on Rung 2
  • Optional reset-each-session toggle if the organizer prefers re-seeding every week
  • Partner rotation within a rung avoids consecutive-round repeat pairings
  • Tiebreakers within a round: wins then point differential then head-to-head then prior rung rank
  • Push notification to every affected player when they move up or down
  • Live rung state API endpoint powers mobile live rung ladder screen
  • Bye handling for rungs with fewer than 4 confirmed players that round
  • Backward-compatible: every existing rung ladder defaults to weekly mode, no behavior change
Learn more →
Apr 21, 2026 Platform
Structured Membership Tiers — Every Perk Hits Stripe as Real Dollars
Every membership tier perk now flows through a server-authoritative pricing pipeline that actually reduces the Stripe charge. Nine surfaces, five discount types, five cadences, age + time-of-day eligibility gates, one-time initiation fees, audit-logged grandfathering.
  • Nine billable surfaces covered: court reservations, open play, leagues, tournaments, clinics, coaching lessons, ball machine, guest passes, initiation fees
  • Five discount types: percentage off, fixed off, free, allowance (first N per cadence), free with cap
  • Five cadences: daily, weekly, monthly, quarterly, annually — anchored to the club's clock
  • Eligibility gates enforced server-side: age (COPPA-floored at 13), hours, days of week, locations
  • One-time initiation fees via Stripe Connect — waivable, with configurable reapplication window
  • JSONB schema validator rejects tampered blobs: negative percents, out-of-range values, allowance on non-allowance surfaces, unknown keys
  • Immutable audit log on every tier edit — actor, IP, user agent, full before/after JSON
  • Grandfathering: existing active members keep their original terms until explicit 'Apply to existing members' action
  • Per-club shadow-compare flag runs both legacy and new paths in parallel and logs divergence before flipping
  • Backfill rake task translates legacy fields (court_rate_discount_percent, event_pricing JSONB, free_*_per_month) into structured data — Snovalley skipped by default
  • New league and tournament resolvers route through ClubPricing for the first time — their discounts now actually apply
  • Deterministic perks formatter: structured inputs generate the human-readable perk bullet list
Learn more →
Apr 21, 2026 Platform
Structured Membership Tiers — Every Perk Hits Stripe as Real Dollars
Every membership tier perk now flows through a server-authoritative pricing pipeline that actually reduces the Stripe charge. Nine surfaces, five discount types, five cadences, age + time-of-day eligibility gates, one-time initiation fees, audit-logged grandfathering.
  • Nine billable surfaces covered: court reservations, open play, leagues, tournaments, clinics, coaching lessons, ball machine, guest passes, initiation fees
  • Five discount types: percentage off, fixed off, free, allowance (first N per cadence), free with cap
  • Five cadences: daily, weekly, monthly, quarterly, annually — anchored to the club's clock
  • Eligibility gates enforced server-side: age (COPPA-floored at 13), hours, days of week, locations
  • One-time initiation fees via Stripe Connect — waivable, with configurable reapplication window
  • JSONB schema validator rejects tampered blobs: negative percents, out-of-range values, allowance on non-allowance surfaces, unknown keys
  • Immutable audit log on every tier edit — actor, IP, user agent, full before/after JSON
  • Grandfathering: existing active members keep their original terms until explicit 'Apply to existing members' action
  • Per-club shadow-compare flag runs both legacy and new paths in parallel and logs divergence before flipping
  • Backfill rake task translates legacy fields (court_rate_discount_percent, event_pricing JSONB, free_*_per_month) into structured data — Snovalley skipped by default
  • New league and tournament resolvers route through ClubPricing for the first time — their discounts now actually apply
  • Deterministic perks formatter: structured inputs generate the human-readable perk bullet list
Learn more →
Apr 21, 2026 Platform
Structured Membership Tiers — Every Perk Hits Stripe as Real Dollars
Every membership tier perk now flows through a server-authoritative pricing pipeline that actually reduces the Stripe charge. Nine surfaces, five discount types, five cadences, age + time-of-day eligibility gates, one-time initiation fees, audit-logged grandfathering.
  • Nine billable surfaces covered: court reservations, open play, leagues, tournaments, clinics, coaching lessons, ball machine, guest passes, initiation fees
  • Five discount types: percentage off, fixed off, free, allowance (first N per cadence), free with cap
  • Five cadences: daily, weekly, monthly, quarterly, annually — anchored to the club's clock
  • Eligibility gates enforced server-side: age (COPPA-floored at 13), hours, days of week, locations
  • One-time initiation fees via Stripe Connect — waivable, with configurable reapplication window
  • JSONB schema validator rejects tampered blobs: negative percents, out-of-range values, allowance on non-allowance surfaces, unknown keys
  • Immutable audit log on every tier edit — actor, IP, user agent, full before/after JSON
  • Grandfathering: existing active members keep their original terms until explicit 'Apply to existing members' action
  • Per-club shadow-compare flag runs both legacy and new paths in parallel and logs divergence before flipping
  • Backfill rake task translates legacy fields (court_rate_discount_percent, event_pricing JSONB, free_*_per_month) into structured data — Snovalley skipped by default
  • New league and tournament resolvers route through ClubPricing for the first time — their discounts now actually apply
  • Deterministic perks formatter: structured inputs generate the human-readable perk bullet list
Learn more →
Apr 21, 2026 Platform
Structured Membership Tiers — Every Perk Hits Stripe as Real Dollars
Every membership tier perk now flows through a server-authoritative pricing pipeline that actually reduces the Stripe charge. Nine surfaces, five discount types, five cadences, age + time-of-day eligibility gates, one-time initiation fees, audit-logged grandfathering.
  • Nine billable surfaces covered: court reservations, open play, leagues, tournaments, clinics, coaching lessons, ball machine, guest passes, initiation fees
  • Five discount types: percentage off, fixed off, free, allowance (first N per cadence), free with cap
  • Five cadences: daily, weekly, monthly, quarterly, annually — anchored to the club's clock
  • Eligibility gates enforced server-side: age (COPPA-floored at 13), hours, days of week, locations
  • One-time initiation fees via Stripe Connect — waivable, with configurable reapplication window
  • JSONB schema validator rejects tampered blobs: negative percents, out-of-range values, allowance on non-allowance surfaces, unknown keys
  • Immutable audit log on every tier edit — actor, IP, user agent, full before/after JSON
  • Grandfathering: existing active members keep their original terms until explicit 'Apply to existing members' action
  • Per-club shadow-compare flag runs both legacy and new paths in parallel and logs divergence before flipping
  • Backfill rake task translates legacy fields (court_rate_discount_percent, event_pricing JSONB, free_*_per_month) into structured data — Snovalley skipped by default
  • New league and tournament resolvers route through ClubPricing for the first time — their discounts now actually apply
  • Deterministic perks formatter: structured inputs generate the human-readable perk bullet list
Learn more →