Разработчик пишет код на Kotlin Multiplatform для мобильных приложений
out of time | by haylee — | openverse | by

На Хабре опубликована статья, в которой мобильный разработчик представил Jabbit — библиотеку для планирования фоновых задач в Kotlin Multiplatform (KMP). Проект предлагает унифицированный API, напоминающий WorkManager из экосистемы Android, но с поддержкой iOS и браузеров. Для IT-специалистов, работающих на стыке платформ, это может означать сокращение времени на реализацию фоновой синхронизации данных, обновлений и других периодических задач.

Что такое Jabbit и как он работает

Jabbit (название образовано от слов job и rabbit) — это планировщик фоновых задач для Kotlin Multiplatform. Он позволяет писать общий код для фоновых операций на Android, iOS, а также в среде JavaScript (js) и WebAssembly (wasmJs). Разработчик планирует добавить поддержку десктопных платформ в будущем.

Библиотека использует подход, знакомый по WorkManager: разработчик создаёт класс-воркер, в котором описывает логику задачи (например, синхронизацию данных), и регистрирует его на платформе. Задачи могут быть однократными или периодическими, с ограничениями по типу сети, состоянию зарядки и другим условиям.

Ключевые факты

Параметр Значение
Платформы Android, iOS, браузеры (js, wasmJs)
API Аналог WorkManager с поддержкой constraints, progress, retry
Хранение очереди на iOS JSON в локальном хранилище
Хранение очереди в браузере IndexedDB
Ограничения Нет поддержки цепочек задач (beginWith().then())

Как это может быть полезно разработчикам

Для команд, использующих Kotlin Multiplatform, Jabbit решает конкретную проблему: разное поведение фоновых задач на Android и iOS. На Android WorkManager гарантирует выполнение задачи даже после перезапуска устройства, на iOS BGTaskScheduler работает по другой модели — с временными окнами, которые система выделяет по своему усмотрению. Jabbit пытается сгладить эти различия, предоставляя единый интерфейс.

На практике это означает, что разработчику не нужно писать отдельные реализации для каждой платформы. Вместо expect fun scheduleSync() с разной логикой под Android и iOS, появляется один вызов jabbit.enqueueUniquePeriodic(), который работает везде.

Ограничения и подводные камни

Автор проекта честно перечисляет ограничения. Главное из них — отсутствие поддержки цепочек задач (beginWith().then()). На Android WorkManager позволяет выстраивать последовательности задач, где одна запускается после завершения другой. На iOS и в браузере пришлось бы эмулировать это поверх собственного движка, что, по словам разработчика, привело бы к нестабильной работе на части платформ.

Другое ограничение — размер полезной нагрузки (payload). WorkManager ограничивает inputData 10 КБ, и Jabbit не скрывает это ограничение. Для больших объёмов данных рекомендуется использовать файлы или базы данных, передавая в задачу только ключ или путь.

В браузере библиотека сталкивается с ограничениями API. Например, Battery API работает не во всех браузерах, а navigator.connection для определения типа сети доступен только в Chromium. Автор принял решение: если API недоступен, ограничение считается выполненным, иначе задача может зависнуть навсегда.

Что это значит для рынка труда в IT

Появление таких инструментов, как Jabbit, может повлиять на спрос на разработчиков Kotlin Multiplatform. Сейчас KMP активно используется в компаниях, которые хотят сократить затраты на поддержку двух кодовых баз под Android и iOS. Упрощение работы с фоновыми задачами делает KMP ещё более привлекательным для проектов, где требуется фоновая синхронизация, отправка аналитики или обновление данных.

Для соискателей, владеющих Kotlin Multiplatform, это дополнительный аргумент в резюме. Знание инструментов, унифицирующих разработку под разные платформы, ценится работодателями, особенно в продуктовых компаниях с мобильными приложениями.

Источник: Хабр, статья «Jabbit — фоновые задачи в KMP с API как у WorkManager (почти)» — https://habr.com/ru/articles/1073906/