Skip to main content
Full Stack Radio

106: Sam Selikoff - Single Page Application Architecture

55 min episode · 2 min read
·

Episode

55 min

Read time

2 min

Topics

Productivity, Leadership, Design & UX

AI-Generated Summary

Key Takeaways

  • Client-side data normalization: Build an identity map that stores normalized data locally, rendering all UI from this cache rather than individual API responses. This prevents duplicate data and keeps UI synchronized across components automatically.
  • Optimistic UI patterns: Create records in the local data store immediately without waiting for server confirmation, displaying them at 50% opacity or similar states until persisted. Handle the 0.1% failure cases separately rather than making users wait every time.
  • Offline-first architecture: Queue network requests in local storage or IndexedDB when offline, allowing users to continue working. Sync queued operations when connectivity returns, treating the client cache as source of truth that eventually syncs with server.
  • Desktop app mental model: Think of SPAs as native applications using the browser as runtime, not websites. This shifts complexity from maintaining two codebases to building one rich client with a commoditized backend API layer handling only data persistence.

What It Covers

Sam Selikoff explains how to architect single-page applications by treating them as desktop apps that happen to run in browsers, focusing on client-side data management and keeping backend APIs minimal.

Key Questions Answered

  • Client-side data normalization: Build an identity map that stores normalized data locally, rendering all UI from this cache rather than individual API responses. This prevents duplicate data and keeps UI synchronized across components automatically.
  • Optimistic UI patterns: Create records in the local data store immediately without waiting for server confirmation, displaying them at 50% opacity or similar states until persisted. Handle the 0.1% failure cases separately rather than making users wait every time.
  • Offline-first architecture: Queue network requests in local storage or IndexedDB when offline, allowing users to continue working. Sync queued operations when connectivity returns, treating the client cache as source of truth that eventually syncs with server.
  • Desktop app mental model: Think of SPAs as native applications using the browser as runtime, not websites. This shifts complexity from maintaining two codebases to building one rich client with a commoditized backend API layer handling only data persistence.

Notable Moment

Selikoff describes using Mirage to build entire features and write tests against simulated server states without touching the network, defining what the backend needs to change before writing any API code, reducing backend work to 5% of development effort.

Know someone who'd find this useful?

Episode Transcript

In this episode of Fullstack Radio, I talked to Sam Selakoff about single page application architecture and why you should think about building your client side apps like desktop apps. This is Fullstack Radio episode one zero six. Hey, everyone. Welcome to another episode of the Full Stack Radio podcast. I'm your host, Adam Wadden. And today, I'm joined by my friend, Sam Selakoff. How's it going, Sam? It's going good, man. How are you doing? Good. So the reason I wanna have you on the show again, you were on a couple months back, maybe longer than that. Time goes fast now that I'm an old man. We talked about kind of Ember JS and choosing Ember JS in the in the age of React. But something that I have been getting into conversations with friends about, lately and something I'd love to learn more about and I think you're the perfect person to talk to about it is just this idea of like building stuff for the web from a sort of front end first perspective where people are building these like really rich client side apps and I even see lots of people doing this who don't ever really talk about the back end. So I'm trying to figure out what are they even doing. Are they using Firebase? What does Firebase even let you do? Or are they building back ends? Or are they writing their own authentication? How are they doing session stuff? There's just so many different, things that I think people are doing differently when they're really focused on, like, the front end world versus what someone like myself who's more versed in a more of a full stack back end first sort of rails or Laravel style development workflow, you know, different than how I would do that sort of thing typically. So I want to learn more about how people do this stuff and and what sort of things they're keeping in mind and what technologies and stuff, they're using. So, yeah, I thought it'd be cool to talk about that stuff. Yeah. I think there's there's a ton here and, definitely, you know, with Ember having used it for five or six years now, it's kind of it always kinda went in on that. It kind of saw that vision of the future and kinda just said, we're gonna go whole hog on this from the beginning. And so, you know, your your back end layer is gonna be like a dumb API layer and you're gonna be focused on building like this fat client. So it kinda inverted that idea from before where you do most of the stuff in the back end and and then just sprinkle the JavaScript on the front end. You kinda flip that on its head and so yeah. For about five or six years, I think most of the Ember community has been building JavaScript apps in this way. Yeah. Awesome. So I …

Get the full transcript (11,391 words) + summary by email — free

One-time email with the complete transcript and AI summary of this episode. No account needed.

One email, no spam. We’ll also show you what SignalCast does.

Browse all Full Stack Radio transcripts →

You just read a 3-minute summary of a 52-minute episode.

Get Full Stack Radio summarized like this every Monday — plus up to 2 more podcasts, free.

Pick Your Podcasts — Free

Keep Reading

Books, tools, and gear mentioned in this episode

SignalCast may earn commission on purchases via these links.

Tools

  • MirageRecommended
    Selikoff describes using Mirage to build entire features and write tests against simulated server states without touching the network, defining what the backend needs to change before writing any API code.

More from Full Stack Radio

We summarize every new episode. Want them in your inbox?

Similar Episodes

Related episodes from other podcasts

Explore Related Topics

This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.

You're clearly into Full Stack Radio.

Every Monday, we deliver AI summaries of the latest episodes from Full Stack Radio and 192+ other podcasts. Free for one show.

Start My Monday Digest

No credit card · Unsubscribe anytime