Хотфікс в розробці додатків: суть, механізм та як застосовувати

Автор: IT Sectr Опубліковано: 2026-08-07 Час читання: 8 хв

Хотфікс (hotfix) — термінове виправлення критичної помилки на продакшені, яке виконується поза звичайним релізним циклом. На відміну від планового релізу, hotfix пропускає частину етапів QA та тестування, щоб доставити виправлення користувачам за мінімальний час. Згідно з Посібником з робочого процесу Git від Atlassian, hotfix-гілка створюється від останнього релізного тега, а після застосування зливається назад у main та develop. Hotfix процес включає мінімальний набір перевірок, достатній для впевненості у відсутності регресії.

Головне

  • Хотфікс — екстрене виправлення продакшен-помилки поза релізним циклом
  • Гілка створюється від останнього релізного тега, а не від develop
  • CI/CD з fast-track pipeline скорочує час деплою хотфікса до 30 хвилин
  • Після деплою зміни обов'язково зливаються назад в основні гілки
  • Post-mortem після хотфікса запобігає повторенню подібних інцидентів

Що таке хотфікс і коли він потрібен?

Хотфікс (гаряче виправлення) — це патч для продакшен-версії застосунку, випущений поза чергою для усунення критичної проблеми. Хотфікс доставляється користувачам за години, а не дні, і призначений виключно для ситуацій, коли застосунок недоступний, втрачає дані або порушує безпеку користувачів.

Типові сценарії для хотфікса: краш при запуску на певних пристроях (регресія після останнього релізу), витік персональних даних через некоректну авторизацію, неробоча платіжна інтеграція (втрата доходу), порушення GDPR/CCPA compliance. Усі ці ситуації мають severity P0 або P1 у класифікації інцидентів. Планові завдання — оптимізація, рефакторинг, новий екран — ніколи не робляться через hotfix.

Важливе правило: хотфікс містить мінімальну кількість змін (1-2 файли, 10-20 рядків коду). Чим менший diff, тим нижчий ризик внести нову помилку. Якщо для виправлення потрібно змінити архітектуру або додати новий модуль — це не хотфікс, а emergency release, який потребує повноцінного code review та QA.

Чим хотфікс відрізняється від звичайного релізу

Головні відмінності хотфікса від планового релізу — швидкість, обсяг змін та рівень перевірок. Плановий реліз може включати десятки фіч, проходити повний QA cycle (regression + integration + UI tests) і займати 1-2 тижні від code freeze до деплою. Хотфікс включає одне-два виправлення, проходить прискорене рев'ю (2 approvals замість 3) та мінімальний smoke test.

З точки зору Git-процесу, хотфікс створюється від релізного тега, а не від develop-гілки. Це гарантує, що в хотфікс потраплять тільки зміни, необхідні для виправлення проблеми, без випадкового захоплення незавершених фіч з develop. Після деплою хотфікс мержиться назад у main та develop (через cherry-pick або merge).

Порівняння планового релізу та хотфікса

КритерійПлановий релізХотфікс
ScopeБагато фіч та багфіксів1-2 critical fixes
ГілкаRelease branch від developHotfix branch від release tag
Code review3 approvals, повний процес2 approvals, fast-track
QAFull regression suiteSmoke test + affected area
Time to deploy1-4 тижні1-24 години
RollbackЧерез revert-комітЧерез перескладання попереднього тега

Важливо: не кожне термінове завдання — хотфікс. Якщо менеджер каже «терміново потрібно додати кнопку» — це не хотфікс, а priority shift. Справжній хотфікс визначається severity для користувача, а не терміновістю для бізнесу. Критерій: якщо застосунок не падає і дані не витікають — завдання чекає планового релізу.

Процес хотфікса: від виявлення до деплою

Першим кроком при виявленні критичної проблеми є triage — швидка оцінка severity. Черговий розробник (on-call engineer) підтверджує баг, перевіряє логи та crash reports, визначає, чи є проблема регресією останнього релізу або довгоживучим багом. Якщо severity P0 — запускається hotfix pipeline. Стадія triage не повинна займати більше 15 хвилин.

