Strapi, I barely knew ye.

Rian Schmidt

March 10, 2024

Table of Contents:

When your "vendor" trashes the very feature you picked them for
Open source is great. Use it or not. But don't whine. Here's some whining.
I might need to cut my losses
Update

I've mentioned that I'm not a huge fan of Strapi anymore.

This blog article sort of summarizes why:

When your "vendor" trashes the very feature you picked them for

From Strapi's v3 to v4 walk-through:

Note on GraphQL: Fundamentally, we used a more programmatic way to handle GraphQL. And the controllers are no longer coupled with the GraphQL resolvers. Also, due to our new "populate" feature, you can now designate what data you would like to get from your REST API to prevent over-fetching. Due to these two things and more flexible REST API implementation, you may have to revisit if GraphQL is still a requirement. Also, due to our new "populate" feature, you can now designate what data you would like to get from your REST API to prevent over-fetching. Due to these two things and more flexible REST API implementation, you may have to revisit if GraphQL is still a requirement. If GraphQL is still something you would like to use from your previous version, you would have to rewrite any of your custom resolvers with the required logic.

You may have to revisit if GraphQL is still a requirement? Seriously? Because... you're not into it anymore? Cool, cool. I'll just rip it out of all the projects I built. You're good with me using React? Or nah?

Open source is great. Use it or not. But don't whine. Here's some whining.

Well, as it happens, I did a whole upgrade from v3 to v4 for a client a couple of weekends ago, and it was not what I'd call super fun. It worked, but I burned several hours of my life that I'll never get back, and all I got was this stupid feature parity.

Now, one of the great things about open source is that it's (often) free, as in beer. So, complaining about how the people who make it, make it... is sort of dumb. I realize that's what I'm doing. The Strapi people think GraphQL is either a) worse than REST, or b) should look like this:

{
  repositories {
    data {
      id
      attributes {
        name
        issues {
          data {
            attributes {
              author {
                data {
                  attributes {
                    login
                    ... on Organization {
                      data 
                        id
                        attributes {
                          name
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }

    meta {
        pagination {
          pageCount
        }
    }
  }
}

I might need to cut my losses

So, as I think about it, I am inclined to just dump it rather than go through that time suck experience again. It may be time to get back together one of my other favorite magical tools: Hasura! If you haven't played with it, it's really something. Super fast GraphQL for (almost) free on top of a relational database. Given that all I'm doing with Strapi is this blog, I can pretty easily move the content over.

Ironically, I believe it'll be less work/frustration to move to an entirely different project than to try to untangle that v3-v4 migration mess.

Turns out the thing I need to reconsider isn't GraphQL at all.

Update

After weighing all the pros and cons, I eventually decided to upgrade clients where it made sense and just rip it out where it didn't. In one case, my own, I did the upgrade but added Hasura into the mix as my graphql server. So, I still use Strapi as my CMS UI, but I use Hasura to serve up the data to my site. Pretty easy setup, the graphql is better, and I trust Hasura not to rugpull me on it.

Circinaut is a Fractional CTO services provider, based in Portland, Oregon, working with clients all across the country. I focus on application development, technology advising, and ongoing support for small and medium-sized businesses.
If your business is in need of a part-time CTO, a fractional CTO, or a contract technical consultant, drop me a line. I'm happy to have a quick chat to discuss your situation with no sales pressure at all (really!).