What I wish I knew before building a Shopify App

  • They expect you to make a onepage application (SPA)

  • The polaris design system officially only supports react

  • Integration with the shop frontend is difficult if you’re not making a theme

  • Integrating functionality via webhooks is more tedious than it needs to be

  • Payments are simple to implement, once you understand how

  • The API is constantly changing in big ways

  • The API is surprisingly unreliable

  • Backend reliability isn’t great

  • Local development of integrated apps is hard

  • Modifying the checkout is not possible

https://ma.ttias.ch/what-i-wish-i-knew-before-building-a-shopify-app.html

This thread was posted by one of our members via one of our news source trackers.

2 Likes

Corresponding tweet for this thread:

Share link for this tweet.

1 Like

One of my struggles is how do you determine if an app you are going to build needs to be a SPA or a traditional multi-page application.

2 Likes

Complexity and offline capability is a good consideration @joeb

Things like Phoenix LiveView can take you quite far too, tbh…

2 Likes

But not for shopify, it does not run on Phoenix.

Anyway, You can have multi-page application when doing spa, You just use js router to achieve this…

2 Likes

But doesn’t that still need to load all the resources on the initial page load? Wouldn’t that be a problem for a large application?

2 Likes

You can do code splitting with Webpack.

You can also do PWA, and goes mode offline too.

In fact, js has good tooling to make an efficient frontend. Or anything that compiles to js… if You are concerned with type safety.

2 Likes

Can you recommend any resources that does a multi-page app with Webpack?

2 Likes

Sure you can (assuming your are not thinking of storefront or themes). Apps in shopify can be written in anything you like including phoenix and liveview. Shopify very much want it to be a SPA with their CSS styling to make it look and feel more consistent to their users but in the end they are just loading your application in an iframe or you can access the app directly without going through the shopify admin pages.

2 Likes

It depends which js lib You are using. I use React.

You might find more info here.

TLDR, it’s done using lazy loading with import()

2 Likes

Sorry, I was not clear. You can do a clone of shopify in liveview, but cannot use shopify with liveview because it’s not powered by phoenix.

What You can’t do is PWA with liveview.

I feel liveview was done to replace js, because of the complexity of js tools (webpack, framework). And that’s the way it is promoted, no need for js.

But if You master any of the js framework, You have already a powerful tool, that can do what liveview does, and more (PWA), but with state on the client.

2 Likes

We must be talking about completely different things :smiley:

I don’t understand this. I was referring to the original thread about writing apps in shopify which can be written in phoenix + liveview. I have written a couple myself.

The only thing hosted by shopify is there theming and storefront and if you don’t write apps for those (most apps do not) you can write the app in any language as you are hosting the backend yourself.

The article also pushes to strongly on that you “need” to write an SPA when writing embedded apps. Liveview works fine here and so does normal standard applications. It is just that most of shopifys learning resources and libraries are geared towards writing SPAs with their own styling to make the embedded applications look and feel as they are part of the shopify admin.

2 Likes

Yes :slight_smile:

I meant if (real) shopify is splitted into backend/frontend, You could easily switch frontend (Vue, React, Angular etc.), but not for liveview, because it needs Phoenix as backend.

3 Likes