The i3 does not update the app unless some state change occurs: finished charging, start it up, stop it, send it a remote command, etc. So, it is possible that it could go several days between updates if the car is just sitting there. As a result, what is shown on the app and what the car thinks may differ - a change in calculated range is not considered a big enough issue to update the server and thus, the app. The battery temperature will vary partly with ambient, but also with activity.
Just like on an ICE, the estimated range to empty is always a guess that will vary based on the conditions when you use it, and is based on previous use. We all don't drive the same places the same way on exactly the same traffic situation or weather, so things will vary.
As more field information is gathered, BMW has better information to help base future software updates. Things will improve, but like any car, you need to learn its capabilities and second guess the computer sometimes if your use this time is different than the last. I've driven mine as much as 10-miles and not had the range change because I'm currently driving more economically or it's warmer, or some other factors. The miles/Kw is a good indication of what range you have left if you keep driving as you are at the moment verses the SOC, and you don't really need a number to use that...the bars are enough.