토스트 메시지와 팝업(다이얼로그)는 특정 상태에 대한 안내, 경고 등에 주로 쓰인다. 이 둘은 유사한 목적을 가진듯 보이나, 명백히 다른 사용성, 기능성을 가진다. 차이점은 아래와 같다.
토스트 메시지는 대게 특정 버튼이나 행위 시 자동으로 떠올랐다가 일정 시간이 지나면 사라진다. 물론 여러가지 사용성 원칙에 따라 토스트 메시지를 없애거나(ex. 다운로드중이라는 토스트 메시지의 경우, 취소버튼을 눌러 없앨 수 있다.) 변경할 수 있는 옵션이 제공되기도 하나, 다른 다이얼로그나 페이지네이션에 비하면 굉장히 수동적으로 노출된다.
반면 팝업은 그 팝업을 지속하는 시간을 온전히 사용자가 결정한다. 팝업에 띄워지는 버튼 혹은 메시지, 이미지 등을 읽은 후 그 행위를 지속할 수도, 취소할 수도 있기 때문이다.
토스트 메시지는 앞서 언급한대로 수동성이 매우 높은 ui이기 때문에, 사용자가 쉽게 상태를 변경하기 어렵다. 따라서 매우 중요한 행위는 토스트 메시지로 경고할 수 없다. 중요하고 긴급한 행위일수록 사용자의 통제가능성이 높아야 하기 때문이다. 만약 파일에 있는 모든 파일을 전체삭제하는 버튼을 눌렀는데, 이를 지속하겠냐는 팝업이 아니라 “삭제중입니다"라는 토스트 메시지만 띄운다면? 대참사가 일어날 지도 모른다.
사용자가 통제하기 어려움에도 불구하고 토스트메시지를 자주 쓰는 이유는, 경제적이기 때문이다. 화면 구성할 때 특별히 페이지가 전환되거나, dim배경 위에 새로 띄우는 구조도 아니라서 개발적으로 오류가 났을 때도 큰 손실이 없고, 디자인적으로도 원래 있는 View에 얹을 수 있어 경제적이며 사용자 입장에서도 화면 전환에 따른 피로도가 적다.
반면 팝업은 레이어가 추가된 듯한 느낌이 토스트 메시지보다 훨씬 강해서, 상대적으로 복잡도가 높아보일 수 있다. 경우에 따라 팝업은 화면 전환처럼 느껴지기도 하기 때문이다.
요약하자면 토스트 메시지는 간결하고 경제적이나 (사용자에게) 수동적이며, 팝업은 비교적 복잡도가 높지만 사용자가 직접 상황을 통제할 수 있고 자유도가 높다. 특히 토스트 메시지가 수동적인 것은 토스트 메시지가 광고나 상업적 목적으로 사용되어서는 안되는 이유와도 통한다.
글을 적기 위해 명백히 구분해 두었지만, 사실 하나의 케이스에 토스트 메시지, 팝업 중 어떤 것을 띄워도 괜찮은 경우가 대부분이다. 이런 경우 해당 방법들의 장단점, 해당 케이스의 중요도, 서비스와의 적합성, 기존 UI의 구조, 사용자 특성 등 여러가지 것을 고려해서 합리적인 의사결정을 하는 것이 좋겠다.