Replies: 29 comments 86 replies
-
WebflowpifyI completely agree with Michaël from Maestrooo! In addition all of this appears to be pointless because, according to personal research, 98% of merchants use 99% of the original theme designs they purchase, with probably only 1% going beyond that and hiring a Shopify developers to make the necessary alterations for them and another 1% which creates the ugliest and most unusable user unfriendly design known to mankind. The Tailwind-inspired class names will haunt me for the rest of my life btw. |
Beta Was this translation helpful? Give feedback.
-
Just going off the suggestion of using something like |
Beta Was this translation helpful? Give feedback.
-
This is super complexe indeed, I find the current implimentation super complexe for merchant which will create incosistencies especialy after adding an extra layer of the breakpoints. |
Beta Was this translation helpful? Give feedback.
-
Great feedback. I can totally see where this level of flexibility being given to merchants could be concerning, but @tbqmax mentioned, many merchants just use themes as-is and will probably not interact with these settings very much. Something to keep in mind is that, while these are merchant facing features, theme blocks and style settings are also theme development tools. They are designed to allow the theme developer to use less code, reuse blocks, and write less CSS to accomplish things in Themes. We are definitely keeping an eye on how unwieldy it is to build out themes (and for merchants to customize them) with the current feature set and are going to be rolling out improvements to let merchants create more cohesive designs. We don't have any real details to share on that front yet, but think of things along the lines of being able to reuse values for similar settings between blocks and sections as one possible option to sort of "lock in" a grid system of some sort. |
Beta Was this translation helpful? Give feedback.
-
Upgrades are an ongoing struggle for ourselves and our partners and we are constantly trying to improve the experience for merchants and theme developers. Like with any theme upgrade where blocks are changed, the ID or type of a setting changes, etc... , a manual upgrade will be required for merchants to change to a theme that moves from today's settings to Style settings. That said, theme developers do have the choice of switching to using Style Settings for existing themes. We will be sure to update our theme partners when we do make improvements to theme upgrades in the future - it's something we are always looking at and hoping to improve bit by bit. |
Beta Was this translation helpful? Give feedback.
-
This is a really interesting idea. cc @clauderic can fill in a bit more detail on why we went with the approach we did and whether or not we see a world where we use more generic classes like you showed here. |
Beta Was this translation helpful? Give feedback.
-
Since the layout settings apply It's just the nature of Flexbox, though I can see how it might feel unintuitive from a merchant's perspective. Our goal is to give theme developers and merchants as much of the power of Flexbox as we reasonably can, and a side-effect of that is them needing to learn how these blocks behave when certain settings are enabled (wrap v.s. no-wrap, etc...) |
Beta Was this translation helpful? Give feedback.
-
I would argue that whether or not this is used by merchants is somewhat irrelevant to how much of a point this feature has. There are two sides to it. It is both a merchant facing feature and a theme developer tool. It allows us to use the same |
Beta Was this translation helpful? Give feedback.
-
Thank you everyone for your feedback! |
Beta Was this translation helpful? Give feedback.
-
There appears to be a significant disconnect here. The core purpose of theme development is, fundamentally, development. While I may be in an echo chamber, my understanding is that developers generally want Shopify to reduce its involvement in rendering cycles and overall storefront handling, particularly concerning CFH (content_for_header), which currently overrides native methods. If anything, these base styles would likely result in more overrides and workarounds, not less code as suggested. Maybe consider Control vs. Convenience - while Shopify aims to simplify development, developers often prefer granular control over their code and themes. Your response assumes that less code is always better, but this ignores the value of custom, optimized solutions.
By limiting developer control, Shopify is creating a paradoxical situation. On one hand, you want to give more power to users, but on the other, Shopify is restricting the very people (developers) who are best equipped to harness that power effectively. This approach forces merchants to grapple with complex layout concepts they shouldn't need to understand, while simultaneously hamstringing developers who could create more efficient, customized solutions. The result is likely to be increased complexity for merchants, reduced flexibility for developers, and an overall decrease in the quality and consistency of store designs. This misalignment has the foundations to compromise the end-user experience and the platform's effectiveness. Relating to the proposed logicSo, let me get this straight.... Shopify generates an external CSS file, injects and renders it in via CFH and then applies a The tactic proposed here also has performance implications while flaunting no fail-safe for custom applied logic. Shopify already has redundant injections that developers are unable to control due to the restrictions that CFH imposes. Also, the Tailwind inspired syntactics are not a good look. Let's just quickly go over some very low-level nuances here. There are far more, but let's just scratch the surface. Specificity and cascade issuesShopify generating both external and inline styles, there's a risk of specificity conflicts. Inline styles typically have higher specificity than external stylesheets, how is Shopify going to isolate this. Reduced optimization opportunitiesRemoving control from the developer, Shopify limits opportunities for advanced CSS optimizations. Inconsistent ExperiencesCustom webshops often require nuanced responsive designs. How can Shopify adequately handle complex responsive layouts or breakpoints, without leading to inconsistent experiences? It's impossible to predict nuances in procedural declarative languages like CSS. Debugging complexityCSS coming from multiple sources (custom code, Shopify-generated external file, and inline styles), debugging becomes significantly more complex. This "enhancement" is just concerning tbh. This is not webflow or wix. Theme development exists in isolation, it has garnered careers and produced specialization. This updates ignores what Shopify developers, theme publishers and this small community has worked to establish. Do better. |
Beta Was this translation helpful? Give feedback.
-
Honestly this feels like a lot of extra work just let theme developers create nested settings with global blocks/components |
Beta Was this translation helpful? Give feedback.
-
I could not agree more with all the comments that have been done. @tyleralsbury theme blocks are a great idea, and the addition of static blocks and block restriction is a step in the right direction. It will allow us to create more generic blocks, reuse them across themes, and only bother with styles. On the other hand, all those new style settings introduce so much complexity, and this does not align at all with what merchants are asking us at support. I'm not saying this is bad per so, but just that it should not be part of the theme editor itself. Apps like Instant HQ can do that very well, but in my opinion, they are trying to solve a different problem than what themes are solving. Give such tools the API to do it even better, and keep the theme editor for the mass as optimal as possible. I understand as well that those new settings are completely optional, but you know as much as I do that Dawn is going to adopt them everywhere, on every single block (this is the direction Shopify has been taking by adding a ton of settings to Dawn, which ends up being a highly complex and hard-to-configure theme). All themes will have to follow if they want to survive (even if merchants won't use it, they will constantly ask us why a free theme has theme but not a paid theme). A better direction, in my opinion, would be to introduce some more specific settings to offer a better editing experience (similar to the recent "text_alignment" setting), but ultimately leave the development concern to the theme. Here are a few ideas:
I'm simply not understand the target of this:
At the end you will end up with an extremely complex stuff that you will need to maintain forever, for a use case that seems, in our experience, pretty minimal. Oh, and please remove the idea of the breakpoint stuff. This is useless and will just cause a lot of confusion and extra support debt. We never had such requests from merchants, so I'm not sure where this idea is coming from. Finally, I think this is another perfect example of a lack of communication with partners (and especially Theme Partners). You guys went all in in a direction that is clearly unpopular, did a lot of implementation work, without even asking us what we would think of it, and if it indeed aligns with actual merchant's demand. |
Beta Was this translation helpful? Give feedback.
-
The big issue here is that the Dawn/Webflowpify team is stuck in their own little world. And unfortunately from what I can see you are the ones pushing out these new features left and right without really getting what the rest of us, theme developers and merchants alike actually need. Trust me, none of us are itching for Shopify to have more say in how we design and build our themes. Bakura makes a valid point about focusing on "introducing more specific settings to offer a better editing experience (similar to the recent 'text_alignment' setting)." This approach could be more beneficial and align better with developer needs as well as those of the majority of Merchants. Shopify's already bloating our sites with a bunch of unoptimized JS files nobody asked for. If you now start doing the same with CSS, we're done. I think that's one of the reasons some decide to go the Headless road, lol. Honestly, if the team behind this just stepped out of their bubble and did some real-world research, they'd see that merchants usually play it safe. They go for professionally designed stuff because they know it works. Maybe it's time to let the developers do their job without all the micromanaging. The only good thing I see here is that this time you are at least asking for some feedback. |
Beta Was this translation helpful? Give feedback.
-
I totally agree with what @bakura10 and @panoply previously said. This feature doesn't add much except complexity and confusion. I also saw in the documentation "Style input settings (coming soon)" with the following description:
Is the next step to have different content by breakpoint, maybe I'm wrong ? |
Beta Was this translation helpful? Give feedback.
-
I'm going to chime in with a dissenting positive opinion here. I maintain around 100 stores for an agency, all centralized on a single custom theme. This theme is spun up, given initial design values and then handed off to account managers for maintenance. Because my "base" theme needs maximum flexibility, I've been home-spinning section style blocks myself by merging common JSON schema into each section (and even more complex strategies). Each section needs color theming, spacing, text, and other settings, and some settings are breakpoint specific. This is taxing to develop, use and maintain, and the section settings are almost unreadable. I understand that theme store developers are seeing a shift towards over-customizability, something their customers don't really ask for, and that doesn't accomplish much. Even though the feature is optional, I get that customers get accustomed to these tweaking settings once Shopify introduces them, and that's frustrating for developing off-the-shelf themes. That said, there are quite a few developers supporting a lot of stores or large stores rather than developing themes for sale. If they are like me, this feature will be a short burst of pain to roll out followed by a whole lot of no-brainer benefit. |
Beta Was this translation helpful? Give feedback.
-
While I can see the goal for Style Settings and acknowledge this is a 'Developer Preview'–it was not presented or showcased as a developer preview. I have merchants asking when this will be available and when we're going to implement it. I generally agree with @blanklob, @panoply, @bakura10, and @tbqmax. This first release is disappointing. First and foremost, this is a great point.
At Proton it is incredibly common for merchants to ask us to support detailed breakpoint specific settings on a section (example pictured below where the merchant can edit image/copy for mobile/desktop along with various other settings like positioning, colors, etc). As an agency we have adopted some of the principles established by Dawn:
The broad styling that can be applied by Style Settings goes directly against this standard. The enablement of in-theme customization on this level will drive us back to seeking perfection across viewports. I applaud the semi-support of flex in the style settings however providing the Webflow like settings is going to create a compatibility sh*t show and an infinite support cycle for Theme Developers, App Developers, and agencies. There was very clearly no consideration for style conflicts or the fact that Safari is a constant pain in the ass, as this expands how do you guarantee cross-browser compatibility? To do so requires prefixing, polyfiling, etc leading to more bloat and my next point. Now I want to speak on the technical performance implications of the direction this establishes. Sections already support “custom css” that comes with it’s own set of issues. For example, in February we completed a week-long performance audit for TrueClassicTees, an OS 2.0 theme that heavily relied on “custom css”. Below is a direct quote from our report to their Eng team.
There were (and are) dozens of
While it does appear the Style Settings generate a single file it is more bloat that we do not need.. [weeks after Dawn is finally improving how styles are loaded](Shopify/dawn#3509).
The support and implementation of this level of customization should be left up to developers. For example, when we support this in themes we do so using Tailwind and CSS variables. That does not mean Shopify should do the same or do something similar though. The merchant experience for configuring this is an absolute mess and the developer experience is even worse repeating all those settings to ensure a responsive design, give us a middle ground, let us define complex setting layouts like those of 'Style Settings' with our own implementations. https://gist.github.com/0x15f/834ad550e8ff95b1d27567de8c65a746#file-shoppable-hero-banner-liquid |
Beta Was this translation helpful? Give feedback.
-
Hey folks, Ok wow, so much feedback. Tried to take it all in but here’s some raw thoughts already. If you want to chat more we’ll find a time to meet, just email [email protected].
As for theme store, this will NOT be a feature that is a requirement. you guys should use it where you think it’s useful and leave it where you don’t. K that’s what I have so far but yea, email me and we’ll find some time to meet. -V |
Beta Was this translation helpful? Give feedback.
-
Before going for a more developed answer, let's just start with the elephant in the room : Let the theme developers breathe. Theme blocks is a huge step, it will take months for everyone to digest this paradigm shift ! Add the style settings over these ? This is scope-creep at this point. Outside any problems I might have with the style settings, let us dabble in theme blocks before anything else. |
Beta Was this translation helpful? Give feedback.
-
Also kudos to @tyleralsbury who jumped in here quick. Sorry it took so long for us to join you man |
Beta Was this translation helpful? Give feedback.
-
I don’t know if my last comment was super clean so I want to expand on this a bit. Basically I agree with everyone…
|
Beta Was this translation helpful? Give feedback.
-
Before I begin, thanks for having this discussion, it means a lot to everyone ! I love being as passionate as I am for these discussions, thanks for that ! All arguments shared here are valid and I think listening to them is capital for the theme development landscape future. I will start with a discussion centered on merchant experience, how to correct the style settings. Then, I will share my opinion on the most appropriate roadmap for theme development, I'd love to have your opinion on this ! Please, if anything, just spread the word in upper management, I’m afraid theme agencies (as well as partners) will have a really hard time adjusting given the current agenda ! For my part, I’ll focus on what I specialise in, merchant theme experience. It’s been a few years now since I started to do theme development and I’ve iterated a lot with my schema patterns. Sometimes I’ve gone simple, sometimes more complex. The only constant is that simple always win and with partners being in the game for more than 10 years, we’ve learned how to use the tools provided effectively. I can count more than 5 times where I devised, in my eyes, a brilliant system. That ends up never being used by the merchant because they don’t have the need nor the time for such configurability. Sad but true. Style settings brings absolutely nothing positive to the table. It’s simply, more attractive-looking, data we can already generate, but we don’t. Because we already tried and it didn’t work well. Here is what I’m using these days on all of my sections : It’s as easy as it gets, some headers/paragraphs and easy to grasp settings. I can extend it when needed but that’s all the data the merchant needs regarding layout. Anything else and, from my experience, merchants get lost in the process. Now, here’s what I like with style settings, the idea of more specialized component appearances for “expected” sets of parameters like spacing of alignment. The only drawback at this point with the examples above is that they can take up a lot of vertical space. For the technical aspect, here’s what I would think as a draft proposal : {% schema %}
{
"name": "Test section",
"blocks": [ ... ],
"settings": [
{
"type": "spacing",
"label": "Section spacing",
"options(or configuration)": {
// Here, dedicated settings for component configuration
},
"settings(or slots)": [
{
"type": "range",
"id": "mobile_top_margin",
"slot": // Assign setting to component fixed slot ids
"label": "Top margin (mobile)",
"min": 0,
"max": 200,
"step": 2,
"default": 40
},
{ ... }
]
}
],
"presets": [ ... ]
}
{% endschema %} Of course, it’s a gross simplification as it would require some more parsing capabilities to unlock these component-level settings but that is the way to go with theme developments in my opinion. It could even be just some grouping/accordion features or in general more flexibility on how we expose our settings to the merchant. Just like Trustpilot (and many others) business model is providing more widgets to their clients from an already existing data, I think theme development should also go towards this direction. The data is here, why add an interface layer on top of that ? It’s the job of theme developers to create the most intuitive interfaces, we already know how to prepare our CSS and high-level, theme-wide thinking on how to create the best merchant experience is a favorite part of most people here ! To conclude, here is a purely subjective bullet point list of everything the
I hope all of this helps consolidate and reorder the different needs expressed by a multitude of people with a multitude of needs. Let's try to converge to simple guidelines for Shopify to escalate the feedback ! Again, I want to thank all contributors to this discussion, first @tyleralsbury and @vlaurenlee for participating and hearing our rants, you're awesome ! Then, all the partners that are more than equipped to help Shopify take the right path when we come to crossroads such as this one ! A great day to you all and let's all work towards a great |
Beta Was this translation helpful? Give feedback.
-
After reading all the comments i think this is the better option instead of css being generated by shopify {
"type": "style.flex",
"id": "flex_direction",
"default": [
{
"screen": "mobile",
"label": "row"
},
{
"screen": "tablet",
"value": "column"
},
{
"screen": "max-desktop",
"value": "--row"
}
]
} in liquid it should be {% assign ss = section.settings %}
<style>
.main-section {
display: flex;
flex-direction: {{ ss.flex_direction.mobile }};
}
@media ({{ breakpoints.tablet }}) {
.main-section {
flex-direction: {{ ss.flex_direction.tablet }};
}
}
@media ({{ breakpoints.max-desktop }}) {
.main-section {
flex-direction: {{ ss.flex_direction.desktop }};
}
}
</style>
<section class="main-section"></section> at last there should be a way to declare these breakpoints object globally where we can name them like min-tablet, max-tablet, min-mobile, max-mobile .... also the value in screen could be custom eith use css var like --row, --horizontal or css value like row and column |
Beta Was this translation helpful? Give feedback.
-
One issue with all layout settings applying For example, in the reference theme there is a section towards the bottom of the homepage titled "Multimedia collage", which has two 25% width blocks (one image, one collection card) stacked vertically, next to a 75% width collection card. To achieve this using While the example in the reference theme isn't egregious, there is nothing to stop the merchant from adding more blocks to the 25% width group block if they want to extend the section further down the page. The issue with this is that the DOM (and keyboard focus) order will be all of the elements in the group block, followed by the other elements in the section, which doesn't match the visual presentation once any of the blocks contained in the group block are below the bottom of the viewport. The W3C focus order requirements in technique C27 are to "Ensure that the order of the content in the source code sections match the visual presentation of the content in the Web page". Failure to so do so is likely to lead to confusion for assistive technology users. It also means that all blocks inside the 25% group block will render first on mobile, which might be confusing for merchants (for the same reason). This could be avoided by using I have picked that example because it illustrates the issue and is more concrete than a theoretical example. While it might be a little contrived, the same concerns apply whenever a layout requires a grid pattern where the items differ significantly in height, and is more likely to be a problem the more complex the layout. Another accessibility concern related to theme blocks is heading hierarchy, since either the merchant will have little control over what heading tag is rendered, or will need to learn about the importance of heading hierarchy to SEO and accessibility themselves (without it necessarily being obvious to them that they need to). The reference theme for example simply renders all heading blocks as h2. I was hopeful that additional options for restrictions on theme blocks would allow building a theme which prevented merchants from accidentally making their own site worse, but with the only restriction (currently) being the permissible child blocks I don't believe that is possible. While personally I'm very onboard with improving the flexibility of theme customisation for merchants, I would have thought that one of the main benefits to merchants of the current system is that they can customise their site with confidence that they're not going to break anything (which appears to be the focus of a sizeable number of the theme store submission requirements). Increasing flexibility is likely to always be in tension with that, but from my perspective there appear to be few tools in these new systems that would let theme designers mitigate the risks introduced by the increased flexibility. |
Beta Was this translation helpful? Give feedback.
-
Another idea @vlaurenlee. This is not directly related to this, but a little bit :D. One issue we often have for themes when they become too complex is an overload of settings. This can cause confusion, and with proposals like style settings that further increase what merchants have to configure, problem with be bigger and bigger. Something theme dev have asked for a long time are conditional settings. Along with specialized settings, they could be really useful (I'm thinking of
|
Beta Was this translation helpful? Give feedback.
-
Thanks guys, this is kind of why we do this and put ourselves our there early. So we can hear this kind of stuff. We always wanted to give the ability for you to be able to use the same UI (like a spacing panel where there are more advanced settings hidden) but hook everything up yourself in the CSS and the liquid, you should see a release of that sooner than later given this thread. The reason why we wanted to do some generation is because, even for our own themes, we want the ability to minimize the amount of CSS repetition given with each block but it doesn't mean you HAVE to do it that way for sure and it's more explicit and easy to control when you catch the variables in code. We'll come back for sure with more on this one. |
Beta Was this translation helpful? Give feedback.
-
It's great to see the theme developer community getting involved in this topic and giving constructive feedback and interesting insights. Sometimes it feels like we're on our own and not really considered by Shopify, it's good to be heard. So thanks to all of you, and especially to @bakura10 @TeamDijon @panoply @vlaurenlee Maxime from Unique Paris |
Beta Was this translation helpful? Give feedback.
-
I like the concept of Theme Blocks, as it enables the creation of complex components such as mega-menus, faqs, slideshows, etc which are now difficult to implement and not intuitive for users to configure. But I'm also concerned that Shopify will dictate the technical and design aspects. Developers should maintain control over their projects appearance and structure, including choosing between Flexbox, Grids or whatever is needed. Flexbox isn't always the best option, Grids are becoming more powerful, especially with the growing support for CSS Subgrid there will be designs that will not work with Flexbox. Imagine a global grid system governing the entire layout, with every element inside respecting this grid... this is achievable with subgrid, but flexbox cannot be used in this scenario because the design would not work. This is only a small example, but it is quite significant in our case for instance. If Shopify predetermines these decisions and requires specific tools, it will limit flexibility and push us to find workarounds for navigating the platform's choices. This will restrict us from utilizing the most appropriate tools for every situation. In addition, I am not very into the idea of the current viewport options. Merchants will eventually require specific viewports for tablets, laptops, and other devices, making it hard to ensure that everything functions and looks great across all possible modification options. From a planning and design perspective, creating new themes with so many customization options is challenging. It's nearly impossible to anticipate and ensure that everything will function and appear as intended. I also fear that granting merchants extensive customization freedoms could lead to issues with design, accessibility, and SEO, ultimately complicating the user experience rather than simplifying it as well as increasing the amount of support tickets. Furthermore, this level of customization adds significant complexity to the theme editor, which is already not in its best shape in terms of UX. Theme code will also suffer by being more complex and prone to errors. But I am confident that we can discuss these concerns with you guys, and that this time you are listening to our feedback, and that we can find the best solution that works for everyone. |
Beta Was this translation helpful? Give feedback.
-
Ok spent some time with the team this morning. I loved all of the examples, code snippets are really helpful, I can't say this enough, thanks everyone. We’re going to honour that by coming back here next week with examples of code as we figure out next steps. So this is what we’re going to work on and share next week here on the thread:
We’re also likely going to prioritize moving theme blocks to production earlier so that you all can play with it more on an actual live shop if you want. Migration will be tricky but we’re going to figure it out. |
Beta Was this translation helpful? Give feedback.
-
Hey all, first and foremost, thank you so much for your perspective. We had the pleasure of meeting so many of you virtually last week to discuss our latest developer preview and received a ton of great feedback. Rather than try to jam it all into a single post, I’ve created a couple of dedicated threads for discussion. Please check out the first two topics here: Another topic which we discussed here and in our developer feedback sessions was the ability to customize breakpoints. We’re going to begin sketching out some concepts and prototypes soon. Once we have something to share, we’ll circle back here and spin up another discussion thread. Thanks again for all your support and feedback. We’re looking forward to hashing out these ideas and many others in the coming months. |
Beta Was this translation helpful? Give feedback.
-
Hi,
Michaël from Maestrooo here.
I tried this morning the reference theme.
Flexibility
I'm not gonna lie, I am not a big fan of all the new features, we are entering the Webflow area here, and I don't really like the flexibility given to merchants here. At least it is optional, but if Dawn goes the road of exposing this to every blocks/sections, this will become the expectations of merchants and I am afraid we will be forced somehow to use this as well.
I am afraid this gives too much responsibility to the merchants. Creating a cohesive spacing system for merchants will take a lot of time.
Upgrade
How will this work in the context of automatic upgrade?
When we rewrote Prestige last year from scratch, we had a lot of issues as Shopify allowed automatic upgrade from an old version, and this messed a lot of things and caused lot of support. If we upgrade our theme to this, we will need to remove and replace a lot of settings, meaning a merchant upgrading will have a store where most of they settings won't be preserved.
I think Shopify should have a way to detect if a theme is using the new architecture or not, and prevent any upgrade.
Class names
I was curious to see how class was implemented, and apparently a unique class is generated for every sections/blocks:
Couldn't this be a bit smarter and using something like
styles:size:width-50%
so that if two sections/blocks have the same width, this leads to only one rule ?Size
I'm not sure this is a bug but I've set the right group to be 65%, but it appears smaller than the left image. This is quite unintuitive:
Beta Was this translation helpful? Give feedback.
All reactions