---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.3
alternate:
  - https://divkit.tech/docs/en/concepts/faq.md
  - https://divkit.tech/docs/ru/concepts/faq.md
---
> **Documentation Index:** Fetch the complete configuration index at https://divkit.tech/docs/ru/llms.txt

# Вопросы и ответы


{% note info %}

Если вы ищете ответ на конкретный вопрос, используйте комбинацию клавиш **Ctrl + F** для поиска по странице (в macOS — **Cmd + F**).

{% endnote %}


## Общие вопросы о DivKit


{% cut "Что такое DivKit?" %}

Кроссплатформенная библиотека, основанная на подходе Server-Driven UI, которая позволяет строить пользовательский интерфейс приложений и сайтов на основе описания верстки в формате JSON.

{% endcut %}

{% cut "Что такое Server-Driven UI?" %}

Концепция разработки, в которой верстка страниц и приложений формируется на сервере. Затем описание верстки передается на клиент, где на основе этого описания автоматически отрисовывается пользовательский интерфейс.

Такая концепция позволяет:

- Изменять внешний вид приложения и добавлять новые визуальные элементы без выпуска новой версии приложения.
- Использовать одну и ту же верстку страницы на разных платформах.


{% endcut %}

{% cut "Какие платформы поддерживает DivKit?" %}

Клиентская часть DivKit поддерживает iOS, Android, Web.

{% endcut %}

{% cut "Разрешено ли публиковать приложения на основе Server-Driven UI в сторах Apple и Google? " %}

Правила AppStore и Google Play не запрещают обновлять пользовательский интерфейс приложений на основе данных, полученных с сервера, при условии, что эти обновления не меняют первоначальный смысл приложения.

{% endcut %}

{% cut "Можно ли использовать DivKit в коммерческих приложениях? " %}

