# badoo

Published articles for badoo.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Scaling iOS at Bumble: Part 1/3 -- The Challenges

DevFeed: [Scaling iOS at Bumble: Part 1/3 -- The Challenges](<https://devfeed.tech/articles/scaling-ios-at-bumble-part-1-3-the-challenges-22605.md>)

Original publisher: [Read original article](<https://medium.com/bumble-tech/scaling-ios-at-bumble-76754fa874f7?source=rss----6353b5325b1a---4>)

Author: Jonathan Crooke

Published: 2024-01-31T16:10:21Z

Content type: article

Language: en

Sources: [Bumble Tech](<https://devfeed.tech/sources/bumble-tech.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [iOS development](<https://devfeed.tech/topics/ios-development.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [bff](<https://devfeed.tech/tags/bff.md>), [code](<https://devfeed.tech/tags/code.md>), [development](<https://devfeed.tech/tags/development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [modules](<https://devfeed.tech/tags/modules.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

The first article in a three-part series explains the challenges of scaling iOS production apps at Bumble Inc. It introduces the company's medium-scale iOS development context, including dozens of engineers, hundreds of modules, more than 100 feature workspaces, millions of lines of Swift, and extensive custom tooling.

### Source excerpt

Scaling iOS at Bumble: Part 1/3 -- The ChallengesIntroduction This article is the first in a series of three. We'll be presenting work undertaken during 2022 and 2023 aimed at tackling the challenges of scaling our iOS production apps. Who are we? Bumble Inc. is the parent company of Bumble, Badoo, Fruitz and Official. The Bumble platform enables people to build healthy and equitable relationships, through kind connections. Founded by CEO Whitney Wolfe Herd in 2014, Bumble was one of the first dating apps built with women at the centre and connects people across dating (Bumble Date), friendship (Bumble BFF) and professional networking (Bumble Bizz). Badoo, which was founded in 2006, is one of the pioneers of web and mobile dating products. Fruitz, founded in 2017, encourages open and honest communication of dating intentions through playful fruit metaphors. Official is an app for couples that promotes open and honest communication between partners and was founded in 2020. Who is this for? This blog post series is aimed squarely at teams operating at scales similar to ours. So what is our scale? Scale at Bumble Inc. iOS development at Bumble Inc. is certainly not small! We have: Dozens of engineers Hundreds of modules 100+ feature workspaces Millions of lines of Swift, with a dusting of ObjectiveC for old time's sake 🙃 Tens of thousands of lines of custom tooling code Lots of modularity, and of a quite high standard Just a tiny section of our module graph This might seem to readers as a pretty large scale. However in this article series we'll be considering Bumble Inc. as a medium scale team. So why is that? "Medium" sized teamsWe've chosen this medium terminology to emphasise the "in-between" state that teams can fall into in the iOS ecosystem. On one hand you have the small team; the startup, the individual Developer. Apple's Developer marketing often seems oddly focussed on these kinds of teams! They're very happy with the out-of-the-box Developer experience (and w

## \[Перевод\] От песочных часов к пирамиде: как усовершенствовать структуру тестов

DevFeed: [\[Перевод\] От песочных часов к пирамиде: как усовершенствовать структуру тестов](<https://devfeed.tech/articles/article-23646.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/652025/>)

Author: laechoppe (Badoo)

Published: 2022-02-17T12:15:34Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [qa](<https://devfeed.tech/tags/qa.md>), [qa-automation](<https://devfeed.tech/tags/qa-automation.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tag-23c525fe15c9](<https://devfeed.tech/tags/tag-23c525fe15c9.md>), [tag-910b48292e17](<https://devfeed.tech/tags/tag-910b48292e17.md>), [tag-97ed25004d35](<https://devfeed.tech/tags/tag-97ed25004d35.md>), [tag-e932065bc8da](<https://devfeed.tech/tags/tag-e932065bc8da.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui](<https://devfeed.tech/tags/ui.md>), [xcuitest](<https://devfeed.tech/tags/xcuitest.md>)

### AI overview

A tutorial on test automation for native iOS applications written in Objective-C and Swift. It explains the test pyramid, recommends many small unit tests, fewer medium-level tests, and very few high-level end-to-end or UI tests, and discusses how projects can develop an unbalanced testing structure.

### Source excerpt

Меня зовут Владислав Романенко, я Senior iOS QA Engineer в Badoo и Bumble. Мы регулярно внедряем новые фичи в приложения, и автоматизация тестирования -- один из способов не пропустить баги. Фактически автотесты входят в жизненный цикл всех частей наших приложений: бэкенда, сервисов, фронтенда и мобильных клиентов. Чем раньше мы обнаружим ошибку, тем дешевле будет её исправить. Сегодня я расскажу об автоматизации тестирования в iOS, потому что на протяжении всей своей карьеры в Badoo я плотно занимался тестированием наших нативных iOS-приложений, которые написаны на Objective-C и Swift. Хотя кое-где я буду упоминать характерные для iOS инструменты и термины (например, XCTest), общие принципы и подходы универсальны. Так что, даже если в вашем проекте используется совсем другой стек, статья будет вам полезна. Читать далее

## Автоматическая многоязычная модерация сообщений для миллионов пользователей

DevFeed: [Автоматическая многоязычная модерация сообщений для миллионов пользователей](<https://devfeed.tech/articles/article-23645.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/648815/>)

Author: punkerpunker (Badoo)

Published: 2022-02-01T10:50:28Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Natural language processing](<https://devfeed.tech/topics/nlp.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [bert](<https://devfeed.tech/tags/bert.md>), [data-science](<https://devfeed.tech/tags/data-science.md>), [gpt](<https://devfeed.tech/tags/gpt.md>), [gpt-3](<https://devfeed.tech/tags/gpt-3.md>), [natural-language-processing](<https://devfeed.tech/tags/natural-language-processing.md>), [nlp](<https://devfeed.tech/tags/nlp.md>), [tag-055aee430837](<https://devfeed.tech/tags/tag-055aee430837.md>), [tag-13e2af703774](<https://devfeed.tech/tags/tag-13e2af703774.md>), [tag-1cd610c0e518](<https://devfeed.tech/tags/tag-1cd610c0e518.md>), [tag-5cb789e9aaa3](<https://devfeed.tech/tags/tag-5cb789e9aaa3.md>), [tag-9d8cf70dc46c](<https://devfeed.tech/tags/tag-9d8cf70dc46c.md>), [tag-e69b694e3ce2](<https://devfeed.tech/tags/tag-e69b694e3ce2.md>)

### AI overview

The article describes Badoo and Bumble's Rude Message Detector, a machine-learning system for multilingual moderation of rude messages. It discusses the system's architecture, deployment infrastructure, implementation challenges, and results, including the use of transformer-based architectures and large language models such as BERT, GPT-2, and GPT-3.

### Source excerpt

Как мы все знаем, слова обладают силой. Ими можно вдохновить людей, но можно и навредить. Мы в Badoo и Bumble стараемся оградить пользователей от неприятных ситуаций, поэтому внедрили инструмент Rude Message Detector. Это многоязычный детектор грубых высказываний, работающий на основе машинного обучения. В этой статье мы расскажем о технических особенностях нашего решения, сложностях, с которыми столкнулись в ходе реализации проекта, и его результатах. Читать далее

## How Badoo Increased Automated Merge Throughput

DevFeed: [How Badoo Increased Automated Merge Throughput](<https://devfeed.tech/articles/article-23640.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/560228/>)

Author: osmanov (Badoo)

Published: 2021-06-21T10:00:02Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [ci](<https://devfeed.tech/topics/ci.md>), [bitbucket](<https://devfeed.tech/topics/bitbucket.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [bitbucket](<https://devfeed.tech/tags/bitbucket.md>), [ci](<https://devfeed.tech/tags/ci.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [devops](<https://devfeed.tech/tags/devops.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [jira](<https://devfeed.tech/tags/jira.md>), [tag-5647dc7784f0](<https://devfeed.tech/tags/tag-5647dc7784f0.md>), [tag-e95ee8b94dca](<https://devfeed.tech/tags/tag-e95ee8b94dca.md>), [teamcity](<https://devfeed.tech/tags/teamcity.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

A Badoo and Bumble release engineer explains how the team optimized automated Git branch merging for mobile projects. The article contrasts earlier sequential merging with a custom automerge system designed to increase throughput while maintaining process reliability.

### Source excerpt

Меня зовут Руслан, я релиз-инженер в Badoo и Bumble. Недавно я столкнулся с необходимостью оптимизировать механизм автомерджа в мобильных проектах. Задача оказалась интересной, поэтому я решил поделиться её решением с вами. В статье я расскажу, как у нас раньше было реализовано автоматическое слияние веток Git и как потом мы увеличили пропускную способность автомерджа и сохранили надёжность процессов на прежнем высоком уровне. Читать далее

## A component-based approach to managing team responsibility in Badoo and Bumble

DevFeed: [A component-based approach to managing team responsibility in Badoo and Bumble](<https://devfeed.tech/articles/article-23641.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/562000/>)

Author: Unclead (Badoo)

Published: 2021-06-09T15:08:15Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [phpstorm](<https://devfeed.tech/topics/phpstorm.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [bus-factor](<https://devfeed.tech/tags/bus-factor.md>), [git-hook](<https://devfeed.tech/tags/git-hook.md>), [php](<https://devfeed.tech/tags/php.md>), [phpstorm](<https://devfeed.tech/tags/phpstorm.md>), [tag-622612a5798e](<https://devfeed.tech/tags/tag-622612a5798e.md>), [tag-a3f08f91b7c9](<https://devfeed.tech/tags/tag-a3f08f91b7c9.md>), [tag-b3a84f87fd83](<https://devfeed.tech/tags/tag-b3a84f87fd83.md>), [tag-c51cc4bf76e5](<https://devfeed.tech/tags/tag-c51cc4bf76e5.md>), [team](<https://devfeed.tech/tags/team.md>)

### AI overview

The article describes how Badoo and Bumble addressed the challenge of identifying teams and maintainers responsible for parts of a growing PHP codebase. It explains the limitations of DocBlock tags, PhpStorm templates, and a Git hook, and introduces a component-based approach intended to centralize responsibility information and let other systems consume updates automatically.

### Source excerpt

Меня зовут Евгений Тупиков, я ведущий PHP-разработчик в Badoo и Bumble. У нас в команде более 200 бэкенд-разработчиков, которые работают над сотнями модулей и отдельных сервисов в наших приложениях. Но поначалу всё было не так масштабно. В 2006 году это был один проект, над которым работала небольшая команда. Каждый разработчик хорошо понимал, как всё устроено: легко ориентировался в коде, знал, какие есть сервисы и как они взаимодействуют между собой. Однако по мере роста проекта всё больше времени занимал поиск "хранителей знаний" -- тех, кто отвечает за ту или иную функциональность и к кому можно обратиться с вопросом или предложением. В этой статье я расскажу, как мы решили проблему разделения зон ответственности и сделали процесс актуализации информации быстрым и удобным с помощью компонентного подхода. Читать далее

## \[Перевод\] Три паттерна для улучшения работы с автотестами

DevFeed: [\[Перевод\] Три паттерна для улучшения работы с автотестами](<https://devfeed.tech/articles/article-23639.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/558496/>)

Author: laechoppe (Badoo)

Published: 2021-05-20T17:18:27Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Wiki](<https://devfeed.tech/topics/wiki.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [ios](<https://devfeed.tech/tags/ios.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [qa](<https://devfeed.tech/tags/qa.md>), [software-testing](<https://devfeed.tech/tags/software-testing.md>), [tag-23c525fe15c9](<https://devfeed.tech/tags/tag-23c525fe15c9.md>), [tag-e932065bc8da](<https://devfeed.tech/tags/tag-e932065bc8da.md>), [tag-e95ee8b94dca](<https://devfeed.tech/tags/tag-e95ee8b94dca.md>), [test-automation](<https://devfeed.tech/tags/test-automation.md>)

### AI overview

This article describes three process patterns for improving automated testing in mobile application development. Drawing on experience at Badoo and Bumble, it explains how automation supported weekly releases and how teams addressed recurring collaboration and knowledge-sharing difficulties.

### Source excerpt

Меня зовут Владислав Романенко, я старший iOS QA Engineer в Badoo и Bumble. Несколько лет назад мы начали активнее использовать автотесты в процессе разработки, но столкнулись с несколькими трудностями на этом пути. Логичный вопрос: почему мы занялись автоматизацией тестирования? Ответ кроется в еженедельном выпуске новых версий наших мобильных приложений. QA отделу приходится тестировать новые фичи, их интеграцию в приложение и заниматься регрессионным тестированием. За неделю нужно проводить как минимум одно комплексное регрессионное тестирование, что довольно утомительно. Все эти трудности мы преодолели с помощью автоматизации, которая помогла нам выпускать новые версии быстрее и без потери качества. Подробнее об автоматизации мобильного тестирования -- в докладе наших коллег. Сложности в разработке часто решаются с помощью паттернов -- обобщённых решений для часто возникающих проблем в заданном контексте. То же и с автоматизацией тестирования, есть даже удобное wiki-описание. В этой статье мы поговорим о паттернах процессов (Process Patterns). Они помогают организовать и улучшить процесс автоматизации тестирования. Без дальнейших предисловий перейдём к трудностям, с которыми мы боролись, и рекомендациям по их преодолению с помощью тех самых паттернов. Замечу, что это не единственные проблемы, которые у нас были и есть. Но в рамках данной статьи я решил остановится именно на приведенных ниже пунктах. Читать дальше

## Автоматизация тестирования мобильных приложений. Часть 1: проверки, модули и базовые действия

DevFeed: [Автоматизация тестирования мобильных приложений. Часть 1: проверки, модули и базовые действия](<https://devfeed.tech/articles/1-23636.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/546188/>)

Author: barman\_mo (Badoo)

Published: 2021-03-10T12:13:11Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Java](<https://devfeed.tech/topics/java.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [qa](<https://devfeed.tech/tags/qa.md>), [tag-23c525fe15c9](<https://devfeed.tech/tags/tag-23c525fe15c9.md>), [tag-e932065bc8da](<https://devfeed.tech/tags/tag-e932065bc8da.md>)

### AI overview

This article describes how Badoo and Bumble organize mobile test automation and develop stable end-to-end tests. It covers changes in team processes, the role of the automation team, and the native Android and iOS technologies used in the examples.

### Source excerpt

Приложениями Badoo и Bumble пользуются миллионы людей по всему миру, и мы стремимся доставлять им новую функциональность как можно быстрее. Но важно, чтобы высокий темп нашей работы не сказывался негативно на качестве работы приложений. В этой статье мы расскажем о роли автоматизации в наших процессах и поделимся практиками, которые позволяют быстро писать стабильные тесты. Читать далее

## \[Перевод\] Приложение отвечает: как мы уменьшили количество ANR-ошибок в шесть раз. Часть 1, про сбор данных

DevFeed: [\[Перевод\] Приложение отвечает: как мы уменьшили количество ANR-ошибок в шесть раз. Часть 1, про сбор данных](<https://devfeed.tech/articles/anr-1-23632.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/539524/>)

Author: lukaville (Badoo)

Published: 2021-01-27T14:15:01Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [anr](<https://devfeed.tech/tags/anr.md>), [anr-reporting](<https://devfeed.tech/tags/anr-reporting.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [crash-reporting](<https://devfeed.tech/tags/crash-reporting.md>), [google](<https://devfeed.tech/tags/google.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This first part of a two-article series explains Android ANR errors, why they affect application responsiveness and potentially Google Play visibility, and how to monitor them. It introduces the causes of ANRs, including prolonged work on the main UI thread, and previews Badoo's approaches to reducing them.

### Source excerpt

Пожалуй, одна из худших проблем, которая может случиться с вашим приложением, -- ошибка ANR (Application Not Responding), когда приложение не отвечает. Если таких ошибок много, они могут негативно влиять не только на пользовательский опыт, но и на позицию в выдаче Google Play и фичеринг. В начале прошлого года количество ANRs в приложении Badoo превышало порог "Bad Behaviour" в Google Play. Поэтому мы собрали команду для решения этой проблемы и потратили несколько месяцев, экспериментируя с разными подходами. В результате мы смогли уменьшить количество таких ошибок более чем в шесть раз. В этой серии из двух статей я расскажу о том, как нам это удалось, что дало наибольший эффект и как вы можете использовать эти подходы в своём приложении. В первой части мы поговорим об основах: что представляет собой ошибка ANR и как её лучше отслеживать. Если вы уже знакомы с этой темой, предлагаю перейти ко второй части, в которой я расскажу о наших способах решения этой проблемы. Читать далее

## Модуляризация iOS-приложения Badoo: борьба с последствиями

DevFeed: [Модуляризация iOS-приложения Badoo: борьба с последствиями](<https://devfeed.tech/articles/ios-badoo-23631.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/538270/>)

Author: nsurl-dev (Badoo)

Published: 2021-01-21T17:01:19Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [ci](<https://devfeed.tech/tags/ci.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [ios](<https://devfeed.tech/tags/ios.md>), [modularity](<https://devfeed.tech/tags/modularity.md>), [modules](<https://devfeed.tech/tags/modules.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tag-73f5f2c76797](<https://devfeed.tech/tags/tag-73f5f2c76797.md>), [tag-a3309a813b61](<https://devfeed.tech/tags/tag-a3309a813b61.md>), [tag-d96e238f1419](<https://devfeed.tech/tags/tag-d96e238f1419.md>)

### AI overview

This article describes Badoo's experience expanding iOS app modularization and handling the resulting challenges. It covers dependency-graph complexity, CI load, slower application startup as modules increase, monitoring, and an internal Swift command-line utility for automating dependency-graph analysis and fixing typical linking errors.

### Source excerpt

В предыдущей статье я рассказывал о том, как мы выделили модуль чата в нашем приложении. Всё прошло успешно, и мы собирались распространить этот опыт -- начать тотальную модуляризацию в iOS-разработке Badoo. Даже презентовали подход продуктовым командам, командам, занимающимся тестированием и непрерывной интеграцией, и постепенно стали внедрять модуляризацию в наши процессы. Мы сразу понимали что будут проблемы, поэтому не торопились и раскатывали решение поэтапно, что помогло нам вовремя понять проблемы о которых пойдет речь далее. В этой статье я расскажу: -- как мы не потерялись в сложном графе зависимостей; -- как спасли CI от чрезмерной нагрузки; -- что делать, если с каждым новым модулем приложение запускается всё медленнее; -- мониторинг каких показателей стоит предусмотреть и почему это необходимо. Читать далее

## Модуляризация iOS-приложения: зачем и как мы разбиваем Badoo на модули

DevFeed: [Модуляризация iOS-приложения: зачем и как мы разбиваем Badoo на модули](<https://devfeed.tech/articles/ios-badoo-23627.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/531162/>)

Author: nsurl-dev (Badoo)

Published: 2020-12-03T13:26:03Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Expo](<https://devfeed.tech/topics/expo.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [ios](<https://devfeed.tech/tags/ios.md>), [modularity](<https://devfeed.tech/tags/modularity.md>), [modules](<https://devfeed.tech/tags/modules.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tag-a3309a813b61](<https://devfeed.tech/tags/tag-a3309a813b61.md>)

### AI overview

Badoo describes its experience modularizing iOS applications, including how to define modules, organize dependencies, reduce launch time, monitor the process, automate module creation, and prevent linking errors. The article also discusses modularization as an ongoing process involving specialized, reusable modules.

### Source excerpt

В iOS-разработке Badoo мы уже несколько лет занимаемся созданием модулей, и большая часть нового кода разрабатывается вне кодовой базы приложений. Сейчас у нас более 100 модулей для Badoo и Bumble. В этой статье я расскажу о нашем опыте и отвечу на самые популярные вопросы о модуляризации: -- по какому принципу выделять модули; -- как организовать связи между ними; -- достаточно ли для фичи одного фреймворка; -- как сократить время запуска многомодульного приложения; -- зачем в этом процессе мониторинг; -- можно ли автоматизировать создание новых модулей и так далее. Мой коллега, лид команды iOS-разработки и Core-команды Артем Лоенко, в начале года говорил об этом на митапе FunCorp в докладе "Катастрофически полезные последствия модуляризации". Я приведу более подробный разбор процесса модуляризации и некоторых опущенных в его рассказе деталей. Читать далее

## API для QA: тестируем фичи без доступа к коду

DevFeed: [API для QA: тестируем фичи без доступа к коду](<https://devfeed.tech/articles/api-qa-23626.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/528742/>)

Author: SergeyRyabko (Badoo)

Published: 2020-11-19T13:56:20Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Selenium](<https://devfeed.tech/topics/selenium.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [php](<https://devfeed.tech/tags/php.md>), [qa](<https://devfeed.tech/tags/qa.md>), [selenium](<https://devfeed.tech/tags/selenium.md>)

### AI overview

The article introduces Badoo's QAAPI, a tool intended to let engineers and automated tests influence application parameters without changing source code. It describes the testing problem in staging and production environments, including time-dependent features, and states requirements such as simplicity, broad test support, safety, and documentation.

### Source excerpt

Многие фичи приложения невозможно быстро протестировать, не меняя исходный код. Представьте типичную задачу, с которой может столкнуться каждый разработчик: через три дня после регистрации пользователю нужно предложить купить премиум-доступ к продукту со скидкой. Чтобы проверить, работает ли это промо, нужно зарегистрировать тестового пользователя и подождать три дня до появления заветного окошка. Очевидно, что разработчик не будет столько ждать. Он просто сменит в коде значение константы, которая задаёт временной интервал, с трёх дней на 20 секунд -- и получит результат почти мгновенно. Допустим, данные для промопредложения отдаёт сервер, а отрисовывается оно на клиенте. Если серверный тестировщик работает в среде, которая допускает манипуляции с кодом, он тоже быстро справится с задачей. Но как только она окажется там, где возможность менять код отсутствует (стейджинг, продакшен), возникнет проблема. Читать далее

## Ловим баги на клиенте: как мы написали свою систему для сбора клиентских ошибок

DevFeed: [Ловим баги на клиенте: как мы написали свою систему для сбора клиентских ошибок](<https://devfeed.tech/articles/article-23624.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/522600/>)

Author: Unclead (Badoo)

Published: 2020-10-08T13:23:03Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [error tracking](<https://devfeed.tech/topics/error-tracking.md>), [App](<https://devfeed.tech/topics/app.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [error-reporting](<https://devfeed.tech/tags/error-reporting.md>), [error-tracking](<https://devfeed.tech/tags/error-tracking.md>), [ios](<https://devfeed.tech/tags/ios.md>), [sentry](<https://devfeed.tech/tags/sentry.md>), [tag-9e6194bca65c](<https://devfeed.tech/tags/tag-9e6194bca65c.md>), [tag-d96e238f1419](<https://devfeed.tech/tags/tag-d96e238f1419.md>)

### AI overview

This article explains how Badoo developed Gelato, an in-house system for collecting client-side errors across web, Android, and iOS applications. It discusses why the company built its own error-tracking system, how error data supports production monitoring and release analysis, and considerations for designing such a system.

### Source excerpt

У нас в Badoo довольно много клиентских приложений. Помимо основных продуктов Badoo и Bumble, у которых есть как веб-версии (десктопная и мобильная), так и клиенты под нативные платформы (Android и iOS), ещё есть с десяток внутренних инструментов со своими UI. Для сбора клиентских ошибок мы используем собственную разработку под кодовым названием Gelatо. Последние два года я работал над её серверной частью и за это время открыл для себя много нового из мира разработки Error Tracking систем. Поэтому, если вам интересно узнать, что из себя представляет разработка системы сбора клиентских ошибок и о чём стоит подумать, если вы решите разрабатывать собственную, добро пожаловать под кат. Читать далее

## Как перенести на TypeScript большую кодовую базу React UI-компонентов

DevFeed: [Как перенести на TypeScript большую кодовую базу React UI-компонентов](<https://devfeed.tech/articles/typescript-react-ui-23621.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/518246/>)

Author: Wint95r (Badoo)

Published: 2020-09-09T10:07:01Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [project-management](<https://devfeed.tech/tags/project-management.md>), [react](<https://devfeed.tech/tags/react.md>), [types](<https://devfeed.tech/tags/types.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web-developement](<https://devfeed.tech/tags/web-developement.md>)

### AI overview

A Badoo UI developer describes migrating 630 React UI components to TypeScript. The article explains the reasons for the migration, including compile-time type safety, improved code reliability, and reuse across projects, as well as the phased process for introducing TypeScript to UI developers.

### Source excerpt

Привет! Меня зовут Иван Греков, я работаю UI-разработчиком в frontend-команде Badoo. Главные задачи нашей команды -- создание новых и поддержка существующих пользовательских интерфейсов для сайтов и приложений Badoo и Bumble. Когда в конце 2019 года мы начали параллельно работать над несколькими проектами, мы задумались над повышением стабильности кода и возможностью его многократного использования. Для этого мы решили переписать наши 630 React UI-компонентов на TypeScript. Я расскажу о том, как мы работали над ними без перерыва в доставке фич и как организовали поэтапный переход на TypeScript для UI-разработчиков, которым этот язык был в новинку. Читать далее

## Ask me anything! Задай вопрос Android-команде Badoo

DevFeed: [Ask me anything! Задай вопрос Android-команде Badoo](<https://devfeed.tech/articles/ask-me-anything-android-badoo-23616.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/511234/>)

Author: ANublo (Badoo)

Published: 2020-07-16T11:12:07Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

Badoo's Android team hosts an Ask Me Anything about developing and testing Android applications for a large user base. The team describes its use of Kotlin, MVI and RIBs architecture patterns, SQLite, and topics including registration, photo verification, multiplatform development, build infrastructure, CI, monitoring, and application performance.

### Source excerpt

Предлагаем продолжить добрую традицию Ask me anything на Хабре и поговорить про разработку Android-приложений. Сегодня и завтра Android-команда Badoo будет на связи и ответит на любые вопросы о разработке и тестировании приложений с многомиллионной аудиторией, даст советы начинающим и расскажет про особенности платформы. Если вы столкнулись с какой-то проблемой или у вас есть вопрос по теме, пишите нам! Обещаем ответить на все комментарии первого уровня, которые появятся здесь до 16:00 17 июля по московскому времени, а по возможности -- и на более поздние. Немного фактов о нас. Badoo и Bumble -- одни из самых популярных дейтинг-сервисов в мире: только в Google Play у нас 210 млн скачиваний. В Android-приложениях больше 1,3 млн строк кода. В Android-команде больше 20 разработчиков. Основной язык разработки -- Kotlin, архитектурные паттерны -- MVI и RIBs, база данных -- SQLite. Под катом -- подробнее о нашей команде и о темах, на которые мы можем поговорить. UPD: Мы завершаем AMA и прощаемся. Спасибо всем за вопросы! Читать дальше ->

## Automating mobile app releases for iOS and Android at Badoo

DevFeed: [Automating mobile app releases for iOS and Android at Badoo](<https://devfeed.tech/articles/article-23614.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/509238/>)

Author: saliery (Badoo)

Published: 2020-07-02T13:36:17Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [App](<https://devfeed.tech/topics/app.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [LineageOS](<https://devfeed.tech/topics/lineageos.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [app-store](<https://devfeed.tech/tags/app-store.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [devops](<https://devfeed.tech/tags/devops.md>), [fastlane](<https://devfeed.tech/tags/fastlane.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [ios](<https://devfeed.tech/tags/ios.md>), [re](<https://devfeed.tech/tags/re.md>), [release](<https://devfeed.tech/tags/release.md>), [release-engineering](<https://devfeed.tech/tags/release-engineering.md>), [teamcity](<https://devfeed.tech/tags/teamcity.md>)

### AI overview

A Badoo release engineer describes the company's automation of iOS and Android app releases. The process automates app-store metadata uploads and enables employees involved in the process to release applications in a few clicks; the release-engineering team reported saving about 830 hours in 2019.

### Source excerpt

Всем привет! Меня зовут Михаил Булгаков (нет, не родственник), я работаю релиз-инженером в Badoo. Пять лет назад я занялся автоматизацией релизов iOS-приложений, о чём подробно рассказывал в этой статье. А после взялся и за Android-приложения. Сегодня я подведу некоторые итоги: расскажу, к чему мы пришли за это время. Long story short: любой причастный к процессу сотрудник может зарелизить хоть все наши приложения на обеих платформах в несколько кликов -- без головной боли, больших затрат времени, регистрации и СМС. Так, наш отдел релиз-инженеров за 2019 год сэкономил около 830 часов. За подробностями -- добро пожаловать под кат! Читать дальше ->

## Исследуем баг iOS с помощью Hopper

DevFeed: [Исследуем баг iOS с помощью Hopper](<https://devfeed.tech/articles/ios-hopper-23612.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/504084/>)

Author: WisDooMer (Badoo)

Published: 2020-05-28T11:03:02Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Hopper](<https://devfeed.tech/topics/hopper.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [hopper](<https://devfeed.tech/tags/hopper.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-92ecabba3495](<https://devfeed.tech/tags/ios-92ecabba3495.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [tag-8ecb3d630e31](<https://devfeed.tech/tags/tag-8ecb3d630e31.md>)

### AI overview

An iOS developer from Badoo investigates why telephone-number predictive keyboard suggestions disappeared in iOS 13. The article traces the issue to a keyboard implementation refactor and demonstrates restoring the suggestions in a test project using method swizzling.

### Source excerpt

Привет! Меня зовут Александр Никишин, я занимаюсь разработкой iOS-приложений в компании Badoo. В статье я расскажу о том, как мы исследовали баг в UIKit, который Apple не хотела исправлять на протяжении полугода. Всё началось в августе 2019 года с первых бета-версий iOS 13. Тогда мы впервые столкнулись с проблемой. В приложениях Badoo и Bumble мы постоянно работаем над улучшением интерфейсов и, например, стараемся максимально оптимизировать нудный и не любимый пользователями процесс регистрации. Системные предиктивные подсказки над клавиатурой -- отличный способ сокращения количества кликов пользователя при вводе данных. Однако в новой версии iOS мы с удивлением обнаружили, что подсказки при вводе номера телефона пропали. Читать дальше ->

## WebRTC на Android: как включить аппаратное кодирование на множестве устройств

DevFeed: [WebRTC на Android: как включить аппаратное кодирование на множестве устройств](<https://devfeed.tech/articles/webrtc-android-23609.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/500654/>)

Author: Jedo (Badoo)

Published: 2020-05-06T13:01:01Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [WebRTC](<https://devfeed.tech/topics/webrtc.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [h-264](<https://devfeed.tech/tags/h-264.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [webrtc](<https://devfeed.tech/tags/webrtc.md>)

### AI overview

The article describes Badoo's use of WebRTC and the H.264 codec for video calls on Android. It examines device compatibility and explains considerations for enabling hardware H.264 encoding across a wider range of devices.

### Source excerpt

Для видеозвонков в Badoo мы используем стандарт WebRTC и кодек H.264. Если верить документации, этот кодек должен без проблем работать на любых устройствах Android начиная с Android 5.0. Но на практике всё оказалось не совсем так. В этой статье я расскажу про особенности реализации аппаратного кодирования для кодека H.264 в WebRTC и о том, как заставить его работать на большем количестве устройств. Читать дальше ->

## Видео Live! Badoo Localization Meetup 21 апреля

DevFeed: [Видео Live! Badoo Localization Meetup 21 апреля](<https://devfeed.tech/articles/live-badoo-localization-meetup-21-23608.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/499454/>)

Author: aatimin (Badoo)

Published: 2020-04-29T10:01:02Z

Content type: article

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Localization (l10n)](<https://devfeed.tech/topics/localization.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [meetup](<https://devfeed.tech/tags/meetup.md>), [tag-02d0ab888d82](<https://devfeed.tech/tags/tag-02d0ab888d82.md>), [tag-6e9d47cd6240](<https://devfeed.tech/tags/tag-6e9d47cd6240.md>), [tag-7443ed5aa431](<https://devfeed.tech/tags/tag-7443ed5aa431.md>), [tag-93c7b0d73060](<https://devfeed.tech/tags/tag-93c7b0d73060.md>)

### AI overview

A recap of the online Live! Badoo Localization Meetup, covering talks and practical tools for localization projects of different sizes and stages.

### Source excerpt

Неделю назад прошел Live! Badoo Localization Meetup. Для нас это первая встреча на такую тему, да еще и в онлайн-формате. Отдельные секции по локализации редко встречаются на конференциях, поэтому собрать вместе четырех спикеров и больше 100 заинтересованных слушателей было приятно и неожиданно. Митап был задуман как руководство к действию: спикеры из Badoo, Яндекс.Директ, SmartCat и Alconost делились опытом и инструментами, которые подойдут проектам разного размера и на разных этапах развития. После всех докладов мы еще 2 часа обсуждали и разбирали проблемы. А кто-то из гостей даже получил документ со схемой решения именно его вопроса. В этой статье я собрал обзор выступлений и ссылки на материалы.