Для решения задач удобно использовать codewars.com, если знаешь английский. Если с английским проблемы, то можно начать с https://github.com/mbelsky/js-problems
Эльдияр Эмилов, это чистый js или что вы меряете? И если в проекте есть ленивая загрузка модулей, то 2МБ будут не 2МБ для пользователя при первой загрузке. А если это SPA для десктопов для внутреннего пользования - пусть грузят 2МБ. Этот вопрос в действительности очень сложный. Его нужно разбирать с уровней глубже, чем размер выходного файла
1. babel транспилирует, а не собирает. Имелся в виду webpack, подозреваю
2. domNode лучше передавать в вызов функции аргументом, а не хардкодить в реакт приложении
Перед изучением бойлерплейтов, создайте проект из CRA, сделайте eject, разберитесь с результатом по описанному в пятом шаге алгоритму. А там уже можно и в более продвинутые бойлерплейты смотреть
Такие штуки лучше хранить так:
Исходный массив допустимых значений и, если множественный выбор, массив выбранных пользователем значений.
А в рендере уже вычислять что тру, а что фолс и отрисовывать.