The wikipedia has a good qualitative article
here .
Basically, a running bike stays upright because the driver manages to move it always below himself, by steering left or right. There are bikes more stable than others though, and that depends on the
trail. A positive trail makes the front wheel steer into the lean, and helps keep the bike stable, even without a rider. A bigger trail makes a bike more stable, but also more difficult to steer. I think that is what is missing here. Currently it has 0 trail, i tried to emulate it in the js but without much success.
Another problem, i think, is that i can only
set the steering value, and that will be applied the next frame. It is like pushing the handlebars of a real bike with an infinite force, and it's not much realistic. I think having a way to steer the wheel with a certain force would help.