Earlier quoted context omitted.
Gmail was probably the first very-widely-used app that used the fragment for navigation, and Google drove the whole #! thing. That technique is now considered obsolete, with the History API (history.pushState and all that lot) having supplanted it. IE9 is the most popular browser currently in use that doesn’t support it; there are still definitely some systems out there that will use the History API if it’s available…
pushState is bad for many use cases because it completely breaks linking.
It does require more coordination between the front and back-end though.