First up, why does this blog exist?

8/12/2025

tl;dr: After reading the news about Payload joining Figma, I figured I’d actually give Payload CMS a proper crack (monorepo’d with Next.js) to see how it stacks up against WordPress.
Spoiler alert: it’s yummy.

Payload is the CMS that everyone is talking about. It's built to play really nicely with Next.js (my beloved💕) and has been on my radar for a while now. So, this arvo I figured I'd throw together a simple blog site to have a play. (Inspired by some other dev-centric blogs I've been reading, Kibty & Overreacted). Ultimately, the goal was just to see if Payload is as red hot as all the incels on r/nextjs seem to think it is.

The Stack

I wanted to keep it super lightweight, so pretty much no dependencies. I probably didn't even need Next... but used it anyway.

  • Next.js + Payload monorepo'd (local API from server components, admin at /admin)
  • Absolutely zero TailwindCSS (I’m a D1 tailwind hater, don’t @ me)
  • Postgres on Supabase (would've just used SQLite, but Vercel is lame)

My allegiance to the Queen

If you haven't worked out, I'm a Next.js diehard. File-based routing and server components? What a treat.

One thing I haven't tried until now however, is it's prefetching capabilities And damn, they're fantastic. Hover a link, and Next quietly grabs the RSC payload in the background. Clicks feel instant because the work’s already done. The blog loop on this site (and back button) use it, and phew is it fast. Especially when you consider I'm on the free plans for Supabase and Vercel. Not only that, it's literally one arg to add to your links, and it's ready to go. Definitely will be using this again.

Okay, back to Payload...

So… how does it stack up vs WordPress? Look, I’m a WordPress developer. And WordPress can get... to put it lightly... needlessly complicated for a tiny blog. Payload feels terrific:

What I love

  • Schema as code: collections are basic TypeScript, not a miscellaneous entry in wp_posts (seriously, how is everything stored in here)
  • API from inside the Next server components means no CORS and no round-trip nonsense.
  • An admin UI that doesn’t fight me (and a one-click "View API" button that’s life-changing).
  • No PHP theme bullshittery. (Not you, Laravel, you’re still cute.)

What I don't love

  • Once your content exists, adding and changing block shapes, renderers, and migrations requires a few deep breaths.
  • Query syntax is… wordy where: { and: [{ title: { like: q } }, { published: { equals: true } }] } is okay... but gets long for complex filters. (Still better than raw SQL in a page component, though.)
  • Local uploads are a no-go on Vercel. Supabase Storage works well, but you’re wiring buckets, signed URLs, and image sizes yourself, which gets a bit nasty

The Verdict

Unsurprisingly, it's great. But there's still plenty I haven't seen.

I'd love to see Payload at a larger scale, particularly fleshing out it's auth and caching capabilities. But all in all, for one dev and a small site, Payload-in-Next is perfect: quick, typed, deployable, fun.

Anyways I have no idea if I'll write anything else on this blog but who knows. Maybe I will. Until then,

Click around, it’s good for you.