Puebla Chicago New York Los Angeles Contracts in USD or MXN · NDA before details contact@thealchemistcode.org
Case study · Own product

Soccer24: live scores from 1,100+ competitions, right on the lock screen

We designed, built and run Soccer24, a live football app for iOS and Android with widgets, Live Activities and goal alerts in 18 languages. It has 75,685 Google Play installs and a public 4.5★ rating.

Role
Own product: design, build and operations
Platforms
iOS and Android, with widgets and Live Activities
Languages
18 in the app, store listings in 19
In the stores
Since 2024
75,685 Installs On Google Play Play Console · Sep 2026 4.5★ Rating Public user rating Google Play · Oct 2026
18 Languages App, notifications and prompts App source
1 min Live refresh One snapshot for every user Cloud Functions
Soccer24
01 — The challenge

Instant results, on a daily request limit

A live scores app lives on the second a goal goes in. The data comes from API-Football, which has a daily request limit, and at first every phone asked for the score on its own, spending part of that limit.

People also want to follow the match without opening the app: on the widget, the lock screen and the iPhone Dynamic Island, and get the goal alert in their own language, without four alerts for the same goal.

02 — What we decided

Technical decisions, and why

01

One live snapshot for everyone

A cloud function polls the matches every minute and publishes one snapshot in Firestore that every phone reads. It is only rewritten when something changes: in one sample, 761 of 1,172 polls brought nothing new.

02

Fewer requests when there is no football

With no live matches, polling slows from every minute to every 2 and then 3 minutes. That stopped the daily API limit from running out.

03

Flutter, and native where the OS requires it

The app is in Flutter with flutter_bloc. The iPhone widgets and Live Activities are in Swift (WidgetKit and ActivityKit), and the Android widget is in Kotlin.

04

Alerts without floods

Alerts go out as FCM data messages per match, league and team, combined into one condition so the same goal is never repeated. By default only the top 8 leagues send alerts.

03 — In production

How it runs day to day

Staged rollouts
fastlane ships to both stores. On Google Play each release first goes to a share of users: version 2.3.1 to 20%.
Tests before every upload
A store-listing check runs before each upload. The project has 61 test files across the app and the functions.
In each person's language
Notifications and the rating prompt arrive in the phone's language, in 18 languages.
A cache that never freezes the score
Responses are cached, but live data never is: the snapshot expires after 3 minutes and the app asks again.
04 — Stack

What it’s built with

  • Flutter
  • Dart
  • flutter_bloc
  • Firebase Auth
  • Cloud Firestore
  • Cloud Functions
  • FCM
  • Crashlytics
  • API-Football
  • Swift · WidgetKit · ActivityKit
  • Kotlin
  • fastlane
Related service Flutter development

What does success look like for your product?

The first call and the proposal are free. The person who will lead your project replies in person.