Forgive me if this doesn't help, but it's what I'm thinking. I'm not sure if this will even work (unsure if you can swap sources) like this on width changed... but onCompleted should be ok? It may get you experimenting / thinking differently to get a solution. http://doc.qt.io/qt-5/qml-qtquick-loader.html#source-prop Loader { id: container anchors.fill: parent // setSource on Loader Component complete Component.onCompleted: { doSetSource(); } } Connection { target: container; onWidthChanged: { doSetSource(); } } function doSetSource(){ if(container.width < 320) { container.setSource("ViewSmall.qml"); ...