Shopify vs Magento 2
A comparison of Shopify and Magento 2 from both a shop owner's and developer's point of view.
There are many e-commerce platforms available for businesses that want to sell products online. Lately I have been checking out two popular, but very different ones in order to give a brief overview from both a shop owner’s and a developer’s perspective as a basis for a discussion of the use cases for these systems.
Although different, these two platforms share a similar end-goal in helping their customers provide a web based shopping experience that can be customized both visually and functionally in order to operate as a main platform for their business.
Shopify is a hosted platform that can be set up entirely without any coding. It has an extensive ecosystem of apps, extensions and themes to customize the store that can all be installed and managed from the admin web-interface. It is widely used for quick setup of smaller shops but there are also examples of larger companies that successfully uses Shopify for their e-commerce.
As a developer
The Shopify developer experience is an overall pleasant experience. The whole ecosystem is well thought out and thoroughly documented. It feels like they had developers in mind when designing it.
All non-theme related customizations (e.g. anything admin related) are made through Shopify apps. Public apps can be distributed for others to use and custom apps are meant to be private to your project. In theory, this is a very nice system that allows for app development to occur independently from the shop and eliminates a need to redeploy the shop code when editing or adding an app. In practice, however, this adds a lot of extra work because the app lives as a separate server which communicates through Ajax requests and requires some setup to get working. This is especially painful when prototyping or building a small but common feature such as a dynamic product import through code.
The benefit of this is that the developer is free to choose its own technology stack for the apps as long as it follows the Shopify API.
As a store owner
The modern admin interface is very appealing, it works as a Single Page Application, roughly meaning that it does not reload the web page when navigating the menu which makes the entire experience of working in the admin feels very fast.
It is extremely easy to install, preview and publish a theme, whether from the official theme store of from a third party source like Themeforest. Many themes can be customized from the admin interface, although some themes are limited to solely texts and colors you can often get a lot done without any coding. The best bet for a completely customized theme, however, will likely be to edit the code itself which, from a store owner standpoint, may not be desirable.
Coming from Magento you will probably need to spend some time in the app store searching for features that you are used to having from the beginning. The core features in Shopify are somewhat limited compared to Magento and mostly covers the basics of e-commerce functionality. Thankfully, like themes, apps are also very easy to install and setup in order to get things like payment or product metafields.
Shopify has three plans ranging from $29 to $299 per month and will also charge an additional fee of 2% on each transaction if you are using a third-party payment gateway.
Magento is a robust e-commerce platform also with a large number of plugins and themes. It has a ton of features, some more targeted at large companies with huge stores. The amount of features allows merchants to customize a shop without any coding, however, due to its complexity it is likely that anyone without any programming knowledge is going to hit a wall at some point and require consulting from a developer. Magento is open-source and self hosted.
As a developer
As a popular and open-sourced software, Magento has a large community of developers which means almost any issue you will encounter has already been solved and documented on some forum or article online. This along with its extensive documentation makes a solid foundation for a good developer experience.
Developing efficiently for Magento will however, require some experience with the ecosystem. It is a large system with many moving parts and many ways to accomplish things in. All development is done in modules which installs separately onto the code base but still in the same monolith giving the developer access to all the libraries and modules that the core uses.
As a store owner
Magento has many features and the user interface for anyone managing the store can be a lot to take in initially. If you get through the initial learning curve many customizations can be done within in the admin interface, however, if you do want to install any extensions you will have to turn to a developer. And chances are, no matter how experienced you get you will at some point have to make changes in the code in order to get the desired behavior simply because no framework or product is going to fit all use cases, especially not one that has as many users as Magento.
Unless you have a large budget and can use the ”Magento Commerce” plan, which includes hosting, you need to setup hosting on you own. This is something many developers do not even want to mess with, meaning that you might need someone experienced with hosting to do it. It will probably not cost that much to do for a small store but as the project scales this can be a large source of monthly costs.
The market for pre-built themes is large and most themes can be customized through the admin interface. The installation requires some technical knowledge because it is not done through the web interface.
When all of the above is set up, however, you will have a solid system that should work event when the product and customer count increases. Order and product management, payments, international support are only some of the things that Magento does really well.
When deciding, from a store owner’s perspective, seemingly in agreement with the general consensus, Shopify can be used to get a store up and running without much or any need for a developer whereas Magento should not be touched until a decent budget and developer resources are secured. Furthermore, should that be the case, the road to a robust customized system is likely shorter with Magento due to the extended functionality that comes out of the box.
With that said, Shopify should not be discarded due to lack of functionality too quickly. The extension and theme marketplace is growing rapidly and it can be customized quite extensively with private apps as well. Regarding functionality, Magento takes the first place if you require many admin features, with a lot already there upon installation the ability to customize it seems better than in the case of Shopify, however, examples show companies building larger systems with Shopify as the core and connecting several other services on top of that such as a CMS which makes it a candidate to support the needs of bigger businesses too.
Another important factor is the usability of the admin interface which Shopify wins by far. It has way fewer features than Magento which makes it easier to navigate the entire system. It is also way quicker to both set up and use. Magento is built with a more traditional approach that requires page loads for most of the actions which makes everything feel way slower than Shopify’s SPA approach.
In an early stage, Magento will probably be the cheaper option since the hosting fees are likely very low. The base price for Shopify is not to bad either but it will not be long until you need to upgrade if you shop is growing. Along with all extra fees Shopify can get pricy pretty fast. Self hosted platforms can also get almost infinitely expensive if not monitored and optimized but that will also require more time spent on devops.
When it comes to developer experience both systems have a modular approach to all extensions and themes. The Shopify platform takes this one step further when they require a completely separate application for extensions because of its hosted environment. The REST API communication is fairly powerful but in some cases limits what can be done while Magento allows developers to extend and use many classes and libraries on top of a MySQL database. The Shopify API is, however, clearly defined and well documented so working with it is nice compared to the complicated Magento class and library interfaces. So for smaller changes Magento might actually work in favor here since there is less overhead to get a module up and running although arguably Shopify will be the easier option with less confusion unless you have worked with Magento before or have very specific and complicated needs.
Another concern is performance for the end user and system security. Since the Shopify store itself is hosted by Shopify and their business benefits greatly from increased sales due to better end user experience, performance is naturally a high priority for them which means less time and money needs to be spent on optimizations from the shop owner or developer while Magento is a huge codebase with complex database table structure and is expensive computationally that needs lots of attention regarding performance when scaling.
Sites based on Magento constantly needs to be updated and redeployed when security patches comes out which requires resources to complete if even done. Many sites are running behind on updates due to lack of resources or even care for small updates. This is avoided with Shopify since all updates regarding core shop features are handled by them and rarely changes the API interfaces toward extensions.
All in all Shopify can be seen as sort of a general solution for many use cases, not only the ones where a not so customized shop needs to be set up quickly, but also when more customizations needs to be done in the theme, admin interface or elsewhere. While Magento, that requires way more resources to set up, might be useful when you have a team of developers familiar with the framework and a large budget and require a very robust and scalable system.