Fly may move apps depending on load and capacity. You can see what regions your app may run in using:
fly regions list
You will see preferred regions and then, possibly, backup regions. You can set those to whatever you want using
fly regions set ...
So you could set the app so its only region is SIN.
https://fly.io/docs/flyctl/regions-list/
The other thing you could do is add a volume in SIN, as that used to pin it to a region. Not sure if that’s still the case but it was a trick to enforce a region.