Да. DivKit — это библиотека с открытым исходным кодом, выпущенная под лицензией [Apache License, Version 2.0](https://github.com/divkit/divkit/blob/main/LICENSE).

{% endcut %}

{% cut "Насколько быстро работает DivKit?" %}

По нашему опыту, отрисовка «тяжелых» страниц в среднем занимает менее 16 миллисекунд. DivKit работает многопоточно и может повторно использовать ранее отрисованные элементы. Это позволяет быстро просчитывать текстовые элементы (например, большие объемы текста или таблицы) и в целом ускорить работу интерфейса.

{% endcut %}


## Вопросы о разработке с помощью DivKit


{% cut "Откуда берутся данные для карточек?" %}


Описание карточки в формате JSON можно хранить на сервере или локально на устройстве.

Чтобы генерировать описания верстки карточек в формате JSON, можно использовать библиотеку [json-builder](https://github.com/divkit/divkit/tree/main/json-builder), которая доступна для Kotlin, TypeScript и Python.



{% endcut %}

{% cut "Как должен выглядеть макет карточки?" %}


Верстка карточки должна быть описана в формате JSON по определенной схеме.

<!--<p>JSON, который можно будет запустить в одном из демо-приложений с тестовыми данными.</p>-->

{% endcut %}

{% cut "Как быстро протестировать свою верстку?" %}

Чтобы подготовить JSON-описание верстки и увидеть превью карточки в веб-формате, можно использовать [DivKit Web Playground](https://divkit.tech/playground). Затем вы можете передать ваш JSON-файл в приложение DivKit Playground для [Android](https://divkit.tech/docs/ru/concepts/quick-start-android.md) или [iOS](https://divkit.tech/docs/ru/concepts/quick-start-ios.md) и посмотреть, как верстка отображается на мобильном устройстве.

{% endcut %}

{% cut "Как реализовать интерактивные элементы (переходы, действия, нажатия)?" %}


DivKit поддерживает [действия](https://divkit.tech/docs/ru/concepts/interaction.md), которые можно вызывать при нажатии на элемент. С помощью действий можно менять [состояние элементов](https://divkit.tech/docs/ru/concepts/interaction.md), [дозагружать данные](https://divkit.tech/docs/ru/concepts/interaction.md) или вызывать обработчики событий, которые реализованы на уровне приложения-хоста.

Также DivKit поддерживает использование [переменных и триггеров](https://divkit.tech/docs/ru/concepts/variables.md#actions). Триггер срабатывает при изменении значения переменной и вызывает одно или несколько действий.


{% endcut %}

{% cut "Можно ли менять верстку на основе динамических данных? " %}

Да, например с помощью [переменных](https://divkit.tech/docs/ru/concepts/variables.md). Если значение какого-либо свойства задано через переменную, при изменении переменной представление будет перестраиваться.

{% endcut %}

{% cut "Как обрабатывается логика (например, действия при изменении значений полей)? " %}

Логику можно обрабатывать с помощью [переменных](https://divkit.tech/docs/ru/concepts/variables.md), [вычисляемых выражений](https://divkit.tech/docs/ru/concepts/expressions.md) и [триггеров](https://divkit.tech/docs/ru/concepts/divs/2/div-trigger.md). Также DivKit содержит набор [функций](https://divkit.tech/docs/ru/concepts/functions.md) для работы со строками, датами и числами.
Например, если пользователь ввел текст в поле, это значение можно передать в переменную. При изменении значения переменной срабатывает триггер и вызывает определенное действие.


{% endcut %}

{% cut "Есть ли поддержка анимации?" %}

Да, DivKit поддерживает несколько видов [анимации](https://divkit.tech/docs/ru/concepts/animation.md): переходы при переключении состояний, нажатия на кнопки, а также появление и исчезновение элементов.

{% endcut %}

{% cut "Можно ли использовать DivKit для верстки отдельных экранов приложения?" %}

Да, можно. Например, в приложениях Яндекса часто карточки DivKit интегрируют на один или несколько экранов.

{% endcut %}

{% cut "Можно ли реализовать форму для ввода данных?" %}

Да, для этого используйте элемент [div-input](https://divkit.tech/docs/ru/concepts/divs/2/div-input.md), который предназначен для ввода текста.

{% endcut %}

{% cut "Есть ли поддержка accessibility (доступности)?" %}

Да, в DivKit существуют [элементы](https://divkit.tech/docs/ru/concepts/divs/2/div-accessibility.md), которые обеспечивают доступность для людей с ограниченными возможностями.

{% endcut %}

{% cut "Есть ли поддержка локализации? " %}

Специальные механизмы локализации не предусмотрены. Чтобы локализовать элементы интерфейса, сформируйте отдельные JSON-файлы верстки для каждого языка.

{% endcut %}

{% cut "Как работает серверная часть (бэкенд)?" %}

У нас нет готового решения, с помощью которого можно развернуть сервер. DivKit содержит библиотеки для формирования JSON-файлов верстки, которые вы можете интегрировать в свой сервер.

{% endcut %}

{% cut "Как реализовать светлую и темную темы? " %}

Используйте [переменные](https://divkit.tech/docs/ru/concepts/variables.md). Например, с сервера можно получать палитру в виде комбинации двух цветов для каждого элемента. На стороне клиента следует выставить переменные, которые обозначают, какие цвета использовать для элементов.

{% endcut %}

{% cut "Как правильно логировать карточки?" %}

Для правильного логирования параметр `log_id` должен быть уникальным. Например, при логировании карточек в карусели у каждой карточки должен быть свой `log_id`, иначе залогирована будет только первая карточка, а все остальные будут считаться дублями.

{% endcut %}

{% cut "Как отключить анимацию действия?" %}

В элементе [animation](https://divkit.tech/docs/ru/concepts/divs/2/div-animation.md) укажите `"name": "no_animation"`.

{% endcut %}

{% cut "Как создать карточку с Lottie-анимацией?" %}

Чтобы добавить Lottie-анимацию, в элементе [image](https://divkit.tech/docs/ru/concepts/divs/2/div-image.md) задайте массив `extensions`. Подробнее см. в разделе [Кастомизация](https://divkit.tech/docs/ru/concepts/extensions.md).

{% endcut %}

{% cut "Как настроить вращение элемента на устройствах с iOS?" %}

Для элементов, к которым будет применено вращение, нужно сформировать JSON-файл с учетом системных особенностей обработки нажатий пользователя. Используйте один из способов:

- Примените параметр `rotation` к контейнеру, который содержит элемент вращения.
- В параметрах `width` и `height` элемента, который необходимо повернуть, в `type` укажите значение `match_parent`. Например:

  ```json
  "height": {
    "type": "match_parent"
  }
  ```

{% endcut %}

{% cut "Как создать пустой блок?" %}

Если нужен блок, который будет просто занимать место, то используйте элемент [separator](https://divkit.tech/docs/ru/concepts/divs/2/div-separator.md) и укажите для него прозрачный цвет в параметре `color`.

{% endcut %}

{% cut "Можно ли создавать контейнеры с одним элементом?" %}

Не стоит, это отразится на производительности. Постарайтесь не создавать лишних оберток.

{% endcut %}


<!-- source: ru/_includes/index/troubleshooting.md -->
## Узнать больше {#troubleshooting}

Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: [https://t.me/divkit_community_ru](https://t.me/divkit_community_ru).



[Репозиторий DivKit](https://github.com/divkit/divkit)




<!-- endsource: ru/_includes/index/troubleshooting.md -->

