What does fps mean exactly in show stats?

What does the fps value mean, the one that appears when show stats is toggled on from the menu? The value can be 2000fps for a simple game in the simulator on a desktop browser and 67fps on a PyGamer.

The Game Loop documentation states the screen is updated once per game loop and as I understand this the current implementation aims for an approximate 50Hz rate and only slows if the processing becomes too lengthy for the loop, i.e. > 20ms.

I see @richard refers to this value as the “uncapped FPS” in Need help in rendering loop. Is this value an estimate of the maximum fps that could be achieved and only becomes the real screen update rate if it drops below 50 fps?

I noticed it mentions 60 fps in https://github.com/microsoft/pxt-arcade/blob/master/docs/examples/jumper.md

Is the target/maximum update rate for game loop / screen 50 or 60Hz?

Your understanding is correct - if the screen didn’t have its own update rate this is what you would get. On desktop the limit is usually 60Hz but often we don’t manage that and only hit 30Hz (probably due to that 20ms sleep). On hardware the screen can refresh at around 40Hz but it depends on configuration and chip.