* Support
* Guides
* Login
* Blog
are all outside the SPA, and some appear to be MPA apps. And perhaps once I logged in that would be its own new app as well?
So in that sense, your website in not an SPA, you have an app for getting new signups which is an SPA, and then you have a bunch of other SPA or MPA apps hooked up to that. As the author said, "Websites can still have Rich User Interfaces without cramming the entire site into one document."
I think the point is to find a balance and realize building your entire infrastructure into an SPA will indeed break the web and your user's experience, most likely. Having a mix of SPA/MPA apps that cover the various functionality you need, and using each where appropriate, is a much better use of resources and results in a better UX.
Agree, it's all about the user's experience for us, we use whatever tool we feel enable us to build the best UX (without breaking the web).
Source - https://gocardless.com/blog/how-we-built-the-new-gocardless....
May be this is why your site is so fast. SPA apps are not entirely static.
We generate all the HTML pages so that they can serve as entrypoints, so when you go to https://gocardless.com/features we serve a fully rendered page to the browser, plus we load the rest of the website (that's why it's super snappy after the initial page load).
If you don't have javascript enabled, you'll still get fully rendered page.
The dashboard looks like a much better example of an SPA.
Mobile aside, what is really gained in the SPA approach here when you have what is essentially a brochure site? That is, there isn't a lot of content, and it's all static AFAICT, so why not just send the minimal amount of html over the wire and be done with it? Html fragments are already covered for FAQ et al so don't even need to make a round trip to the server.
Anyway, you'd get above checkmarks for free and, if you generate server-side content using a type safe language (Scala, OCaml, Haskell, C#, etc.), for the most part you'd avoid the code salad of client-side typing.
Obviously I have a server-side bias, am curious to see real world use cases where SPAs are a must vs. a trend.
Not seeing any SPA requirement to click "Payment History" and js display a hidden layer.
Anyway, as far as SPA approaches go this site works well, pretty snappy, no FOUC, just pointing out that server-side + javascript for ajax/effects/transitions is also a viable means to creating a positive user experience.
But you're right our dashboards are also SPA.
It is quite fast, which is nice. One of my concerns about SPAs that emulate MPWs is that you're sacrificing speed for complexity, which generally leads to errors. But by serving up static content and limiting interactivity, you get the speed while keeping complexity manageable.
I don't know how making a real single page app could be possible for overly complex applications. More than once I managed to crash the chrome javascript engine in a way that could not be recovered even when reloading the page and nothing short of a task manager kill could restore functionality
we are probably abusing too much canvas (we use fabric.js for image maniulation), but adding and removing the canvas from the dom should be safe enough, as we make sure not to store anything outside the dom itself specifically to avoid leaking resources
everything in memory is attached to data entries or in event handlers and browsers should be able to clean up them when the nodes are removed, except they dont.
Are you doing some escape fragment/headless browser for googlebots?
<div class="site-wrapper"
data-reactid=".20hl256vta8"
data-react-checksum="-1018283815">
http://facebook.github.io/react/docs/top-level-api.html#reac... > customers in the UK and the Eurozone
Feel like this should be on the landing page though.Only ancient browsers fail to support the HTML5 History API. Currently, that is around 10% of the web. Your customers are likely to have a newer browser than IE 9 if they have a budget for technology at all.
http://caniuse.com/#feat=history
★ The problem with embracing the hash for navigation is that you are now committed to running JS on your root FOREVER to detect those URLs - or old bookmarks & links & social media posts will break ★
You can check the source code here: https://github.com/gocardless/splash-pages
Once loaded it's probably one of the fastest website I've browsed, and it doesn't have any of the drawbacks you mentioned:
navigating to a new page is quick: ✓
navigating back is quick: ✓
remembering scroll position: ✓
cancelling navigation: ✗ but we won't allow duplicate requests so not an issue
SEO: ✓
Navigation and data loss: ? (no idea how we handle that tbh)
Navigation and loading CSS & JS: ✓ we load everything on the first load (~ 880kB) and that's it. I don't think it will ever be worst than MPA
Analytics: ✓
Automated functional testing: ✓ our unit + e2e test suites run in about 4 minutes (CI)
Our splash pages are open-sourced if you want to have a look at our setup: https://github.com/gocardless/splash-pages