Другий крок — створення гілки від останнього релізного тега (v2.5.0 → hotfix/v2.5.1). Розробник вносить мінімальне виправлення, комітить з префіксом HOTFIX у повідомленні, пушить і відкриває PR з позначкою [HOTFIX]. Fast-track code review: два рев'ювери призначаються автоматично через CODEOWNERS, час рев'ю — не більше 30 хвилин. Якщо змін немає через 20 хвилин — рев'ювер скіпається, призначається наступний.

Третій крок — збірка та деплой через CI/CD. Hotfix pipeline відрізняється від звичайного: пропускаються довгі integration tests (які займають години), запускається тільки smoke suite (10-15 critical scenarios, 5-10 хвилин). Після деплою моніторинг: crash rate, error rate, API latency — протягом 30 хвилин. DORA metrics для хотфіксів: час відновлення (MTTR) має бути менше 1 години.

yaml
# .github/workflows/hotfix-deploy.yml
name: Hotfix Deploy Pipeline
on:
  pull_request:
    types: [labeled]
    branches: [hotfix/*]

jobs:
  hotfix-checks:
    runs-on: ubuntu-latest
    if: contains(github.event.label.name, 'hotfix-critical')
    steps:
      - uses: actions/checkout@v4
      - name: Validate diff size
        run: bash .github/scripts/diff-check.sh 30
      - name: Build
        run: ./gradlew assembleRelease
      - name: Smoke test
        run: ./gradlew smokeTest
      - name: Deploy to staging
        run: fastlane deploy_staging
      - name: Approve & deploy to production
        if: success()
        run: fastlane deploy_production
        env:
          HOTFIX_MODE: true

У цьому пайплайні ключові оптимізації: перевірка diff-а (не більше 30 рядків), пропуск integration tests, автоматичний деплой на стейджинг і production при успішному smoke-тесті. HOTFIX_MODE env-змінна вмикає додаткові перевірки в рантаймі — наприклад, розширене логування для швидкої діагностики проблем.

Hotfix-гілки в Git: правильна стратегія

Стратегія роботи з hotfix-гілками описана в Gitflow Workflow. Основне правило: hotfix-гілка створюється від останнього релізного тега (git checkout -b hotfix/v2.5.1 tags/v2.5.0), а не від develop або main. Це гарантує, що хотфікс базується на тому ж стані коду, який зараз на продакшені, і не захоплює незавершені зміни з develop.

Після завершення фікса hotfix-гілка мержиться в main (або master) і develop. В main — звичайний merge commit з тегом нового патч-релізу (v2.5.1). В develop — merge або cherry-pick, залежно від політики команди. Якщо develop містить більше змін, ніж main, рекомендується cherry-pick конкретного коміта хотфікса, щоб уникнути конфліктів. GitFlow рекомендує мержити hotfix в main першим, а потім мержити main в develop.

bash
# Створити hotfix-гілку від останнього релізного тега
git checkout -b hotfix/v2.5.1 tags/v2.5.0

# Застосувати виправлення
git commit -m "HOTFIX: Fix crash on Android 14 notification permission"

# Злити в main та позначити реліз
git checkout main
git merge --no-ff hotfix/v2.5.1
git tag -a v2.5.1 -m "Hotfix release v2.5.1"

# Злити також в develop
git checkout develop
git merge --no-ff hotfix/v2.5.1

# Очистити тимчасову гілку
git branch -d hotfix/v2.5.1

Важливо: якщо хотфікс виправляє баг, який існує в поточній develop-гілці (баг був внесений кілька спринтів тому), то після мержа hotfix в main і develop, develop вже містить виправлення. Якщо баг був внесений тільки в релізній гілці (через cherry-pick накопичилася помилка), то в develop виправлення може не знадобитися. Root cause analysis допомагає визначити, чи потрібен cherry-pick в develop.

Ризики хотфіксів і як їх мінімізувати

Головний ризик хотфікса — внесення нової, більш серйозної помилки через поспіх. За даними дослідження Stripe (2021), 15% хотфіксів викликають регресію і вимагають другого хотфікса. Це закон підлості: чим швидше ми виправляємо, тим вища ймовірність помилитися. Мінімізація ризику досягається жорстким обмеженням розміру diff (не більше 30 рядків) та обов'язковим автоматичним smoke test.

Другий ризик — накопичення технічного боргу. Якщо команда регулярно використовує хотфікси замість планових релізів, кодова база деградує: hotfix-коміти не проходять рефакторинг, тимчасові рішення не замінюються правильними, документація не оновлюється. Health check: якщо хотфікси випускаються частіше разу на місяць — процес релізу потребує перегляду.

Третій ризик — психологічний. Регулярні хотфікси випалюють команду: on-call розробники знаходяться в постійному стресі, code review стає формальністю (всі хочуть швидше), культура якості падає. Нормальна частота хотфіксів для зрілої команди — 1-2 на квартал. Якщо більше — проблема не в хотфіксах, а в якості планових релізів.

Що робити після хотфікса

Після деплою хотфікса та стабілізації метрик проводиться post-mortem (blameless retrospective). Команда відповідає на чотири питання: що сталося, чому перевірки не впіймали баг, що зроблено для виправлення, як запобігти повторенню. Post-mortem проводиться протягом 24-48 годин після хотфікса, поки деталі свіжі в пам'яті. Blameless culture — ключовий принцип: обговорюються процеси, а не люди.

Результат post-mortem — concrete action items з відповідальними та строками. Типові action items: додати unit test на кейс, який пропустили, розширити smoke test suite, покращити моніторинг (додати alert на метрику), оновити runbook для аналогічних інцидентів. Action items мають бути виконані до наступного планового релізу.

Часто задавані питання

Хотфікс та патч-реліз — це одне й те саме?

Не зовсім. Патч-реліз (patch release) — планова поставка дрібних виправлень за regular schedule. Хотфікс — екстрене виправлення поза графіком. Patch release проходить повний QA cycle, hotfix — скорочений. Але технічно обидва можуть використовувати bump патч-версії (v2.5.0 → v2.5.1).

Чи можна зробити хотфікс без commit в Git?

Ні, хотфікс завжди фіксується в Git для traceability. Виняток — emergency fix на рівні конфігурації (feature flag, remote config), який не потребує зміни коду. Кожен хотфікс має бути прив'язаний до коміту зі зрозумілим повідомленням та referenced в тікеті інциденту.

Як швидко має бути розгорнутий хотфікс для мобільного застосунку?

Для iOS хотфікс через App Review займає 1-24 години (можливий expedited review). Для Android — 1-4 години через Google Play Console. Час розгортання залежить від політики стору та наявності emergency review process.

Хто приймає рішення про хотфікс?

Рішення приймає on-call інженер на основі severity criteria. Якщо severity P0 — хотфікс запускається без додаткових узгоджень. P1 — потрібен approval від tech lead. Empowerment команди: on-call інженер має authority запустити хотфікс без бюрократії.

Як часто допустимі хотфікси?

Для зрілої команди — 1-2 хотфікси на квартал. Частота більше разу на місяць сигналізує про проблеми в QA процесі, недостатнє тестове покриття або неправильну стратегію релізів. Нормальна частота хотфіксів — KPI якості процесу розробки.

Підсумки

  • Хотфікс — екстрене виправлення P0/P1 помилки поза релізним циклом
  • Branch strategy — гілка від останнього релізного тега, не від develop
  • Fast-track — скорочений code review (2 approvals) та smoke-only QA
  • Diff limit — не більше 30 рядків змін для мінімізації ризику регресії
  • MTTR — час відновлення менше 1 години для mature DevOps-команд
  • Post-mortem — blameless ретроспектива з action items протягом 24 годин
  • Частота — більше 1 хотфікса на місяць сигнал до перегляду процесу релізів

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також