Важно понимать, что результат еще зависит от объема передаваемой информации. По этому лучше пинговать несуществующий ресурс, либо с минимальными данными. А лучше получить ошибку запроса, отправить левые заголовки, например левый origin.
Твоя картинка размером 506х390, это 197340 пикселей. У каждого пикселя свой цвет. Вот и переводи эти пиксели в шейпы с заданным цветом. Можно оптимизировать: шейпы одного цвета, расположенные радом, объединять в один. Собственно на этом месте и заканчиваются все игры с картинкой без потери качества. Толку от этого ноль, только оверхед ради просадки производительности, потому что по сути это то-же растровое изображение, только реализованное иначе.
Не надо мучать ни себя, ни других. Ты упоришься писать в html media запросы для загрузки этих картинок для разных экранов, для разных браузеров, для разных систем, под разные типы картинок. Вместо того, чтоб поддерживать одну строчку кода и одну картинку, будешь поддерживать в 10 раз больше. А профит от всего этого будет никчемный. Используй картинку x2 и спи спокойно.
Две текстуры, одна существа, вторая следы крови на квадратике. Масштабируй квадратик под размер текстуры, накладывай поверх основной текстуры смешивая цвета, прям в шейдере можно и в зависимости от показателей здоровья решай от какой текстуры будет больше данных, учитывая прозрачность текстуры с кровью.
А бэкенд на локалке? Если да, то указывай в качестве адреса IP и порт компа в локальной сети, где крутится API. Например 192.168.0.2:4000.
Фронт на телефоне отрабатывает как должно, пытается отправить запрос к API на адрес 127.0.0.1 и получает фигу, так как на самом телефоне никаких серверов же не запущено, для обслуживания запросов.
Раз устройство не продается официально, а магазин продал, то значит как минимум он должен заниматься всей бюрократией, так как все документы и чеки на приобретение устройства у него. А чеком от магазина можно только подтереться.