I have just started with the theme development in the magetento 2.1. I am over all new to magento. I wanted to know the setup and the ways to one develop a theme in magento . After a lot of reading the procedure i follow after making a change in the custom theme file is

  1. When changing/overriding the layout file run the 'php bin/magento setup:static-content:deploy --theme vendor/theme' command.
  2. When changing/overriding the less files/static files using grunt i run 'grunt exec:vendor && grunt less:vendor'. (Offcourse after configuring grunt).

But if instead of modifying the files from the app/design/frontend/vendor/theme/ if i modify the less/static files from 'pub/static/frontend/vendor/theme/en_US/' I can just run grunt less:vendor and i can get the compiled css there and after my development is done i can copy the files back to app/design/frontend folder at respective places.

What are the best practices or the common way of theme development steps?

PS: All vendor is your vendor and all theme is respective theme name.

1 Answer 1


Question 1 - PHTML templates and layout XML changes

For development purposes you should be running in developer mode, to check this you can run php bin/magento deploy:mode:show. If you need to set it to developer mode use php bin/magento deploy:mode:set developer.

When in developer mode you do not need to run the static-content:deploy command, this is only for production mode. All you'll need to do when changing a layout or template file (PHTML) is to clear your cache (layout and block cache if you want to be specific).

Question 2 - Static assets (JS, CSS etc)

When changing static assets you do not need to run exec, this sets up symlinks so it's only useful when you have added or removed a file. If all you have done is change some styling you'll only need to run the grunt less:theme task.

If you've changed other static assets such as Knockout HTML templates or a JS file in most cases clearing your browser cache is enough.

If you make a change and it isn't being shown no matter what you do it's normally a good idea to clear the following directories:


And if it's backend/module related also remove



And for an answer on how to develop a theme from scratch please see my answer here.

I'd also recommend reading the front-end dev docs pages

  • How about if i am adding a new play_layout apart from "1column.xml" etc I tried that but it is not coming in the dropdown of the new page that i create from the admin panel. Commented May 26, 2017 at 16:56
  • You'll likely need to clear cache and possibly log out of the admin then log back in. If this doesn't work I think there is something wrong with the code.
    – Ben Crook
    Commented May 30, 2017 at 9:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.