Spring GDS 25th Anniversary
A logistics company that ships to 190 countries built something to ship to itself.
A single page application loads one HTML document, then rewrites the visible content with JavaScript as the user navigates. The browser never does a full page reload. Clicking a link swaps the view, fetches whatever data it needs over an API, and updates the screen in place. The result feels closer to a desktop application than a traditional website.
This is the model behind frameworks like React, Vue, and Angular. The trade-off is real. SPAs give fast, fluid navigation after the first load and a clean split between frontend and backend, but the initial bundle is heavier, and search engines and social crawlers historically struggled with content that only exists after JavaScript runs. That last problem is why server-side rendering and static generation exist as companions to the SPA model. A project management tool where a user drags cards between columns, filters tasks, and edits in place without the page ever flickering is a textbook SPA.
An SPA contrasts with a multi-page application, where each route is a separate document served by the server. SPAs win on interactivity. Multi-page apps win on simplicity and first-load speed. Most serious products end up blending both.
An SPA is the right call when the interface is genuinely an application: heavy interaction, live state, lots of in-place editing. It is the wrong call when someone reaches for it out of habit for what is really a content site. We have inherited plenty of the second kind, where a marketing page was shipped as a five-megabyte SPA and Google barely saw it. Part of our web application development work is knowing which problem we actually have before choosing the shape.
When we do build one, the architecture matters more than the framework. Clear data fetching, sensible code splitting so the first load stays light, and a rendering strategy that keeps the app findable. We pair custom web app development with the API design behind it, because an SPA is only as good as the contract it talks to. The two get built together, not bolted on after.
Building something interactive enough to need an SPA? Let's get the architecture right from the start.
A logistics company that ships to 190 countries built something to ship to itself.
Turning a brand into a working business.
Half a million people. One app. Zero chaos.















