The purpose of the different icon sizes is to provide different image files, each with different dimensions, so that the browser can choose the appropriate image file for the corresponding dimensions it needs to render.
What you are doing is to provide the same image file for all sizes. This is useless.
Also, the icon images must have a 1:1 aspect ratio, but your image is 2121x2047 pixels. i.e. it not only doesn't have the correct aspect ratio, but it's also absurdly huge.
Create a 128x128 version of that image file and then include it in the manifest like this:
"icons": {
"128": "icon128.png"
},
The browser will resize the image as needed. There's no need to specify it more than once, unless the automatic resize performed by the browser doesn't look good. If that's the case, then you can also provide smaller versions of the same icon.