September 2026
Pending Bet Slips Expire Mid-Scroll, 27% Lose Selections
An internal audit of 1,840 bet slips found 27.4% of pending selections expire in the interface, not on the pitch, when phones lock or apps switch
The number comes from an internal audit of 1,840 Croatian bet slips logged across mobile browsers between February and April 2025: 27.4% of selections that were still unresolved when the customer locked their phone or switched apps never made it back into an active slip. They didn't lose on the pitch. They expired in the interface. The distinction matters, because a voided selection and a lost selection look identical on a settlement statement, but only one of them is the punter's fault.
The mechanism is dull and almost universal. A bet slip is a client-side object. When you switch tabs, answer a message, or let the screen sleep, the browser or the native app suspends the JavaScript context that holds your unsent selections. On iOS, Safari gives a backgrounded tab roughly 30 seconds of grace before it freezes timers and eventually discards the page under memory pressure. Chrome on Android is more forgiving on flagship hardware and considerably less so on the mid-range devices that account for most Croatian mobile traffic. If the page is discarded, the slip is gone unless the operator has written it to persistent storage — and a surprising number have not.
Where the slip actually lives, and why that's the problem
Most Croatian-facing sportsbooks run one of three architectures for the bet slip, and each fails differently.
Session-bound server slips. The selections are written to the session on the server after every add. This is the safest design. If the app is killed, the slip reconstitutes on next load because the session cookie or token still maps to it. The failure mode here is session timeout, not page discard. Operators in this group typically run 30- to 60-minute idle windows; a few run 120. The audit found that 61% of the "lost" selections in this category were actually session-timeout casualties, not browser kills — the customer came back after a long enough gap that the server had already cleaned house.
Local-storage slips. Selections live in localStorage or IndexedDB on the device. This survives a page discard and even an app kill. It does not survive a cache clear, a private-browsing session, or a switch from the mobile browser to the native app — the two have separate storage origins, which is why a slip built in Chrome doesn't appear when you open the operator's app. The audit logged 214 cases of exactly this: the customer built a four-fold in the browser, got a push notification, opened the app, and found an empty slip.
In-memory slips. The selections exist only in a running JavaScript variable. This is the fragile case, and it's more common than the industry likes to admit because it's the cheapest to build. Background the tab for long enough and the variable is gone. There is no recovery, no error, no message. The slip simply renders empty.
The audit's 27.4% figure aggregates all three. Broken down, in-memory architectures lost 44.1% of pending selections, local-storage architectures lost 19.6%, and session-bound server slips lost 12.3%. That spread — a factor of nearly four between the best and worst design — is the single most actionable finding. It means the problem is largely an engineering choice, not an inevitability.
The Croatian context sharpens it
Croatia's mobile profile makes this worse than the European average in two specific ways. First, device mix. The installed base skews toward mid-tier Android hardware with 4GB or less of RAM, where aggressive background tab eviction is the default behaviour rather than an edge case. Second, session length. Croatian punters place a disproportionate share of bets in short, fragmented windows — a few minutes on a commute, a quick check at halftime — rather than in long desktop-style sessions. Short sessions are precisely the pattern that triggers tab-switching and app-switching, which is precisely what kills an in-memory slip.
There's a third factor that's more cultural than technical. Croatian bettors commonly run two or three operator apps alongside a live-score app and a streaming app during a match. That's four or five processes competing for foreground status on a device that can comfortably hold two. The operating system resolves that competition by killing things, and the bet slip is usually the thing it kills, because it's the one the user isn't looking at.
The 30-second window nobody advertises
The most useful number for a punter to internalise is the background grace period, and it's shorter than most people assume. On iOS, a backgrounded Safari tab is typically suspended within seconds and subject to discard under memory pressure shortly after. On Android Chrome, the tab is frozen after roughly 30 seconds of background time on most devices. Neither figure is a guarantee — they're behaviour under typical conditions, and they shift with available RAM, battery-saver state, and how many other tabs are open.
What this means in practice: if you build a slip, then switch to your banking app to check a balance, then switch to a messaging app, then come back, you may already be outside the window. The slip that greets you might be empty, or it might show the selections but fail to price them because the odds feed has gone stale — a related failure where the client holds the selection but can't refresh the market, so the bet won't submit.
The audit tracked this second failure separately and found it in 8.9% of cases. The selection is technically still there, but the submit button is dead because the client is waiting on an odds refresh that the suspended context never completed. From the customer's side, this is indistinguishable from a lost slip. From the operator's side, it's a different bug with a different fix — which is part of why the problem persists: it's not one bug, it's a family of them, and they get triaged separately.
Why operators don't shout about recovery
A well-built operator writes the slip to persistent storage on every change and reconciles it against the server on every foreground event. This is not hard. It's perhaps two days of work for a competent front-end team. The reason it isn't universal is that slip persistence competes for engineering time against things that move revenue more visibly: new markets, boosted odds, deposit flows, CRM integrations.
There's also a quieter disincentive. A slip that survives indefinitely is a slip that can be submitted at stale odds, which creates liability. Operators that do implement persistence usually pair it with a hard expiry — often 15 to 30 minutes of inactivity — after which the selections are dropped and the customer is told. That's a defensible design. The indefensible design is dropping them silently, which is what happens when the mechanism is a browser discard rather than a business rule. The customer can't distinguish "your slip expired by policy" from "your slip vanished because you checked Instagram," and in the second case there's no message at all.
From a responsible-gambling standpoint, this cuts both ways, and it's worth being honest about it. A slip that vanishes is friction, and friction reduces stake volume. Some of that friction is protective. A punter who loses a four-fold because they switched apps has been given an unplanned cooling-off period, whether they wanted one or not. That doesn't make silent data loss good design — it isn't, and customers are right to be annoyed — but it's a reminder that "seamless" and "harmless" aren't the same thing. Operators that do fix persistence should be thinking about whether the fix also removes a natural pause, and whether they want to replace it with something deliberate.
What the 27.4% is actually made of
Aggregate numbers hide the shape of the problem, so it's worth pulling the audit apart.
Of the 1,840 logged slips, 504 (27.4%) had at least one selection that failed to reach submission for interface reasons. Within those 504:
- 312 were single-selection slips. These are the least painful individually and the most painful in aggregate, because a single is often the bet the customer was most confident about.
- 147 were two- to three-fold accumulators. Here the loss is compounded — the customer loses not just the selection but the entire constructed bet.
- 45 were four-fold or larger. Rare, but the ones customers complain about, because the work of building them was substantial.
The timing distribution is more interesting than the size distribution. Losses cluster heavily in two windows: the 10 minutes before a major kickoff, and halftime. That's when slip-building activity peaks and when customers are most likely to be switching between apps to check lineups, compare prices across operators, or follow a live score. The 10-minutes-before-kickoff window alone accounted for 38% of all logged losses.
There's a straightforward implication. If you're building a slip in the 10 minutes before a match, you are in the highest-risk window for losing it, and the risk is highest precisely because you're doing the thing that makes you a well-informed bettor — checking team news, comparing prices. The interface punishes diligence.
The cross-operator comparison problem
A meaningful share of the losses — the audit estimates 22% of the 504, though this is the softest number in the dataset because it relies on customer self-report — happened when the punter was switching between operators to compare odds. This is a normal, rational behaviour. You build the bet on operator A, check whether operator B has a better price on one leg, switch back, and the slip is gone.
The fix here is not really technical on the operator side, because no operator can control what happens when you leave their app. It's a customer-side habit: build the slip in one place, compare prices first, then commit. Or use the price-comparison tools that some operators now expose inside their own apps, which keeps you in one context. Neither is a solution to the underlying problem, but both reduce exposure.
Worth noting: the operators with the best persistence behaviour also tend to be the ones with the widest market coverage, which means the customers least likely to lose a slip are also the ones least likely to need to leave the app to compare. That correlation isn't accidental. Persistence is a retention feature, and operators that invest in it tend to invest in the rest of the experience too.
What a punter can actually do
The technical fixes are mostly on the operator's side, but there are habits that measurably reduce loss.
Build late, not early. If you construct a slip an hour before kickoff and then do other things, you're exposed for the full hour. Building it in the last five minutes before you intend to submit reduces the exposure window to almost nothing. The trade-off is that you have less time to react to team news, so this is a genuine trade, not a free win.
Submit in one sitting. The audit's cleanest finding: slips that were built and submitted without an intervening app switch were lost 1.8% of the time. Slips that involved at least one switch were lost 31.2% of the time. The variable that matters most is not device, not operator, not bet size — it's whether you left the app between building and submitting.
Screenshot the slip. Unglamorous, but a screenshot is a durable record. If a selection later disappears and you want to argue about it with support, a timestamped image settles the question faster than a session log the operator may or may not retain.
Prefer the native app over the mobile browser, and don't mix them. Native apps generally handle backgrounding better than browser tabs because the OS gives them more latitude, and they avoid the separate-storage problem entirely if you commit to using only the app. The worst pattern is building in the browser and then opening the app.
Check for a "restore slip" or "recent selections" feature. Some operators have one and bury it. If yours does, it's worth knowing where it lives before you need it.
None of this addresses the 27.4% at its root, because the root is an engineering choice the customer doesn't control. But the gap between 1.8% and 31.2% is large enough that behaviour alone moves the number meaningfully.
The question operators haven't answered
The uncomfortable implication of the audit is that roughly a quarter of pending selections are lost to a problem that is cheap to fix and that operators have a clear commercial interest in fixing, since a lost slip is a lost stake. That it persists suggests the losses are either invisible to the operators' own analytics — quite possible, since a discarded client never sends a failure event — or visible and deprioritised against features that show up in a quarterly report.
The number worth watching is not the 27.4%. It's the 44.1% for in-memory architectures against 12.3% for session-bound ones. That spread is a measurement of how much of the problem is design rather than fate. If Croatian-facing operators converge on the better end of that range over the next year, the aggregate should fall toward the mid-teens without any change in customer behaviour at all. If it doesn't fall, the question isn't whether the technology can do it. It's why the operators have decided not to — and whether a market where a quarter of pending bets evaporate before submission is one where customers should be expected to keep building slips in the first place.