Ok, I just found the issue. It's just a software problem.
Basically the calibration range was reset to 0, so if the magnetometer didn't have much of an offset and the values for north and south lay either side of 0 (as somehow happened on my development watches) then it's fine.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Ok, I just found the issue. It's just a software problem.
Basically the calibration range was reset to 0, so if the magnetometer didn't have much of an offset and the values for north and south lay either side of 0 (as somehow happened on my development watches) then it's fine.
If you update the Bangle.js interpreter firmware to a firmware from http://www.espruino.com/binaries/travis/master/ then it'll be fixed!