JS framework for transitional interfaces that gradually degrade