Recording sharing

How learners can give recordings of their recitation to Quran Lab, what is shared, and what a developer never sees.

Learners can give the audio of their recitations to Quran Lab, to help the open recitation models listen better: a sadaqah jariyah for those who choose it. There is nothing to switch on in your app. Quran Lab decides, per app and platform, when learners are asked, and the SDK asks them with its own sheet. Nothing is recorded until a learner says yes, and you never see the recordings.

Who decides

Quran Lab, from its side, in the signed config each install reads: whether an app's learners are asked at all, and on which platforms. No option in your code turns sharing on.

The ask

The SDK's default sheet, in the learner's language (English, Arabic, Indonesian, Urdu, Turkish, Malay, French, Bengali), after a session with feedback, never at the first launch. "Share my recitations" and "Not now" have the same weight. A learner sees the sheet at most three times on an install: "Not now" is asked again at most twice, at least 7 sessions apart. A yes is never asked again.

In an app for children (the SDK's audience set to children) the sheet asks a parent or guardian. You may choose the moment yourself (each SDK's askNow), and change how the sheet looks (below). Your app's page shows the sheet in every language.

What is shared

Only after a yes, and while sharing stays on: the audio of each recitation session while the SDK listens (compressed as Ogg Opus), the model version, the device family, the OS major version and the day, under a random contribution code. No name, account, contacts, location or device identifier.

The sheet's words are the SDK's deck (version 2026-11-09.1, consent share-2026-11-09). A learner who already agreed is not asked again when Quran Lab updates them, and their sessions keep the version they agreed to.

Where it goes

Straight from the device to Quran Lab's storage in the EU, uploaded in the background and resumed after a restart. Quran Lab is a waqf: the models it trains are free and never sold.

You, your key and your app cannot open, download or delete the recordings. Your app's page shows counts only: how often learners were asked, how many shared or declined, and the minutes shared, each from 10.

Stopping and deleting

Turning the switch off stops uploads at once. "Delete what I shared", in the SDK's settings row, removes everything that contribution code shared from Quran Lab's servers right away. Only the learner can do it: the request is signed by a key that never leaves their device. A learner who lost the device uses the one-time recovery code the SDK showed them at sdk.quranlab.ai/delete.

Where it works

In every SDK. Apple apps prove their install with App Attest and Android apps with Google Play Integrity. Web pages and Windows or Linux apps cannot prove theirs, so they share at a lower trust level: fewer sessions a day per app and per learner, and their sessions are marked so training can weigh them apart.

Make the sheet look like your app

Three ways, all keeping the learner's choice the same. Keep both buttons the same weight and nothing pre-ticked.

Theme the default sheet. Colours, fonts and corners; the words and the consent version do not change. On the web the sheet reads CSS custom properties:

quranlab-consent {
  --ql-bg: #fff; --ql-fg: #1d1d1f; --ql-muted: #6e6e73;
  --ql-accent: #0f766e; --ql-accent-fg: #fff;
  --ql-radius: 20px; --ql-font: inherit;
}

On Android and Apple a SharingTheme does the same for the SDK's own sheet and settings rows. The C library has no drawn sheet: your app shows it from the copy deck the SDK hands to its consent callback.

A screen of your own, built from the SDK's copy strings: the same lines in every language the SDK ships. Report the learner's own tap back to the SDK. A screen of your own is counted like the SDK's sheet: the same asks, the same "Not now" rules, nothing recorded before the learner's own yes.

Your own wording. setWording takes your words for any line of the sheet, set at every start. The learner then agrees to your words: every session they share carries a version made from them (custom- and 24 hex digits) and the SHA-256 of the full text, so Quran Lab sees exactly what was agreed to. The SDK gives you that text and hash; send them to Quran Lab for review (your coding assistant records them with your app's declaration). Your words must still say that the audio of recitation sessions goes to Quran Lab, what else is sent, what it is for, and how to stop and delete. A learner who agreed earlier is not asked again and keeps the version they agreed to.

Exact names for your SDK version are in its README.