What's new
All changes — chronologically. Filter by category if you only care about one type. Bug fixes are hidden by default — click "Fixed" to show them.
League organising: add your own teams directly, fix seasons, clickable schedule
Organising a team league is now much faster:
• Add your own teams to the season directly — no join code, no approving yourself. Select several teams at once and you're done. The league code remains for outside team captains.
• Seasons can now be edited and deleted while in preparation — a misconfigured season (e.g. wrong match format) no longer haunts your league forever. When creating one you get a clear format preview, and we warn you if another season is already in preparation.
• The schedule now lists every fixture individually — tap one to go straight to the match page with lineups, match start and live scoring. Previously matchdays were just counters with no way to the actual game.
• League name and description can be changed afterwards.
The club area got faster too: add players as a list (one name per line — paste entire rosters at once), the dialog clearly shows which club you're in, and clubs can finally be renamed and restyled instead of deleted and recreated. And if something fails to load you now get an error message with a retry button instead of an empty page.
After the tournament: next one with the same players – one tap
When your tournament finishes, the wrap-up screen now offers a "Next tournament – same players" button. One tap creates a fresh tournament with the exact same line-up and settings — no need to re-enter players, and you land straight in the admin view of the new one.
Especially handy for club and pub nights that run several tournaments back to back.
Creating a tournament: preview before sign-up + clearer free options
When you put together a tournament without an account, we now show you a short summary of your finished setup first — name, format, game mode and (for a simple tournament) your player list — before asking you to sign up. You can see at a glance that everything is saved, and create a free account with one tap to start and share the code.
If you run into a format that isn't included in your plan, the free option is now clearer: you can try the format you want free for 24 hours instead of being sent to the pricing page first.
Small improvement: "Play & Practice" is placed a bit more prominently on the home screen and described more clearly.
Ranking series: fix a mixed-up player after the fact
In a ranking series, players are matched to the same entry across matchdays by their name. If someone spells their name differently one time (e.g. "Felix M." and "Felix Mil." the next) or two people use the same name, the standings could mix up the results.
New: "Edit player". You simply pick what applies — (1) just rename (same person, different spelling), (2) this is a different person → own entry, or (3) assign to an existing entry. If the target player already played that matchday, the two are swapped automatically. Points, averages and stats move along correctly.
You can reach it in two places: in the standings with a tap on the player, or in the matchday menu ("…"). To help you spot the right person, the dialog shows each player's result for that matchday and which other matchdays they played, warns about similar names, and shows a before→after preview before you confirm.
When renaming you can optionally tick "Also rename in the tournament" — the name then carries into the linked tournament results too, so standings and tournament show the same name.
There is also a new active hint in the Pool tab when two entries might be the same person (e.g. "Felix M." and "Felix Mil."). All corrections work comfortably on mobile too.
Quick Match & Training: a new, faster setup
Setting up Quick Match and Training is now noticeably faster and clearer.
In Quick Match you pick your opponent with a single tap as a card: a friend (pass & play on the same device), a bot (play solo against the AI across five strengths) or 3–6 players taking turns. For the bot you now see the opponent strength as a "ladder" with a short profile, and you can fine-tune it with ◀/▶. The format (501/301, best of/first to, legs) sits tidily behind "Adjust", and the "Start game" button is always active — no more hunting for the next step. Names are optional; leave them empty and it simply reads "Player 1/2".
In Training you switch between Checkout and 121 at the top and choose your session goal as a card (10 checkouts, 5 minutes or endless). A level ladder shows you how far it goes, and if you are logged in you can resume your last practice with a single tap.
Everything is optimised for phone, tablet and desktop — the start button stays within reach at the bottom.
Big-screen show: 180 celebration, join QR & optional sound
The big screen becomes a stage: when a player hits a 180 in a live match, the projection now shows a large "180" celebration with the player's name — clearly visible for the whole room.
During the registration phase the screen shows a join QR code in the bottom-right corner: guests scan it and land straight in the join/watch flow — no need to type the code.
There is also a new sound toggle at the top of the projection (off by default). Turn it on and a short cheer plays on a 180 — perfect for the atmosphere at live events, but only if you want it.
Small bonus under the hood: after brief network drops the live updates now reconnect faster.
Results page: "My stats" and a better share preview
The public results page now has a personal "My stats" block: if you are logged in and took part yourself, you see your own record, average, 180s, highest finish and placement at a glance, right at the top.
When you share the results link, the page now carries a fitting title with the tournament name and winner (e.g. "City Championship — Winner: Max | SmartDart") — making the tab title and preview more meaningful than before.
Admin comfort: delete a tournament, tab stays after refresh & a clearer empty player list
A few conveniences in the admin dashboard:
New: you can delete a tournament you created from its settings ("danger zone") — handy for test tournaments that never started.
The empty player list now actively helps: instead of just "no players" there is a clear hint and direct add buttons — so at your first tournament you immediately know what to do next.
Your last opened tab now stays after a page refresh — you no longer keep landing back on the overview.
And for quick tournaments without boards the public code is now clearly labelled "spectator code" (in neutral blue instead of alarm red) — making it clearer that it is safe to share.
PREMIUM trial running? You now get an in-app reminder before it ends
While your PREMIUM trial is active, SmartDart now shows a small notice at the top of the app with the remaining time — e.g. "Your PREMIUM trial ends in 5h". That way you no longer miss the end just because you didn't check your inbox.
One tap on "Keep PREMIUM" takes you straight to the overview to secure your benefits. You can dismiss the notice — but in the final hours before it expires it becomes a bit more prominent so you can decide in time.
Creating a tournament made easier: try any format, format recommendation & a clearer start
The home page now has a clear entry point: "Your tournament on the big screen in 2 minutes" plus a big "Start tournament" button that takes you straight into the quick wizard.
You can now pick any tournament format in the wizard and go through the whole setup at your own pace — including Group+KO, double elimination or Swiss system. The upgrade prompt only appears when you actually start the tournament, no longer on the first click on a format tile.
New while creating: as soon as you add your players, SmartDart suggests the format that fits (e.g. "round robin" for small groups). With "Compare formats" you get an overview of what sets the formats apart — no more create-and-delete just to find the right one.
Also fixed: if you activate a PREMIUM trial, you can now immediately use more players and boards in tournaments you already created (previously the old limit was wrongly still applied in that case). And when you fire a lot of actions in quick succession, you now get a friendly notice instead of a silent error — the action is retried automatically.
Quick Match: 1-tap rematch, "one level harder" vs the bot & share your result
After a Quick Match you no longer land back in setup: a big "Rematch" button starts the next match with the same opponent and format in one tap — and against the bot the difficulty is now kept (previously it silently fell back to "Amateur").
Against the bot there is also "One level harder": beat "Pro" and immediately challenge "World-Class". A small bot ladder shows which levels you have already beaten and what comes next — each level with its average benchmark (e.g. "Pro · ~70 avg") so you know what you are in for.
The result screen now celebrates your highlights (new average record, 180s, high finish, bot beaten) and you can send your result via "Share". "Change setup" lets you adjust legs and bot level in a slim overlay — without a detour via the home page.
Don't want to lose your match without an account? The save prompt is now personal ("Save your 54.3 avg") and appears after bot matches too. Plus larger, thumb-friendly buttons on mobile.
Training reimagined: session goals, daily streak & 121 now playable without an account
Checkout training now has a real goal: before you start, pick "10 checkouts", "5 minutes" or "endless". A progress bar at the top always shows how far along you are — and when you hit your goal you get a little win moment plus the option to keep going with the same goal right away.
New for signed-in players: a daily streak 🔥. Every day you train counts — just like language apps. You also earn XP, level up and unlock badges (e.g. "7-day streak" or "Checkout Master"). Your last session is shown when you start, including a difficulty recommendation.
You can now try 121 Dart without an account too — the first rounds are free, and your high score is saved with a free account.
Also a fully reworked mobile layout: the input pad including Bull/Bull's Eye/Confirm now fits on screen without scrolling — especially on small devices like the iPhone SE. On tablet landscape the left side now shows a live stats board instead of empty space.
Permanent club board: log in once, optional PIN, idle goes straight to Quick Match
If you use a laptop or tablet as a fixed dartboard at your club, you now only need to log it in ONCE. Every club board has a fixed device code — log in with it and the device stays connected across all future club tournaments. No more re-logging in before each tournament.
Optionally you can protect any board with a PIN (4–8 digits, in the club settings under "Boards"). The device login then asks for the PIN after the code — so players can't accidentally reach the admin or home page.
And when no tournament is running, the board shows an idle screen with a big "Start Quick Match" button — perfect for practising until the next tournament begins. As soon as the admin starts a tournament, the board reconnects automatically.
New: per-leg throw history — plus keyboard score entry
Now available: the full throw history of the current leg — as a clear table with one column per player. You see every throw with points and remaining score, instead of just the "last throw". Available in laptop/board mode and in Quick Match.
Also: when you use a laptop as your dartboard, you can now type the score on the number keys and confirm with Enter — instead of clicking the input field with the mouse (Backspace deletes, Esc clears). On phone and tablet everything stays as before via the on-screen pad.
Share your public season & league standings + beamer
Team leagues now have a public, shareable season standings table — just like the ranking-tournament series. As a league owner you can flip your league to "public" in the league settings and get a link you can drop into the club WhatsApp or your website. Anyone can see the current season standings — no account needed.
There is also a beamer mode: dark background, large type, top 3 with medals — perfect for showing the season table on matchday at the club or pub. It updates live while the matches are being played.
Private leagues stay private: the link only works while you have explicitly set the league to public.
Ranking table: medal instead of rank number for the top 3
In the ranking-series table on the public results page, the rank column now shows the medal (🥇 🥈 🥉) for the top three directly — instead of the number 1/2/3 plus a small extra medal next to the name.
This moves the medal away from the player name: long names no longer wrap onto two lines and get more room. The "Avg Pts" column header now also reliably stays on a single line.
Ranking series: new "avg points per matchday" column
A ranking series table now shows a new "Avg Pts" column right next to the total points — the average points per matchday played (total points divided by number of matchdays).
This makes it fairer to compare players who attended a different number of matchdays: someone who only played half the matchdays sits lower on raw total points, but might be the strongest on a per-matchday average.
The column is purely informational — it does not change the ranking or scoring of the table. It appears everywhere: in the management view, on the public results page (the shared link) and on the beamer projection.
Connecting a board: clearer codes, better error messages
Connecting a scoring device (tablet/phone at the board) is now far less error-prone.
— **Correct example in the input field:** The code field used to show "AB12X" as an example — but that's the format of a *tournament* code. Board codes use the format "D + 4 digits" (e.g. D1234). The field and hint text now state the correct format so nobody types the wrong code.
— **Understandable error messages:** Instead of a generic "not found", the app now clearly says what's wrong — either "code format doesn't match (expected D + 4 digits)" or "device code not found — check the code in the admin dashboard, or the tournament has already ended".
— **Faster player join:** Joining with a normal tournament code now goes straight into the join flow without an unnecessary detour.
Results page redesign: champion spotlight, highlights & share as image
The public results page (the link you share after a tournament) used to be mostly a stack of tables. Now it puts the moment that matters front and center: the win.
— **Champion spotlight:** A big winner banner now sits at the top with a trophy, the name and the champion's key numbers (win rate, average, high finish, 180s). A short burst of confetti greets you on open.
— **Tournament highlights:** A row of animated tiles shows the headline figures (matches played, legs, 180s, darts thrown) followed by the tournament records — high finish, most 180s, best average, fastest leg and more, each with the player behind it.
— **Match results with average bars:** Instead of a plain table, each match is a card with a small average comparison bar — see at a glance who threw better. Tapping still opens the detailed stats.
— **Share as image:** A new button generates a polished result graphic (podium + champion + top highlight) — perfect for the WhatsApp group or Instagram.
Bracket, standings and player statistics are still there — there's just a lot more around them now.
Board view: reset current leg via header icon
In the score pad (board / device view), a small orange reset icon now sits in the top-right header next to the connection indicator. It lets you reset the current leg back to its starting score (e.g. 501) mid-match — useful if you mis-typed a score and want to start over cleanly.
A tap opens a confirmation dialog with an explanation. Once confirmed:
— The current leg score jumps back to the starting score
— Darts already thrown in THIS leg no longer count toward the match average
— Won legs stay the same (the leg counter is not touched)
— 180s, 140s and bonus statistics are NOT reset — the player keeps them
The board tablet now has the same "clean up without losing a leg" tool that the admin screen got in the previous update. Reachable directly in the live game without anyone needing to step in from the admin tablet.
Ranking series: points distribution now visible to everyone
Until now only the owner of a ranking series could see how the points are configured (in the settings tab). Spectators on the public results link, or players checking the standings, only saw the table with the final totals — but not why one player has 28 points and another 22.
A compact "points distribution" card now sits above the standings table with two columns:
— **Base points** on the left: match win, match draw, leg win (draw shown only if greater than 0)
— **Bonus points** on the right (if active): 180 visit, 140+ visit, high finish from a threshold (e.g. ≥120), maximum finish (170 checkout)
Fields with value 0 are hidden — if no bonus points are configured, the entire right column disappears. The tiebreaker hint sits at the bottom: "On ties: 1) leg difference, 2) average".
Visible in three places: public results page of a series (/series/results/CODE), standings tab in the series detail view, and also in the empty state during the preparation phase — so the owner can double-check the rules while setting up.
Team-match tournament: assign team directly from the Players tab
Until now you could only assign players to a team via the Line-up tab in the classic team-match tournament format (Home vs Away, no club required). Sorting players quickly during prep meant switching tabs.
Now each player row on the Players tab has a 3-way toggle "Home | Pool | Away" showing the actual team names from the tournament. One tap assigns the player. The toggle sits on its own row beneath the name so nothing gets squeezed on desktop. The Line-up tab still handles slot placement.
Once the tournament starts the assignment is locked so nobody can shuffle teams mid-match.
Admin view: reset the current leg mid-match
When scoring goes wrong in a running leg — a visit typed incorrectly or a few darts thrown without a score — you can now cleanly restart the current leg straight from the admin match card.
On a running match, the button "Reset current leg to 501" (showing the actual starting score) appears as soon as something has been thrown in the leg. A click opens a confirmation dialog explaining what happens:
— The leg score jumps back to the starting score
— Already-won legs stay unchanged (it does not count as a lost leg)
— 180s and bonus statistics are kept for the player
— Only the darts thrown in the current leg stop counting toward the match average
This fixes a mistyped leg without having to set up the whole match again.
Team match on the projector: same look as a regular tournament
The projector view of a team match used to look entirely different from other formats — a slim header, a giant home-vs-away score in the middle, a sub-match ticker at the bottom. Meanwhile KO, league, round-robin and double-elimination projections showed the full branded header (logo, club badge, live indicator, layout settings, spectator QR) plus the familiar broadcast layout with live-match card and stats ticker.
Team matches now use that same shell:
— Full branded header (logo, club, status, live indicator, font scale, layout editor, QR) — Compact team-scoreboard card at the top showing the aggregate home-vs-away score and fixture progress — Left column: live sub-matches in the usual PDC/Stadium/Broadcast/Classic card style, plus recent results — Right column: the full fixture list with singles/doubles positions, home and away line-ups, status chip, trophy icon on the winning side
Sections can be toggled exactly like in the other formats, auto-scroll handles long fixture lists, and the spectator QR can be blown up to full screen — all from the same layout editor.
Consistent branding: SmartDart logo on waiting and login screens
A few interstitial screens — like the public results page of a running tournament or the board login on a tablet — used to show a generic dart arrow as a hero icon. That felt off-brand between the logo header above and the rest of the content.
Those spots now carry the actual SmartDart logo:
— Public results page while a tournament is still running ("Tournament still in progress …") — Board login (enter code) — Board "waiting for next match" screen — the logo gently pulses there (fades light/dark and scales slightly), but does not rotate. Keeps the logo upright instead of spinning like the old arrow icon did.
No functional change, purely visual — but noticeably more consistent when you share a link to a live tournament.
Friendly match: assign team directly from the Players tab
On the Players tab of the friendly-match admin view, you could only add or remove players — assigning a side (home/away) required dragging into a slot in the Line-up tab. On mobile or when sorting many players in a row, that felt slow.
Each player row now has a 3-way toggle "Home | Pool | Away". One tap assigns the player to a team or moves them back to the pool. Drag & drop in the Line-up tab still works as an alternative for slot placement.
After the match has started, assignment is automatically locked so nobody can shuffle teams mid-game.
Friendly match line-up: drag & drop instead of three tabs
Player-to-match assignment in friendly matches was spread across three tabs — Players, Teams, and Line-up — and required five clicks plus a manual "save" per side for a single assignment.
The new line-up lives in a single tab with three columns: Home slots on the left, player pool in the middle (grouped into Home pool / Not yet assigned / Away pool), Away slots on the right. Players are dragged directly into a slot — side is set automatically. Every change is saved instantly, no extra click needed.
On mobile, long-press a player and drag. If you prefer: tap a slot and pick a player from the menu.
The "Teams" tab is gone — side assignment now happens in the line-up. The Players tab shows side only as a small badge (Home/Away/Pool) — changes happen in the line-up tab.
Ranking series statistics: visual season overview with podium, top lists and scoring volume
The statistics page of a ranking series used to be very plain — three simple lists, nothing else. There is now a visually richer season overview:
- **Hero cards** at the top: number of matchdays, finished matches, total maximums of the season and highest checkout (with player name).
- **Podium** with gold/silver/bronze for the current top 3, including points, match record, average and 180s count.
- **Scoring volume** as colored bar comparison: 180s, 140s, 100s, 60s summed across all players.
- **Eight top lists** in a grid: top 180s, 140s, 100s, highest checkouts, match wins, best average, best checkout %, best first-9 average. With mini progress bars per entry.
The stats overview is now also visible on the **public result link** of the series (`/series/results/CODE`) — players and fans can pull up the season stats at any time via the shared link, without logging in.
Smaller fixes on top: the "connect request pending" chip on the series list previously showed the placeholder `{{n}}` instead of the count. And the Reject button on a pending pool identity request was barely readable on the gold background (red on gold).
Player view: New info banner while you wait for your next round
When you are in a tournament but currently have no live match and no upcoming match (e.g. because you got knocked out in the KO bracket while the tournament continues, or because the admin has not started the next round yet), the player view used to be empty — no indication what was happening or whether the app was still working.
Now a clear info banner appears with the heading "It's not your turn yet". Content:
- If another match in the tournament is currently running, the banner shows which players are playing right now. - If nothing is running (e.g. break between rounds), it shows "Break — no match is running right now".
Under both variants there is an explanatory text: "Your next round will start as soon as the open matches of this round finish and the admin advances the bracket."
Ranking series: admin sees new pool requests live + join blocked once tournament is running
Two more improvements around pool identity requests:
**1) Live notifications for admins**
Previously the admin had to switch tabs or reload to see a new pool request. Now requests flow into the admin view in real time — as soon as a player submits an identity request, it shows up at the top of the players tab. A snackbar info message also appears: "New pool request — please approve or reject in the Players tab".
The series detail page (pool tab) also has a 15-second auto-refresh as a safety net.
**2) Joining blocked once tournament is running**
Until now a player could submit a pool identity claim even after the tournament had started. The admin could approve it — but the player would be registered without being slotted into the bracket → they would have no matches.
That is now properly handled: anyone trying to join a running tournament sees a clear hint on the join screen "This tournament is already running — you can't join as a player anymore. If you only want to watch, go back and pick Just watch". The backend API blocks submit + approve with 409.
If the tournament starts between request and admin decision: approve fails with "Tournament is already running — approval no longer possible. Please reject the request."
Tier wall in admin dashboard now shows upgrade dialog instead of raw error
When you tried to add an 11th player to a tournament, start a 2nd active tournament or create a 3rd board as a BASIC user in the admin dashboard, you previously only saw a short red "Create failed" snackbar at the top of the screen. What was actually blocking (BASIC tier limit) and how to resolve it (activate trial / upgrade) was not visible.
Now the familiar upgrade dialog appears instead of the error — showing which specific limit was hit, with the option to activate the free 24h trial or upgrade to PRO/PREMIUM directly.
The same improvement was already live for tournament creation on the home page since session 182 — now the admin dashboard catches up. Bulk player adds benefit too.
Ranking series: pool-identity check on tournament join + merge players
Two improvements around pool identities in ranking tournament series:
**1) Pool identity check on tournament join**
Previously anonymous players could sign up under any name — even if the name already existed in the series pool. That was a security gap: anyone could type "Max" and steal the real Max's stats.
**What changes:**
• **Logged-in users with a pool hit:** When you join a matchday with your account and have already played in this series, you see a small banner above the code entry — "You've played here before — Max · rank 3 · 28 pts". Friction-free join with clear identity confirmation.
• **Anonymous joiners with name conflict:** If someone without an account enters "Max" and a pool entry "Max" exists, the dialog now asks: "Are you the existing Max?". **Yes** triggers a pool request to the organizer — the player waits for approval (or can create a SmartDart account; the system then recognises them automatically in future matchdays). **No** creates a new pool entry.
• **Admin surface:** The tournament admin sees the request at the top of the players tab in their admin view ("Jan wants to play as ‘Max‘ — Approve / Reject"). The series owner additionally sees all pool requests for their series in the pool tab. Both can decide — first come, first served.
• On **approval**, the player is auto-redirected to the tournament, stats run on the existing pool entry. On **rejection**, the player picks a different name.
**2) Merge pool players**
It often happens that the same player was entered as "Max" on matchday 1 and accidentally as "Max.S" or "M.Schmidt" on matchday 2 — both anonymous, two separate pool entries. Stats run separately, the table is wrong.
The series owner can now merge two entries in the **pool tab**: button **"Merge players"** → pick source + target → preview shows before/after ("Max.S (12 pts, 1 md) + Max (28 pts, 3 md) → Max (40 pts, 4 md)") → confirm. All stats and matchdays move to the target, source is deleted, table is recomputed.
Conflict protection: if both entries played on the same matchday (rare but theoretically possible) or are linked to different accounts, the backend blocks the merge with a clear message.
Dedicated SEO landing page for the ranking-tournament feature
The ranking-tournament feature now has its own explanatory landing page at **smartdart.app/dart-ranking-tournament** (German slug: /dart-ranglistenturnier).
**What changes:**
• The purple **"Ranking Tournament Series"** tile on the landing page now sends non-logged-in visitors to the new landing page first, instead of straight to the auth wall. Logged-in users still land directly in the series overview — no extra clicks for existing users.
• The landing page explains the feature compactly: hero, 8 feature cards (multiple matchdays, live table, pool, bonus points, QR public link, projection view, stats parity, season-end champion), 4-step setup guide, 4 typical use cases (club championship, pub cup, hobby season, corporate cup), 12 FAQ entries and a final CTA.
• **SEO:** full Helmet tags + JSON-LD schema (SoftwareApplication + FAQPage + HowTo + BreadcrumbList) + hreflang DE/EN. The page is part of sitemap.xml and gets prerendered at build time. Plus five long-tail redirects on the German side for direct URL inputs.
• **English version** at **/en/dart-ranking-tournament** — bilingual content kept in sync.
Background: the feature used to be reachable only via the tile + auth wall — search engines had no indexable page, and first-time visitors had to sign up before they understood what the feature actually was.
Ranking series: add external players retroactively + series badge in player & projection view
Two additions around ranking series:
**1) Add external players retroactively**
The standings tab of a series has a new button **"Add external player"**. Use it to retroactively add players who took part without SmartDart, or whose result came from a spreadsheet.
**Only name + points are required** — everything else is optional. Open "Show advanced stats" to add match W/L, leg W/L, average, scoring avg, first-9, checkout %, 180s/140+/100+/60+ and highest checkout — they flow straight into the ranking and the player profile popup.
All external entries land in a shared special matchday "External results" (marked with an "External" chip in the matchdays tab). If a name already exists in the pool, an auto-suffix is appended — you can rename the entry later.
**2) Series badge in player view + projection**
If a tournament is part of a ranking series, you now see a purple trophy chip with the series name everywhere — not just in admin mode, but also in the **player view** (clickable → public series page with live standings) and in the **projection/beamer view** (informational, so spectators at the club instantly recognise this is a matchday of a league season).
Ranking series: multiple matchdays, live standings, dedicated pool
New mode for whole seasons with N matchdays and an overall ranking — perfect for a club cup, pub league or a private hobby season.
**How it works:**
• Create a series (e.g. "Club Championship 2026") with its own points config (default 2 points per match win + 1 per draw + 1 per leg won — every slider individually tweakable).
• **Bonus points for special throws** (optional): X points per 180, per 140+ visit, for high finishes from a threshold (100/120/140/170) and an extra bonus for the maximum finish (170 checkout). Reward strong individual play, not just wins.
• Maintain a **player pool** (name + optional email). Players can later link themselves to a pool entry via the public link — you confirm it in the pool tab.
• **Two ways to attach a tournament**: a) Add a matchday from the series detail view (3 modes: new tournament / import existing / manual results). b) When creating a tournament normally from the landing page, **pick a series in the wizard** — the tournament is auto-attached as a matchday. The admin view shows a purple trophy badge for linked tournaments; unattached tournaments show "Attach to series" for later linking.
• **Automatic pool sync**: Whoever joins the tournament — added manually by the owner, via self-join or via QR — lands instantly in the series pool and standings. On self-join, the player is asked if they're already a pool member (link to existing entry) or new; for "new", first-come-first-serve enforces the name is still available (no more auto-suffix for QR joins).
• Add **matchdays** — three ways: brand-new tournament inside the series, import an existing FINISHED tournament (e.g. last weekend's club championship), or enter results manually (for clubs migrating from Excel mid-season).
• The **overall ranking updates live** after every match — tiebreaker: points → leg difference → average.
• **Full stats parity:** 180s, 140+, 100+, 60+, first-9 average, checkout % and highest checkout flow automatically from tournament matches into the series. For MANUAL matchdays you can enter the same values as optional fields.
• **Click a player** on the public page to open a profile popup with hero cards (points, avg, win rate) + scoring/finishing/consistency sections with big icons + match and leg balance bars + highlight for high finishes and 170 maximums.
• **Public link with QR code + projection layout** — share the season table in your club WhatsApp or throw it on the wall during a matchday. On the projection the leg difference is colored (green/red) for instant readability.
Now on the landing page as its own tile (purple, medal icon) — directly clickable. Premium feature for now — BASIC/PRO see a demo preview with bonus points enabled as an example.
New stats + results page refreshed: KO qualifiers, clickable matches, leg-avg rankings
The results page and stats sections get a bigger step forward:
**Three new stats — visible everywhere:**
• **Avg in best leg** — for each player in a match, their highest 3-dart average of a single leg. Won or lost — if someone nails a single leg in 12 darts at 125 avg, that now shows up as its own number in the match stats dialog (next to "Best leg (darts)").
• **Top-5 best leg averages of the tournament** — new leaderboard in the tournament statistics. Who had the best single leg in the whole event?
• **Top-5 best match scoring** — the five players with the highest match scoring average (turns above 170, no finish throws). Shows who was most consistent in pure scoring.
On the **player view** and in the **tournament ranking** on the results page, both new values are also shown per player — visible for every player in the tournament, not just yourself.
**Results page refreshed:**
• **KO qualifiers** in the group standings are now clearly highlighted — green border stripe + check icon + legend "Top X qualify for the KO phase". You see at a glance who advances.
• **Match cards and rows are visibly clickable** — previously you had to guess that tapping a match opens the detailed stats. Now every card shows a chevron arrow + "Stats" label, the desktop table has a dedicated "Details" column with a stats button. Plus a discreet hint line above the match list.
Team match: line-up tab + stats for QR players
Two last gaps in the team-match mode are closed:
**1) Captain assigns slots directly from the pool** The team-match admin mode now has its own **"Line-up"** tab (4th tab, between Teams and Boards). Three columns: home slots on the left (singles 1, 2, … + doubles 1.1, 1.2, …), pool players grouped by side in the middle, away slots on the right. Tap a slot, pick a pool player, slot is filled. Save per side — both saved → match is ready to start.
Especially handy for the **QR flow**: players join via their phone (pool), you assign them a side (home or away) in the teams tab, then put them into a concrete slot in the line-up tab.
The previous line-up via roster members from the detail view still works — you can even mix pool players **and** roster members in the same line-up.
**2) Players see their stats after joining** Whoever joined a team match via QR code now sees a new button **"Show my matches"** after joining. A click opens a stats card with:
• W/L/D + legs balance across all sub-matches • 13-row statistics like the match comparison (Average, Scoring avg, First-9, 60+/80+/100+/140+/180+, Highest checkout, Checkout %, Shortest leg) • List of all sub-matches with opponent, doubles partner, result and click-link to the match replay
No login needed — the stats hang off the match share-code and are immediately available to the player.
Landing page: tidier first row — Create · Join · Connect device
The top tile row on the landing page is reshuffled and easier to scan:
• **Create Tournament** (red tile, plus icon) — opens the picker dialog (Classic, Quick Tournament, Team Match). • **Join Tournament** (cyan tile, login icon) — jumps straight to the code-entry step. One tap instead of two (previously you had to tap "Create or Join" and then dig into the dialog). • **Connect Device / Projector** (teal tile, TV icon) — was previously buried as a grey, unobtrusive card further down. Now it sits in the first row with a clear color.
The dialog behind "Create Tournament" only shows creation variants now — the join entry was removed there.
Manage team matches like a tournament — with QR-code join
Team matches (friendly + quick) now have a fully featured admin mode with the same tabs as a regular tournament.
**New:** • **TeamMatchAdminView** at `/team-match/admin/{code}` — 5 tabs: Overview, Players, Teams, Boards, Matches • **Players tab** — add players manually (bulk: one name per line, max 50) or let them join via QR code • **Teams tab** — 3-column layout (Pool · Home · Away) with click-to-assign between columns • **QR code in share dialog** — players scan the code with their phone and join directly • **Public join page** at `/team-match/join/{code}` — enter username, done (no login needed) • **Mobile bottom-nav** instead of top tabs on <600px • **ADMIN badge** on the team-match detail page opens the new admin view directly
The existing detail page remains for lineup setting + board setup + live-match control — the new admin view is the higher-level overview.
**Backend:** Team matches get an **admin code** (32 char) for captain access plus a short **join code** (6 char uppercase) for QR join. Existing team matches were backfilled with both codes — no breaking change.
**Tier limit:** Players in the team-match pool count toward the same player limit as tournament players (BASIC 10 / PRO 20 / PREMIUM unlimited). For DSAB friendlies with the 16+4 format you need PREMIUM if you want to fill the full pool.
Live board more compact: size slider on the device view + full-screen match summary
On small phones (for example when scoring at the board with the phone in your hand) the device view was previously too tall — score header + tabs + numpad + bull buttons did not fit into the viewport without scrolling. The stats dialog after clicking a finished match (admin / player / results page) also had to be scrolled inside its own window.
**New — dedicated "Draw" tab on the live board:** The draw action (Session 171) is now a fully featured 4th tab in the device view instead of a hidden three-dot menu. The tab is called "Draw", has a handshake icon and only appears if the match is actually allowed to end as a draw (Round Robin or GK group stage with draws enabled). Content: large cyan handshake icon, "Draw" headline, both player names, an explanation "End the match as a draw? There is no winner; both players get 1 point." and a big cyan "End as draw" button. After clicking, the end-of-match overlay is shown immediately with the handshake banner.
**New — more compact device view by default:** The live-board view now starts automatically in a compact 70 % rendering. With that, both player score headers, all 20 number buttons, Bull / Bull's-Eye / Miss, the Single/Double/Triple selector and the help banner fit into a typical smartphone viewport (e.g. iPhone 13, 390x844) without scrolling. Additionally the orange "Anna vs Bob — Best of 3" match-info stripe is gone, since player name and format are already visible on the score cards.
**New — size slider on the live board:** In the top-right corner (next to the home button) there is a new slider icon. On first visit it pulses briefly and shows a tip "you can adjust the size here", so the feature is not overlooked. Clicking it opens a slider from 70 % to 120 %. The chosen size is stored in the browser and restored on the next visit. The slider affects the whole scoring area as well as the end-of-match trophy screen with the statistics.
**Improved — full-screen match summary on mobile:** The statistics dialog (opens after clicking a finished match) now uses the full screen on mobile instead of a small popup. All 14 comparison rows (avg, scoring, first-9, checkouts, darts thrown, 60+ / 80+ / 100+ / 140+ / 180s …) plus the "Close" button are visible without internal scrolling. On tablet and desktop the familiar centered dialog layout is preserved.
Draws now visible everywhere — projector, live board, results page
The new **Draws option** (see yesterday's update) was previously only visible in the admin dashboard. From now on the feature carries through consistently to all views:
**New entry points:** • **Live board (scoring device)** — via the three-dot menu in the top right you can now end a live match as a draw directly at the board (e.g. when a player has to leave early). Confirmation dialog before saving. • **Boards tab in the admin dashboard** — every board card with a live group-stage match shows the same three-dot menu.
**New display locations:** • **Player view** (`/player/{code}`) — match lists now show a blue "Draw" chip instead of a trophy. Standings tables get a "D" column (Round Robin, Champions League, GK groups). • **Projector view** — KO brackets show draw matches with a blue chip instead of winner-highlight. The standings table on the projector also gets the "D" column. • **Public results page** (`/results/{code}`) — match list has a draw chip, standings get a "D" column. Mobile + desktop. • **Match Replay page** (leg-by-leg breakdown) — for a draw match a clear "🤝 Draw" banner appears on top instead of winner trophies. • **Team-match sub-matches** — draw status (DSAB) is now also rendered correctly as a "Draw" chip on the public results page and on the team-match projector.
**Under the hood:** The Match DTO now carries the tournament format and `drawsAllowed` setting, so live views can decide whether to render the draw button without an extra data fetch.
New: DSAB E-Dart mode + draws in group-stage tournaments
Two requests from a DSAB player's feedback after his first club tournament are now live:
**1) DSAB E-Dart format presets for team friendly matches** In the Friendly Wizard you can now pick two new presets: • **DSAB E-Dart (Standard, 16+2)** — 16 singles + 2 doubles, 501 Double Out, Best of 3 Legs (DSAB standard league) • **DSAB E-Dart (Upper Leagues, 16+4)** — 16 singles + 4 doubles, otherwise identical
Perfect for club friendlies against other teams that you used to track on paper. The app auto-generates all 18 or 20 sub-matches, you set your line-up, hit start — live view on the tablet, score entry in parallel on the phone.
New in the "Create tournament" dialog on the landing page: an additional **"Team Match"** card opens a **slim 4-step wizard** — you only enter match name + format + both team names + player lists, and the app auto-creates everything in the background (club, teams, players, line-up). **No club setup needed**, no captain approval — you are captain for both sides and can start immediately.
**2) Draws in round-robin and group-stage tournaments** When creating a tournament you now see a new option **"Allow draws"** under the **Round Robin** and **Groups + KO** formats. When enabled: • In the Admin dashboard you can end a live group-stage match as a **Draw** with one click • Both players get **1 table point** (Win = 2, Draw = 1, Loss = 0 — DSAB standard) • The standings table automatically gets a **"D" column** as soon as at least one match ends in a draw • KO phases are excluded — a knockout match always needs a winner
DSAB sub-matches also got a **"Draw" button** next to the walkover buttons (for abandon situations).
**What's not in this update?** A native smartphone app is on the roadmap but not yet here — until then, the web app works great on phone + tablet in parallel via the browser.
Reminder mail for tournaments that are played out but not officially closed
When your tournament has been fully played (all matches finished, winner determined) but you forgot to click **"Finish tournament"**, you now get a short reminder mail the next morning with a direct link to wrap it up.
**Why?** As long as a tournament shows "in progress", the public results page is not unlocked — and the tournament slot keeps counting against your tier limit. One click on the mail CTA "Finish & share results" handles both: tournament is officially closed, and the results page (`/results/{code}`) is instantly shareable — perfect for the WhatsApp group after club night.
**How exactly does it work?** • Detection: daily check at 09:30 (Berlin time), finds tournaments where every match is `FINISHED` and the last match ended at least 1 hour ago • Recipient: only you as the tournament creator • Frequency: **maximum one mail per tournament** — if you ignore the reminder, no second push • Language: automatically DE or EN based on your account preference • Existing tournaments that are already "played out but open" today get **no** retroactive reminder
English language is now detected automatically
If you visit smartdart.app with an **English-language browser**, you now see the English version straight away — no manual switching needed.
**What changes:** • English browser on `smartdart.app` → automatic redirect to `smartdart.app/en` • Works for every topic page too (`/dart-vereinsturnier` → `/en/dart-vereinsturnier`, `/pricing` → `/en/pricing`, etc.) • Works in tournament views (Admin, Player, Projection, Results page) — even without an `/en` URL the UI runs in English • `<html lang>` attribute is kept in sync — screen readers pronounce correctly, Google indexes cleanly
**What deliberately does NOT happen:** • Search engine crawlers (Google, Bing, Facebook preview, etc.) are NOT redirected — SEO stays unchanged • If you **manually** click "DE", you stay on German — even with an English browser, even after reload, even in new tabs • If you manually choose "EN", you stay on English — even when opening a German link/bookmark (a bookmark to `/pricing` then leads to `/en/pricing`)
**Additional fixes shipped alongside:** • Results page (`/results/...`): bracket headings "Quarter-Final / Semi-Final / Final" are now translated correctly (previously always German, even on the English page) • Projection view: "Live View" / "Results" toggle is now actually English on the English page
Match Reports are now available
Every finished match now shows a complete **side-by-side player report**. The stronger value per row glows green, the winner gets 🏆 + a gold accent.
**What's in the report?** • Legs won • Average (match average) • Scoring average (excludes finish attempts) • First-9 average • Checkout % • Checkout rate (e.g. 3/26) • Highest finish • Total darts thrown • Best leg (fewest darts) • 60+ / 80+ / 100+ / 140+ / 180s
**Where does the report appear?** • Quick Match + Pass-and-Play: right in the result screen • Beamer/board: second step after the confetti-trophy • Tournament (Admin + Player): every finished match is tappable → dialog with the full table • Club league / team match: per singles match beneath the fixture overview • Public results page (shared link `/results/...`): every match row is now tappable • Match replay page (`/team-matches/.../replay`): shows the full report • Team match detail (captain view): each finished singles match has a "Show statistics" chip
**Note:** for matches finished before this update, some fields stay empty — if you see "—", the match was simply played before today. New matches have everything.
Try the tournament wizard without signing up — account only required to create
You can now **click through the entire tournament wizard without an account**. Pick a format, enter a tournament name, configure best-of / mode / bracket options — everything works without signing up.
Only when you hit **"Create tournament"** at the end, we ask you to register or log in. After successful auth, your full setup is **automatically restored** and the tournament is created immediately — no need to re-enter anything.
**Why the change?** Until now, the first click on "Create tournament" redirected straight to the login screen, without you ever seeing what the app actually does. Now you see all the options (all 7 tournament formats, modes, best-of config) before you decide.
**Technical:** your setup is cached in your browser for 24 hours and submitted right after login. If a chosen format is outside your tier (e.g. Swiss on BASIC), you get the usual upgrade hint — but the rest of your setup remains intact.
Pricing page redesigned — Mobile-first, PREMIUM highlight, in-page FAQ
The **pricing page** has been rebuilt from scratch — easier to grasp and finally smartphone-ready:
**Yearly is now the default** — when you land on pricing, the yearly plan is pre-selected. Next to it a clear **"Save €19.89/year"** instead of just "Save 17%". If you prefer monthly, one tap switches it.
**PREMIUM as the main offer** — a big card at the top with everything unlocked (all 7 tournament formats, unlimited players/boards/clubs, beamer projection, full player stats, teams & league). Includes a **per-day price** ("from €0.27 per day"). PRO and BASIC sit below as compact alternatives.
**Comparison table on demand** — for the detail-oriented, "Compare all features" expands a compact table (player limit, boards, tournaments, stats, club features — Basic vs. PRO vs. PREMIUM at a glance).
**Frequently asked questions** — six of the most common questions right on the page as an accordion: what happens after the trial, can I cancel anytime, which payment methods, what happens to my data — no support email needed.
**Built mobile-first** — bigger buttons, more breathing room, full-width cards, collapsible FAQ. 74% of our visitors come from phones — now it actually feels that way.
New: Match replay + head-to-head stats DartCounter-style
You can now open the **match replay** for every finished match in a friendly or league season — and a new **head-to-head comparison** DartCounter-style shows both players side by side.
**Head-to-head comparison** — new on the match replay page **and** in every sub-match card of the public results page: a side-by-side table with average, first 9, checkout %, 100+/140+/180s, highest finish and shortest leg. The better value is highlighted in green — at a glance you see who led in which discipline.
**Open match replay** — the **public results page** of a team match (`/team-matches/share/...`) now shows a **"Replay →" button** for each sub-match. Click it to open a dedicated page with score header, the head-to-head comparison, and a **leg-by-leg list**: per leg you see winner, darts per player, highest checkout and duration.
The **league season** player detail (click a player in the "Players" tab) also exposes the replay link for each match.
**Shareable** — the replay page is public via the share code, no login required. Handy to share a 121 checkout with the team or for a captain debrief "why did we lose leg 3".
**Note**: The **throw-by-throw replay** (every individual turn T20-T19-D16) is coming in a later update — for now we show the leg level, because the app only stores the per-turn totals.
New: Club Teams & Team League with seasons, standings and player stats
The biggest update in months — complete club league system is now live:
**Teams within your club** *(PRO and up)* — each dart club can now host multiple **teams** (e.g. "Eagles 1", "Eagles 2"), pick a captain, assign players from the club pool and share a team code. Captains set the lineup (singles + doubles) before every match.
**Friendlies between teams** *(PRO and up)* — invite other teams via team code, choose a format preset (DDV-Klassisch, BDV-Bezirksliga, UK Pub League, UK Super League or Custom), set lineups in parallel. Live execution across multiple boards, projection view with a carousel of running sub-matches, per-player stats, walkover option for cancelled sub-matches. Public results page for sharing.
**Club leagues with seasons & schedule** *(PREMIUM)* — under **/leagues** you create a league with a points system (3-1-0 adjustable) and format. Teams request to join via league code, you approve. At season start the app generates the **Berger schedule** (round-robin, optional home + away) — all matches appear with one click.
**Live standings with form curve** — sortable table with DFB-style tiebreaker (points → head-to-head → leg difference), form of the last 5 matches as W/D/L chips (green/yellow/red). Updates flow **live via WebSocket** — once a match finishes, the table refreshes in every open browser without reload.
**Auto-champion celebration** — once every matchday is played, the season automatically flips to **FINISHED**, the champion is recorded, and the standings show a big **trophy banner with confetti**. Season stats freeze in place.
**Player stats & top lists** *(PREMIUM)* — new **Players tab** shows league aggregate (total 180s, league average, highest checkout, active players), 4 top-5 lists (average, 180s, checkout, most matches) and a sortable table of all season participants. Clicking a player opens the **match-by-match detail**: every sub-match with opponent, score, average, 180s, highest checkout.
**Everything works on mobile** — the table collapses columns, the detail modal goes fullscreen, and every action is covered by data-testid (162 automated tests).
Manual draw + custom match order
Two new features for everyone who already has their draw on paper or wants to steer the match order live:
**Manual draw** — for knockout and group+KO tournaments you can now choose **"Manual"** as the draw mode at creation time. After adding all players, the **Bracket tab** in the admin area shows an editor where you either click together the round-1 pairings yourself (with the option to mark individual players as BYE) or manually assign players to groups. The tournament can only be started once the draw is set — everything after that works as usual.
**Match order** — in the matches tab each pending match now shows two small **▲▼ buttons** to change its position in the list. Handy when a player arrives late, you want to follow a specific seeding or just sort upcoming matches. The order also applies to the player and projection views.
The default modes (random draw, fixed seeding) remain unchanged — the new option is purely additive.
Faster navigation: new footer & quick links on the homepage
The footer is now organised into three columns — **Product**, **Use cases** and **Legal** — with direct links to Quick Match, Dart Trainer, Dart Club, the use-case pages (pub tournament, club tournament, league) and our comparison pages.
On the homepage there is also a small **"Popular use cases"** section underneath the cross-link tiles that takes you to the dedicated use-case pages with one click.
No hidden features, just shorter paths through the app — handy whenever you want to point someone to the right page ("Here is the club tournament page", "Here is league management") without typing the URL manually.
24 h Premium on us — no credit card, no subscription
Every login and signup now offers you **24 hours of Premium for free** — one click, no credit card, no subscription.
With an active trial you unlock all 7 tournament formats (Champions League, League, Swiss …), connect unlimited boards in parallel, run any number of active tournaments and see extended statistics with player heatmaps.
No credit card, no subscription. After 24 h the trial ends automatically and your account stays on BASIC. If you want to upgrade afterwards, the pricing page is one click away.
**Also shipped in this wave:**
- Pricing page: the **Try 24 h Premium free**-button is now the first thing you see at the top — with trust signals (Cancel anytime · Stripe-secured · No minimum term).
- Quick Match (1v1 without account): after the match you see your average, your 180s and your best checkout. We offer to save the match to a **free account** so you can see next week how much you have improved.
- Stats tab in the admin dashboard: BASIC users now see a **preview** of Premium statistics (blurred) plus clear CTAs — no more black box.
- Upgrade dialog: when you hit a Premium format like Champions League, we now explain concretely **why** clubs and leagues love that format — instead of just saying "Upgrade required".
- Verification reminder (1 day after signup): the mail now mentions the 24h free trial as a bonus, so clicking "Verify email" directly delivers value.
Edit every tournament setting before the start
Until now the admin "Settings" tab only let you change game mode, legs and bracket/board mode. Format-specific things — matches per player (Champions League), number of groups, KO qualifiers, whether there's a 3rd/4th place match — were locked in at creation.
From now on **everything from the create dialog** is editable before the tournament starts:
- Tournament name, game mode, scoring type, legs/first-to - Matches per player (CL), KO qualifiers, group count, best runners-up - **New Yes/No switch "Play 3rd/4th Place Match"** — surfaced as a clear toggle instead of being hidden in a number - KO phase with its own settings, including per-round configuration (R16 Bo5, final Bo11, etc.) - Double Elimination mode
The format itself stays fixed.
**Use case:** connect all tablets in the morning, then adjust match count and group setup right before kickoff depending on actual turnout — no need to recreate the tournament. Comes straight from club feedback.
Small companion fix: the "KO Round Modes" dialog and the KO rounds row in the overview were still showing German strings in the English UI — now fully localized.
Projector results screen: QR code always visible, no scrolling needed
When a tournament finished, the projector showed the results screen with podium, stats and hall of fame — but the QR code to the results page sat at the bottom. Spectators had to wait for it to scroll into view (or got nothing at all if the projector machine was static).
New layout: podium with stats and hall of fame on the left, a dedicated card on the right with the QR code large and prominent, plus the link URL. Nothing scrolls anymore — the QR is visible from the start and can be scanned at any time.
New: Configure each KO round individually (R16/QF/SF/F + 3rd-place)
Previously the KO phase had **one** mode for all rounds — once groups were done, everything ran to the final on the same Bo3/Bo5/Bo7. Classic tournament pacing (e.g. R16 Bo5, QF Bo7, SF Bo9, Final Bo11) wasn't possible.
Now you can set a separate mode **per KO round**. Two entry points:
• Right when **creating the tournament** (wizard under "KO Phase" → toggle "Configure each KO round individually") • Later from the **admin overview** ("KO rounds" card → "Edit") — editable as long as the KO phase hasn't started yet
The 3rd/4th-place playoff has its own slot, so you can configure it separately (e.g. short Bo3 to ease out while the final is Bo11).
Only GROUP_KNOCKOUT and CHAMPIONS_LEAGUE — other formats don't have a separate KO phase. Existing tournaments stay unchanged: without configuration the KO phase runs as before with a single shared mode.
SmartDart branding on projector view and shared result pages
When the projector runs at the club for hours or you share a result link via WhatsApp, there was no visible cue showing where this actually came from.
On the **projector view**, the SmartDart logo now sits in the top-left header next to the tournament name, with a subtle "smartdart.app" watermark in the bottom-left. Both clickable — in case the projector machine does have a mouse.
On the **public result page** (`/results/CODE`), there's now a clickable logo plus wordmark at the top (replacing the old "Back to SmartDart" button) and a prominent branding block at the bottom: logo, "Created with SmartDart", subtitle, and a big "Start your own tournament" button. Anyone receiving the link from a friend immediately sees what the app does and can start a tournament with one click.
Admin overview: player and boards tiles are now directly tappable
When a tournament has just been created and is still in preparation, it wasn't always obvious for first-time admins where to add players or boards.
From now on, the player tile and the boards tile in the admin overview *are* the button while in preparation mode: a small arrow in the top-right corner, "Add player" or "Add board" as a hint at the bottom of the tile, a tinted border, and hover/tap feedback. Tapping anywhere on the tile jumps straight to the matching tab.
Once the tournament is running the hint disappears and the tiles just show the numbers again. For quick tournaments without boards, the boards hint is hidden automatically.
Live score on projector and player phones: remaining score after every dart + dart progress indicator
On the scoring device, the player has always seen the remaining score update dart by dart — on the projector and on the player phones, however, the score only refreshed after all three darts were entered.
From now on the remaining score also ticks down on the projection and in the player view immediately after each individual dart. In addition, three small bars under the active thrower's name show how many darts have been thrown in the current turn — the first bar lights up after dart 1, the second after dart 2, all three after the full turn.
Bust throws roll the preview back, and at the end of the turn the confirmed score from the scoring device takes over as usual.
Scoring device: new match assignments appear automatically
Up to now you sometimes had to manually refresh the scoring device or reopen the tab when the tournament admin assigned a new match to the board.
From now on the scoring device automatically refreshes its match list whenever any of those matches changes — so a fresh assignment lands right away. Upcoming matches show up in the queue immediately, and when the admin starts the next match, the scoring view jumps to it without any extra step.
Double-elimination auto-rotate: speed now configurable
In auto mode, the double-elimination projection switches automatically between Winners and Losers Bracket. Up to now the wait time was hard-coded to 10 seconds — some found that too fast, others too slow.
The layout popover now has a seconds slider from 3 to 30 seconds. The choice is persisted and applies to every double-elimination tournament on this device.
Double-elimination projection: layout controls now apply here too
Up to now, the "Layout" button on the projection was crippled for double-elimination — only font size, score/legs, and QR mode worked.
From now on the same controls apply as for the other formats:
• Toggle sections — LIVE MATCHES, UP NEXT, RECENT RESULTS, and the stats ticker at the bottom • Live card style: PDC, Stadium, Broadcast, or Classic • Pick the stats shown under each player's name (average, 180s, 140s, ..., highest checkout) • Auto-scroll for long WB/LB brackets and long lists • QR code either as a fixed section in the live column or as a big overlay
The WB/LB/Both/List/Tiles toggle in the center of the screen stays untouched — it's DE-specific and the fastest way to switch between brackets.
Double-elimination projection: unified look-and-feel with the other formats
The big-screen projection for double-elimination tournaments now uses the same building blocks as the other formats (KO, Group-KO, Champions League, Round-Robin, League, Swiss).
The left column now has three clearly separated sections: LIVE MATCHES, UP NEXT and — new for double-elimination — RECENT RESULTS. So you can tell at a glance what is happening right now and what was just played, without needing to read the bracket tree.
Grand Final showcase, reset banner, auto-rotate WB↔LB and the final podium remain unchanged. Upcoming updates will bring the familiar layout controls (toggle sections, pick card style, density) to double-elimination as well.
Admin: leg entry unified — submits only on confirm
In the Matches tab and the Boards tab, leg entry now works with the same flow:
Tapping a player's name stages the leg locally on the card (highlighted as "unsaved"). Only when you hit "Confirm" does the change go to the server — until then, mis-taps can be dismissed via "Undo" without anything being saved.
The Matches tab now also features the large tap zones per player (previously just small "+Leg" buttons), exactly like the Boards tab. −1 Leg and "Set match winner" are reachable through the three-dot menu on each player tile — same as on the board.
When the confirmed score ends the match, it closes immediately with a winner hint — no tab switch needed.
Board view: "who starts?" as a clean dialog
On the board view (DeviceView) every queued match used to show a tiny "Starter: Player 1 / Player 2" toggle below it — visually busy, especially on tablets.
From now on you just hit "Start" and a clean dialog appears: "Who starts?" with two large buttons for the player names. One tap and the starter is set + the match begins. Cancel closes the dialog without changing anything.
Projection: bracket auto-scrolls vertically
The auto-scroll toggle in the projection layout settings now also applies to the tournament bracket. With large KO brackets or Champions League tournaments the tree gently scrolls top-to-bottom and back, so every round becomes visible on the projector without anyone touching the tablet.
Horizontal swiping remains manual (for very wide brackets). When the content fits the screen entirely, nothing animates — same as the match lists.
Projection: layout switch is now a proper button
The entry point to the layout settings (top-right in the projection) used to be styled as a small chip — which read more like a status label than a clickable control. We turned it into a clearly recognisable accent-coloured button so it's obvious at first glance that this is where you can tweak the layout.
Tournament stats: more leaderboards
The tournament stats tab now has three new leaderboards:
• Best First-9 Avg — average 3-dart score over the first 9 throws per leg (pro: 60+, top tier: 90+).
• Best Legs — top 5 legs with the fewest darts to win (the "Holy Grail" in darts).
• Longest Legs — top 5 legs with the most darts (anti-stat: shows the gruelling checkout battles).
Projection: live card stats now configurable
In the projection layout settings (Layout chip top-right) there's now a new "Live-Card Stats" section. You can pick freely which stats show below the player name — Avg, 180s, 140+, 100+, 60+, 26s, High Finish and/or current leg score.
Applies to the "Broadcast" and "Classic" card styles. PDC keeps the fixed LEGS/SCORE/AVG columns (stadium default) and Stadium stays drama-pure without stats. Selection is saved in your browser and applies across tournaments until you change it.
Default: Avg + 180s + High Finish (as before).
Stats: 60+ and 26s are now tracked everywhere
In addition to 100+, 140+ and 180, we now track two more score buckets in all match and tournament stats:
60+ (throws from 60 to 99) as an extra stat category and 26 as an anti-stat ("Bed and Breakfast" — the classic score when you miss T20).
The new values appear in your profile, the tournament stats tab, the projection, the live player banner, the quick match result and the club leaderboard. The tournament stats tab also gets a "Most 26s" leaderboard — as a tongue-in-cheek anti-award. Order: 180 → 140+ → 100+ → 60+ → 26.
Note: 60+ and 26 count from now on — older matches show 0 here since these values weren't tracked before.
Quick Match: per-player handicap + Single/Master Out
In Quick Match you can now choose different starting scores (101, 201, 301, 401, 501) and out modes (Single Out, Double Out, Master Out) per player.
Great for matches with mixed skill levels — the weaker player starts e.g. on 301 Single Out, the stronger on 501 Double Out. The "Play with handicap" toggle appears in the quick-match wizard right below "Who starts?".
Who starts – now in tournaments and before the decider leg
In tournament mode you can now pick who starts each match before it begins, right in the boards tab. Plus: in best-of matches you'll be asked who starts the decider — bull-off style (in the app: just pick the winner of the bull-off).
Fast entry: how many darts on checkout?
In fast score entry (total mode), a small dialog now appears on checkout: "How many darts to check out — 1, 2, or 3?". This keeps the average accurate even when someone finishes with just 1 or 2 darts. Default is 3 — one tap and you're done.
Last throw everywhere + persistent undo button
You now see the last throw of each player everywhere — score entry (DeviceView), Quick Match, and in the PDC live scoreboard on the player dashboard. So you always know what was thrown last.
Plus: the undo button in DeviceView now also works after tab switch or browser reload (previously the local state was lost). Mistyped = simply undo, score stays correct.
Live Scoreboard in PDC style with all stats
The player and spectator dashboard now displays a full PDC-style live scoreboard at the top:
Large remaining points for both players, thrower highlighted green, "On throw" indicator. Stats grid per player: average, 60+, 100+, 140+, 180s counter. When remaining ≤170, a checkout suggestion appears as a green highlight (e.g. "T20 · T18 · D8"). Board is prominently displayed in gold colors at the top right.
The banner shows your own live match — or, if you don't have one, the current highlight match in the tournament. Visible on the "My Matches" tab (player) or "All Matches" tab (spectator).
All Matches: Live score in match cards
The "All Matches" tab in the player dashboard now also shows the currently remaining points for both players in cards/rows of live matches. Player on throw is highlighted green.
KO Bracket: Live score in match cards
Match cards in the KO bracket now show the currently remaining points for both players during live matches — the score of the player on throw is highlighted green. Works in admin, player and projection views as well as the results page.
Live Match: current scores + who's up
In your live-match banner you now see not just the legs won, but the currently remaining points for both players — plus a hint "You're up" / "Opponent is up" so you always know whose turn it is.
Edit player name also during running tournaments
You can now also fix typos in player names after the tournament has started — the edit button stays visible in the admin dashboard at all times. Standings, bracket and projection update immediately.
Deleting players is still only allowed before tournament start, since it would damage the match history.
Join: Choose player or spectator + player list on typos
When joining a tournament, you're now first asked whether you want to participate or just watch. Spectators no longer need to enter a name — they're in within a second.
If you join as a player and your name doesn't exactly match, we show you the list of registered players — just tap your name and you're in as a player (instead of accidentally ending up as a spectator). You can still switch to "watch as spectator" from the list if needed.
Group Tournament: Top X per group + flexible wildcards
When creating a tournament, you now only pick "Top N advance" and the number of groups — the app automatically calculates what that means:
• Top 16 + 4 groups → Top 4 per group • Top 8 + 5 groups → 1 per group + 3 best runners-up (wildcards) • Top 16 + 5 groups → 3 per group + 1 best 4th-place
Live preview shows immediately who advances and whether the bracket fits cleanly or requires byes. In the admin dashboard and projection view, direct qualifiers are highlighted green, wildcard slots in amber with a "WC" badge.
Wildcard Selection: Dynamic + Live Preview
The tournament wizard now only shows valid wildcard options — with 3 groups, options 4+ disappear because each group only has one runner-up.
New below: a live hint "5 group winners + 3 wildcards = 8 players in KO" plus bracket status (✓ fits perfectly / ⚠ will be padded with byes). You see instantly whether your selection results in a clean bracket.
Group Tournament: 5 Groups & Wildcard Qualification
When creating a group+KO tournament, you can now select 5 groups (this option was previously missing).
New: the "Best Runners-Up" wildcard option. Instead of a fixed number per group, you can set how many of the best second-placed teams advance as wildcards — e.g. group winners + 3 best runners-up.
Career Mode: Tournaments against 100 AI opponents
New: Career Mode! Play full tournaments against 100 unique AI bots — each with their own name, nationality, playing style, and skill level.
8 difficulty levels from Casual Thrower to PDC Pro. Choose tournament size (8, 16, or 32 players) and format (KO, Round Robin, Group+KO) — the same options as real tournaments.
Your career profile tracks tournament wins, average, 180s, and your personal rivalries: Who is your nemesis? Who do you play most often? A public leaderboard shows top players per difficulty level.
Active tournaments are saved — pick up where you left off at any time. Find it at /career.
Standings tiebreaker, KO settings in overview & better defaults
When two players are tied on points and leg difference, average is now used as the 4th tiebreaker (after head-to-head). Previously, equally ranked players were shown in an arbitrary order.
KO phase settings (separate game mode/legs for the knockout round) are now shown as a dedicated tile in the tournament overview in the admin dashboard — e.g. "501 · Best of 5".
When creating a tournament, board mode and bracket mode now default to "Fixed assignment".
Configure the KO phase with its own game mode
For tournaments with a group phase (format "Groups + KO" and "Champions League") the final stage can now be played with different settings than the qualifying phase — e.g. groups 301 best of 3, knockout 501 best of 5.
The Create-Tournament dialog has a new "KO phase" section with a toggle "Use different settings for the KO phase". When off, everything works as before: the KO phase inherits the qualifier settings. When on, you can pick game mode (301/501), scoring (best of / first to) and leg count separately.
The settings are locked in at creation time and apply to every KO match once the knockout phase begins — ideal when you want a quick group phase and a more substantial final round.
Faster leg scoring in the Boards tab
In the admin Boards tab, recording leg results is now much faster and far more forgiving:
1. Tap on the player name / field = +1 leg, immediately. Large tap zones for thumb input on tablets.
2. "−1 Leg" button right under each player name — misclicks corrected in one tap, no dialog.
3. "Undo last leg" button at the bottom of the card — reverts the very last entry whenever at least 1 leg has been scored.
4. The match never ends automatically: when someone wins the deciding leg, an explicit "Confirm match — XX wins YY:ZZ" button appears. Accidental taps will never finish a match.
5. Three-dot menu per player for rare actions: set match winner directly, open the score dialog.
6. Leg progress as small dots per player — at a glance you see how many legs are left.
7. On first visit to the Boards tab a short tips box explains all four input paths (one-time, dismissable).
Operators who use external auto-counter systems and run SmartDart only for tournament management save several hundred taps per hour — and every misclick is visibly correctable in one tap.
Projection: four live-card styles, spectator QR, and full layout control
The projection view has grown a lot — everything is now bundled in the same Layout popover at the top right:
1. Four selectable live-card styles: "PDC" (sportscast scoreboard with columns LEGS/SCORE/Ø), "Stadium" (drama with huge score), "Broadcast" (slim TV lower-third bar), and "Classic" (two player rows with stats). Free to pick per format.
2. Spectator QR code in three modes: off / small as a section in the live column / full-screen overlay. Plus a "Show QR" chip in the header — one click opens the overlay for an announcement, one click anywhere closes it again. Anyone scanning lands in the tournament as a spectator with no sign-up.
3. Size is now a slider (50–150 % in 5 % steps) instead of click-through stages. Works from the header chip and inside the layout popover.
4. Table density (Compact / Normal / Comfortable) for every format with tables — adjusts row height and font size in one go. Tables also show each player's average (Ø), both in the standings and under finished match results.
5. Hero number switch (legs as the big number vs. running 501 score) as clear tile selection instead of a toggle.
6. League view expanded: spotlight cards show the top performers of the season (best average, most 180s, longest win streak, most wins). The matchday hero now has a season progress bar showing how far the season has come.
7. Match progress in the header is now an animated fill bar — flows smoothly to the current state and turns green at 100 %.
8. Auto-scroll toggle for long lists (table, results, upcoming, groups) — gentle up-and-down when the content doesn't fit the container.
9. Double-Elimination tournaments now also get the layout chip — with a reduced feature set (size, hero number, spectator QR), while DE's own bracket toggles (WB / LB / Auto) stay intact.
All settings are saved and come back automatically the next time you open the projection.
Projection view gets the sportscast treatment — with its own layout editor
The projection view (/projection) now looks like a real sportscast. Whichever format you are running — KO, group KO, Champions League, round robin, league or Swiss — the screen carries the same stadium-style look: dark background, clear section headers with coloured accent bars, pulsing "LIVE" markers, animated score updates and a scrolling stats ticker at the bottom with top values, 180 counts and form highlights.
New sections per format: "LIVE MATCHES" with big cards (the player currently throwing is highlighted), "UP NEXT" for the upcoming pairings, "RECENT RESULTS" with a trophy icon for the winner, plus format-specific "GROUPS", "STANDINGS", "BRACKET" or "MATCHDAY".
Brand new: the layout editor. There is now a "Layout" chip in the top-right — click it and you decide what to show and how big. Three modes (split, live only, bracket/table only), a slider for the column ratio (from 20/80 to 80/20), switches per section to show or hide them, and a reset button. Your settings are saved and come back automatically the next time you open the projection.
Tablet-mirroring tip: combine the layout editor with the size toggle (60 %, 70 %) so your tablet layout fits cleanly on a TV or beamer — no matter which format is running.
Projection view loads faster — new size steps for tablet mirroring
Two improvements to the projection view (/projection):
1. Faster loading — the page used to download the full tournament list on every open just to find the right tournament by its code. It now asks the server for that one tournament directly. Noticeably faster, especially on mobile networks or once a lot of tournaments live in the system.
2. New size steps 60 % and 70 % in the “Size XX %” toggle at the top right. Handy when you mirror the projection view from a smaller tablet to a big screen (Cast / AirPlay / Miracast / HDMI). Just dial the content down on the tablet — the TV or beamer will scale your tablet picture back up to its own resolution without cutting things off the edges or squashing columns into each other. The projection now works cleanly no matter how large your tablet is.
English content moves to clean /en/* URLs
Until today the English version of pages lived behind a `?lang=en` query parameter (e.g. /pricing?lang=en). From now on it has its own clean URLs: /en/pricing, /en/dart-training, /en/dart-club. That makes English pages much easier to surface in Google search results and ensures each language gets its own listing instead of being treated as a duplicate.
Old `?lang=en` links keep working — they auto-redirect to the new path. The language toggle in the header behaves the same as before; only the URL in the address bar looks cleaner now.
Tier-limit dialog now offers your free trial directly
If you hit a feature on BASIC that requires an upgrade (e.g. a locked format, more players, more active tournaments), the upgrade dialog now offers your free 24-hour PREMIUM trial directly — as long as you have not used it yet. One click on "Try free for 24h" and you can use the feature immediately, without taking out a subscription.
Not logged in yet? The dialog now tells you that a free account gets you 24 hours of PREMIUM for free, and takes you straight to sign-up with one click.
Bug fix: In Checkout Training, the bust notification was shown to German users as a raw key ("training.bust") instead of the proper text. It now correctly reads "Bust! Muss auf Double auschecken" again.
Also: several English translations have been brought up to date — English users saw a few German originals in places ("Keine Matches.", "Niedrige Erkennungsqualitaet...").
Match history, best legs & resume button on the statistics page
The statistics page now shows a match history with your last 10 matches including leg score (e.g. "3:2"), opponent, date, match average and context (tournament / bot / quick match). Lost matches have a red badge, wins green.
For matches that are still in progress or that you abandoned, an orange "Continue" button now appears — one click and you jump back into the match without having to remember the match ID or navigate through other pages. Works for Quick Match and bot matches.
New with PREMIUM: a fourth tab "Best legs" in the performances section — shows your top 5 won legs sorted by darts thrown. The fewer darts to finish, the higher the rank.
Bug fix: In the "Leg won" dialog, very short legs occasionally showed "0 average / 0 darts" for one of the two players. The backend now stores a clean pre-reset snapshot of the leg stats — the display is now correct for both sides.
Stats overview after every leg and at match end
Quick Match now shows a small overview right inside the "Leg won" dialog after every leg — leg average and darts thrown for both players, side by side.
On the result screen at match end, an additional match comparison appears: match average, first-9 average, 180s, 140+, 100+ and highest checkout for both players. Rows with no data (e.g. no 180s) are automatically hidden to keep the overview compact.
Works for early-ended matches and bot games too.
New statistics page with trends & anonymous comparisons
There is now a dedicated statistics page accessible via "My Statistics" on the start page — significantly deeper than the profile boxes.
The hero shows a 0–100 performance score with a ring visualisation, plus your headline numbers (matches, wins, legs, 180s, best avg, highest checkout).
Five comparison cards put your value next to the average across all SmartDart players — with a coloured delta arrow ("+24% above average"). Compared metrics: best match average, total 180s, highest checkout, matches played and legs played. Fully anonymous — no names, no public profiles.
A 90-day GitHub-style activity heatmap shows when you played.
PRO and PREMIUM unlock trend charts: average trend over the last 30 matches, rolling 10-match win-rate trend, and 180s per week across the last 12 weeks.
PREMIUM additionally gets a weekly recap card (this week vs. last week with deltas) and your top 5 match highlights — sortable by best average, best checkout or most 180s in a single match.
End Quick Match early
Quick Match can now be ended early right after every won leg — useful when you have to stop or want to take a break.
The "Leg won" dialog now has a third button "End match" alongside "Confirm" and "Redo last throw". You get a confirmation showing the current score. The player with more legs is recorded as the winner, and the match counts toward your statistics as usual.
On a tie (e.g. 1:1), you pick the winner in the dialog. Pre-selected is the player with the better match average — but you can switch to the other player anytime. The results page shows a "Match ended early" hint to indicate that the match was not played to completion.
Dedicated stats box for matches vs. bots
Your profile now shows a separate "Matches vs. Bots" statistics box — separated from your Quick Match stats against real opponents.
The benefit: training matches against the bot no longer skew your real Quick Match record. Both boxes show the same fields (matches, wins, win rate, average, 180s, highest checkout, legs, breaks) — aggregated independently. PRO fields and the PREMIUM match history work as before, also separated.
Player statistics on the results page
The public results page for a finished tournament (smartdart.app/results/CODE) now includes a dedicated player statistics table — one row per participant, sorted by wins and win rate.
Columns: rank, name, matches played, wins–losses, win rate, legs +/-, average, 180s, highest checkout and clean sweeps. The scoring columns (average, 180s, checkout) hide automatically when nobody tracked scoring data (legs-only mode) — so the table stays compact and only shows what was actually tracked.
More live stats in the projection ticker — including legs-only
The live stats ticker at the bottom of the projection now shows five new items:
• Most total legs won • Best leg difference • Longest match of the tournament (with number of legs played) • Total 140+ and 100+ scores
The first three also work in pure legs-only tournaments (no score tracking) — where the ticker used to be sparse, you now always see what is currently happening even without throw data.
Live average visible during play
While a match is running, the player's current average is now shown right next to their name — on the projection, in your player view and on the scoring device.
Previously the Ø only appeared on finished matches. The value now updates live with every dart, consistently everywhere — groups, knockout, grand final, third-place match, league.
Projection: scrolling stats ticker in sports-news style
The projection view now has a rolling stats ticker at the very bottom — the kind you know from sports news channels. A red "LIVE" label on the left, and the tournament's live stats scroll endlessly from right to left next to it.
What you get: total legs played, matches currently running, progress (finished vs total plus percent), total 180s, who threw the most 180s, highest checkout, top average — and for league tournaments additionally the current leader with points. For Double Elimination, live WB/LB/Grand Final matches are flagged on top.
Speed is around 70 px/s (calm enough to read along). Hovering the ticker pauses it so spectators can catch details. Works across every tournament format and stays visible during the results view as well — entertainment even when nothing is being thrown right now.
League projection: matchday moves into the header
The league projection layout used to have a separate banner right below the header — repeating the tournament name plus a "Matchday 3 / 10" indicator.
That banner is gone. The matchday number now lives as a small chip in the regular header next to status and phase. That frees roughly 70 pixels vertically — on a beamer that means one extra row of table and matches visible without scrolling.
Projection shows the key stats at a glance when a tournament ends
When a tournament finishes, the projection view now automatically switches to the results screen. The goal: see at a glance who won and who threw the highlights — without being overwhelmed by detail tables.
What you get: the podium (1st/2nd/3rd plus 4th), a few key numbers (matches, legs, players) and a "Hall of Fame" with three cards — best average, most 180s and highest checkout, each with player name and value.
Want the full picture? Scan the new QR code on the projection or open the results URL — you will get the complete bracket tree, group standings, every match result and full leaderboards.
Also new in the developer dashboard: next to "Open admin view" there is now a "Open projection view" button — one click, and you have the correct projection URL for the selected tournament.
Fixed club boards: set up once, ready for every tournament
Each club can now register its own dartboards — with name, description and optional camera URL. When you create a tournament from the club, those boards are pre-selected and set up with one click.
Where to find it: The club detail view has a new "Boards" tab. Owners and co-admins can add, edit and delete boards there. All members can see the list (read-only).
In the tournament wizard (when you click "New tournament" from the club), the boards appear as pre-selected chips — just like the members. You can deselect individual ones if only some of the boards are in play that night. The camera URL is copied onto the new tournament board; calibration and device code are generated fresh per tournament so nothing leaks across events.
Simulate now fills averages and darts
Simulating a match or full tournament previously produced a winner and leg count, but all stat fields stayed at 0 — averages, 180s, 140s, 100s, highest checkout, dart counts. That made stat tables and leaderboards look broken after a simulation.
Now the simulate button fills realistic aggregate values. Winners trend toward higher averages (58-72) than losers (46-58), 180/140/100 counts scale with the leg count, and the highest checkout is weighted (mostly 32-80, rarely 140+).
Applies to all three simulate paths: single-match simulate, "simulate all group matches", and "finish active matches". Performance is unchanged — no extra database writes are triggered.
Club affiliation now visible everywhere
A club tournament is now immediately recognizable as such — with club name, emoji and club color as a small badge.
Where you see the badge: in the admin header (clickable, takes you to the club page), in the player subheader, and in the projection header above the tournament name. Additionally, every club-member player gets a small badge under their name in the admin "Players" tab — so you can tell at a glance who is internal and who is an external guest. The tooltip shows the club role (owner / admin / member).
Also: the club leaderboard overlay on the projection view is gone — it overlapped the game and was more distracting than useful.
Club tournaments: open or closed
When creating a club tournament you now decide who can join: "Club members only" for closed club championships, or "Open with join offer" for spontaneous invites.
External players in the open mode automatically get a prompt on join: "Would you like to join the club too?" — those who accept become members (public clubs instantly, private clubs with admin approval). Club-internal stats then automatically count for the leaderboard.
Dart Clubs: your player pool for recurring teams
New: Clubs. A club is a persistent player pool for regulars, clubs or friend groups. Register members once, invite via link, start as many tournaments from the pool as you want.
Features: invite link (public or private with admin approval), name-only placeholders for players without an account (with claim flow), owner and co-admin roles, per-member club statistics, club emoji and accent color, projection widget with a top-5 leaderboard.
Tier limits: BASIC 1 club / 10 members, PRO 3 clubs / 20 members, PREMIUM unlimited. Find it under "My Clubs" or directly at /clubs.
Email verification reminder
Users who register but don't verify within 24 hours now receive a friendly reminder email with a fresh verification link.
SmartDart now also stores your preferred language at signup so that follow-up mails (password reset, trial reminder, feedback requests) arrive in the correct language.
New SEO landing pages: darts league, club tournament, pub tournament
Three new landing pages for concrete use cases: /dart-liga-verwaltung (league management with home and away), /dart-vereinsturnier (groups+KO for clubs), /dart-kneipenturnier (quick setup for pub nights with QR code onboarding).
Each landing is bilingual (DE+EN), with FAQ, SEO metadata and a direct CTA to the matching format.
Feedback or requests? Write to support@smartdart.app