---
title: Free и офлайн
description: Free без сети; платные права — из локального кэша после синхронизации.
---

# Free и офлайн

## Free

Базовый **локальный** режим приложения:

- Работает **без интернета**
- **Не** вызывает `createPayment`
- Обычно **без** серверных entitlements
- Может быть на пейволе для сравнения (`is_free: true`)

## Free + платный

Покупка **добавляет** права, не убирает free.

```text
доступ = free-local ∪ активные платные entitlements
```

## Офлайн после покупки

| Кто | Поведение |
| --- | --- |
| Приложение | При последнем онлайне сохранить снимок (`codes`, `expires_at`, `is_lifetime`). Offline: free всегда; платное — из кэша до expiry. |
| Админка / API | Только онлайн. Отзывы применяются при следующем sync. |

## Алгоритм клиента

```text
canUse(feature):
  if feature in FREE_LOCAL_SET: return true
  if network:
    snapshot = getMyEntitlements()
    saveCache(snapshot)
    return snapshot.codes.contains(feature)
  cached = loadCache()
  if missing or expired (и не lifetime): return false
  return cached.codes.contains(feature)
```

SDK даёт сетевые API; **кэш — ответственность приложения**.
