Да, и "плохой солюшн" тут - RN, поэтому добро пожаловать в мир РН )
Почему?
- Отсутствие возможности выполнить код JS в основном потоке (на этом пункте можно было бы остановиться, остальное мелочи)
- Отсутствие возможности сделать высокоэффективную передачу данных JS<->Native (всегда копирование)
- Отсутсвие возможности легко сделать нативный компонент со своим лэйаутом (только Yoga)
"тормозящая" маска проистекает из первого пункта.
а в чем проблема сделать компонент маски полностью нативным? Пробросил маску по бриджу и крутись в нативе (дольше - да, нереально - хм)