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