| > One of the worst development experiences of all time... The API’s you can use are pretty sluggish and poorly documented. Can you elaborate? Shopify released their GraphQL Admin API in 2018, which has built in documentation, as well as an interactive IDE (Graphiql) that you can run on your shop. As long as you're not doing anything too crazy that exceeds the throttle (e.g., syncing 1000s of products), they're pretty good about listening to developer requests. https://help.shopify.com/en/api/graphql-admin-api > Rails is just not meant for heavy transactional load. Shopify has invested heavily in their sharding setup so that it can be handle high load and scale quickly. e.g., flash sales where baseline traffic will 3x in a matter of seconds. See the discussion of pods: https://engineering.shopify.com/blogs/engineering/e-commerce... > And e-commerce needs async to handle what can be a huge load. Long running processes are async. However, having commerce modeled by a transactional database that provides atomicity is a boon for simplicity. You don't want to deal with eventual consistency when updating inventory or placing orders. Note: Am ex-Shopify. Ran the API team. |
* The Metafields feel both over-engineered and difficult to use. Stripe did a great job - metadata is a set of string key/value pairs that are always fetched when you fetch a thing. Shopify's metafields are typed and need to be fetched explicitly from the REST API. You can't get a list of Products and their associated metafields; you have to fetch each Product's metafields one at a time. It's a critical facility and yet works very poorly.
* The API for metafields is inconsistent. Want to get metafields for a variant? /admin/products/#{id}/variants/#{id}/metafields.json Want to get metafields for a product image? /admin/metafields.json?metafield[owner_id]=#{id}&metafield[owner_resource]=product_image WAT?
* Variants (and images) have unique ids, but you always have to reference them as /products/123/variants/456. Variants should be /variants/456.
* Suffixing all the requests with .json is annoying and not RESTy. We have content negotiation headers for that.
* Yes, I know you can work around some of this with GraphQL. Does Shopify intend to deprecate the REST API? I am not personally a big fan of GraphQL, but if the REST API is getting dustbinned, I'd like to know about it.
Mind you, this is just what I noticed from a few days of working with the API.
PS IMO, 3x isn't much of a flash! 300x, now we're talking :)