Во-первых, если вы этого еще не сделали, используйте функцию ветвления вашей системы управления версиями для удовлетворения различных потребностей клиента, то есть, если одному клиенту нужна дополнительная функция, не (автоматически) не загрязняйте базу вашего основного кода.
Что вы также можете сделать, это инкапсулировать все настраиваемые функции вашего приложения. Очень простой подход - создать конфигурационный .plist или другой вид XML, в котором вы можете легко настроить адаптируемые функции.
В основном, если это возможно, попробуйте извлечь все настраиваемые функции из основной базы кода. Загружайте настраиваемые данные из легко редактируемых файлов, таких как XML, чтобы убедиться, что вы случайно не сломаете что-либо при настройке клиента.