theme-check 1.2.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/theme-check.yml +3 -3
- data/.gitignore +1 -0
- data/CHANGELOG.md +47 -0
- data/CONTRIBUTING.md +59 -1
- data/Gemfile +3 -0
- data/bin/theme-check +29 -0
- data/bin/theme-check-language-server +29 -0
- data/config/default.yml +15 -1
- data/config/theme_app_extension.yml +15 -0
- data/data/shopify_liquid/objects.yml +1 -0
- data/docs/checks/app_block_valid_tags.md +40 -0
- data/docs/checks/asset_size_app_block_css.md +1 -1
- data/docs/checks/deprecate_lazysizes.md +0 -3
- data/docs/checks/deprecated_global_app_block_type.md +65 -0
- data/docs/checks/missing_template.md +25 -0
- data/docs/checks/pagination_size.md +44 -0
- data/docs/checks/template_length.md +1 -1
- data/docs/checks/undefined_object.md +5 -0
- data/docs/flamegraph.svg +18488 -0
- data/lib/theme_check/analyzer.rb +1 -0
- data/lib/theme_check/check.rb +2 -2
- data/lib/theme_check/checks/app_block_valid_tags.rb +36 -0
- data/lib/theme_check/checks/asset_size_css.rb +3 -3
- data/lib/theme_check/checks/asset_size_javascript.rb +2 -2
- data/lib/theme_check/checks/convert_include_to_render.rb +3 -1
- data/lib/theme_check/checks/default_locale.rb +3 -1
- data/lib/theme_check/checks/deprecate_bgsizes.rb +1 -1
- data/lib/theme_check/checks/deprecate_lazysizes.rb +7 -4
- data/lib/theme_check/checks/deprecated_global_app_block_type.rb +57 -0
- data/lib/theme_check/checks/img_lazy_loading.rb +1 -1
- data/lib/theme_check/checks/img_width_and_height.rb +3 -3
- data/lib/theme_check/checks/missing_template.rb +21 -5
- data/lib/theme_check/checks/pagination_size.rb +84 -0
- data/lib/theme_check/checks/parser_blocking_javascript.rb +1 -1
- data/lib/theme_check/checks/remote_asset.rb +3 -3
- data/lib/theme_check/checks/space_inside_braces.rb +26 -6
- data/lib/theme_check/checks/template_length.rb +1 -1
- data/lib/theme_check/checks/undefined_object.rb +1 -1
- data/lib/theme_check/checks/valid_html_translation.rb +1 -1
- data/lib/theme_check/checks.rb +11 -1
- data/lib/theme_check/cli.rb +42 -3
- data/lib/theme_check/corrector.rb +9 -0
- data/lib/theme_check/file_system_storage.rb +12 -0
- data/lib/theme_check/html_check.rb +0 -1
- data/lib/theme_check/html_node.rb +37 -16
- data/lib/theme_check/html_visitor.rb +17 -3
- data/lib/theme_check/json_check.rb +2 -2
- data/lib/theme_check/json_file.rb +11 -0
- data/lib/theme_check/json_printer.rb +31 -0
- data/lib/theme_check/language_server/constants.rb +18 -11
- data/lib/theme_check/language_server/document_link_engine.rb +3 -67
- data/lib/theme_check/language_server/document_link_provider.rb +71 -0
- data/lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb +11 -0
- data/lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb +11 -0
- data/lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb +11 -0
- data/lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb +11 -0
- data/lib/theme_check/language_server/handler.rb +17 -9
- data/lib/theme_check/language_server/server.rb +11 -13
- data/lib/theme_check/language_server/uri_helper.rb +37 -0
- data/lib/theme_check/language_server.rb +6 -0
- data/lib/theme_check/node.rb +6 -4
- data/lib/theme_check/offense.rb +56 -3
- data/lib/theme_check/parsing_helpers.rb +4 -3
- data/lib/theme_check/position.rb +98 -14
- data/lib/theme_check/printer.rb +9 -5
- data/lib/theme_check/regex_helpers.rb +5 -2
- data/lib/theme_check/theme.rb +3 -0
- data/lib/theme_check/version.rb +1 -1
- data/lib/theme_check.rb +1 -0
- data/theme-check.gemspec +1 -1
- metadata +21 -10
- data/bin/liquid-server +0 -4
- data/exe/theme-check-language-server.bat +0 -3
- data/exe/theme-check.bat +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60f0635001a9f808d12b55e0328536911bde9ea36160bcf34a63f10114401d18
|
4
|
+
data.tar.gz: 78365fe98014904e058191934663b75d24701db8a2a2585edac2557192cec5d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0520e083dac843ed6273ba17e0cb44ee0e9e2c412f85a81b176da8b0912a583ab262c0c25b0b580df9c53cabefca305dce468559efa6df786ff37b7583e7ecc4
|
7
|
+
data.tar.gz: 58b7483ad5935de781eddf850a73c88f04aadbae394416f901fa38e173b44b4af3717947fc72cc009c899866ce1d27cc3f6597d5de7dd7ea1ef6984393d71ff4
|
@@ -4,16 +4,16 @@ on: [push]
|
|
4
4
|
|
5
5
|
jobs:
|
6
6
|
test:
|
7
|
-
runs-on:
|
7
|
+
runs-on: ${{ matrix.platform }}
|
8
8
|
|
9
9
|
strategy:
|
10
10
|
matrix:
|
11
|
+
platform: [ubuntu-latest, windows-latest]
|
11
12
|
version:
|
12
13
|
- 3.0.0
|
13
|
-
- 2.7.1
|
14
14
|
- 2.6.6
|
15
15
|
|
16
|
-
name: Ruby ${{ matrix.version }}
|
16
|
+
name: Ruby ${{ matrix.platform }} ${{ matrix.version }}
|
17
17
|
|
18
18
|
steps:
|
19
19
|
- uses: actions/checkout@v2
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,51 @@
|
|
1
1
|
|
2
|
+
v1.5.1 / 2021-09-08
|
3
|
+
===================
|
4
|
+
|
5
|
+
* Fix PaginationSize issue ([#429](https://github.com/shopify/theme-check/issues/429), [#428](https://github.com/shopify/theme-check/issues/428))
|
6
|
+
|
7
|
+
v1.5.0 / 2021-09-07
|
8
|
+
==================
|
9
|
+
|
10
|
+
### Features
|
11
|
+
|
12
|
+
* Add [DeprecatedGlobalAppBlockType](docs/checks/deprecated_global_app_block_type.md) ([#402](https://github.com/shopify/theme-check/issues/402))
|
13
|
+
|
14
|
+
### Fixes
|
15
|
+
|
16
|
+
* Add Windows CI
|
17
|
+
* Fix multiple Windows bugs ([#413](https://github.com/shopify/theme-check/issues/413), [#415](https://github.com/shopify/theme-check/issues/415))
|
18
|
+
* Fix pagination size as string bug in PaginationSize ([#417](https://github.com/shopify/theme-check/issues/417), [#421](https://github.com/shopify/theme-check/issues/421))
|
19
|
+
|
20
|
+
v1.4.0 / 2021-08-30
|
21
|
+
==================
|
22
|
+
|
23
|
+
* Add new object drop: `predictive_search`
|
24
|
+
* Bump `TemplateLength` `max_length` default
|
25
|
+
* Fix `RemoteAsset` incorrectly firing on structured data elements [#393](https://github.com/Shopify/theme-check/issues/393)
|
26
|
+
* Fix document links not working on open
|
27
|
+
* Fix `asset_url` document links
|
28
|
+
* Use better heuristics for `DeprecateLazysizes`
|
29
|
+
* Add support for `section` document links
|
30
|
+
* Add support for `include` document links
|
31
|
+
* Automatically creates the default translation file (`locales/en.default.json`) if it doesn't already exist.
|
32
|
+
|
33
|
+
v1.3.0 / 2021-08-26
|
34
|
+
==================
|
35
|
+
|
36
|
+
* Add `--output json` option for the CLI ([#392](https://github.com/shopify/theme-check/issues/392))
|
37
|
+
* Add PaginationSize check ([#359](https://github.com/shopify/theme-check/issues/359))
|
38
|
+
* Add ConvertIncludeToRender auto corrector ([#341](https://github.com/shopify/theme-check/issues/341))
|
39
|
+
* Add MissingTemplate auto corrector ([#388](https://github.com/shopify/theme-check/issues/388))
|
40
|
+
* Add `MissingTemplate` `ignore_missing` option ([#394](https://github.com/shopify/theme-check/issues/394))
|
41
|
+
* Fix Windows duplicate .bat file problem ([#400](https://github.com/shopify/theme-check/issues/400))
|
42
|
+
* Fix substring highlighting inside nodes ([#386](https://github.com/shopify/theme-check/issues/386))
|
43
|
+
* Add check for forbidden tags in theme app extension blocks ([#383](https://github.com/shopify/theme-check/issues/383))
|
44
|
+
* Improve HTML parsing of liquid attributes ([#381](https://github.com/shopify/theme-check/issues/381))
|
45
|
+
* Handle escaped file URIs in language server ([#360](https://github.com/shopify/theme-check/issues/360)) ([#382](https://github.com/shopify/theme-check/issues/382))
|
46
|
+
* Change asset size errors into suggestions ([#378](https://github.com/shopify/theme-check/issues/378))
|
47
|
+
* Switch to nokogiri 1.12, since it includes html5 support directly now ([#391](https://github.com/shopify/theme-check/issues/391))
|
48
|
+
|
2
49
|
v1.2.0 / 2021-07-15
|
3
50
|
==================
|
4
51
|
|
data/CONTRIBUTING.md
CHANGED
@@ -31,7 +31,7 @@ bundle exec rake
|
|
31
31
|
## Checking a theme
|
32
32
|
|
33
33
|
```
|
34
|
-
|
34
|
+
bin/theme-check /path/to/your/theme
|
35
35
|
```
|
36
36
|
|
37
37
|
## Creating a new "Check"
|
@@ -65,3 +65,61 @@ MyNewCheckName:
|
|
65
65
|
ignore: []
|
66
66
|
muffin_mode: true
|
67
67
|
```
|
68
|
+
|
69
|
+
## Debugging
|
70
|
+
|
71
|
+
A couple of things are turned on when the `THEME_CHECK_DEBUG` environment variable is set.
|
72
|
+
|
73
|
+
1. The check timeout is turned off. This means you can add `binding.pry` in tests and properly debug with `bundle exec rake tests:in_memory`
|
74
|
+
2. The `--profile` flag appears. You can now create Flamegraphs to inspect performance.
|
75
|
+
|
76
|
+
```
|
77
|
+
export THEME_CHECK_DEBUG=true
|
78
|
+
|
79
|
+
# The following will behave slightly differently
|
80
|
+
bin/theme-check ../dawn
|
81
|
+
bundle exec rake tests:in_memory
|
82
|
+
|
83
|
+
# The following becomes available
|
84
|
+
bin/theme-check --profile ../dawn
|
85
|
+
|
86
|
+
# The LanguageServer will log the JSONRPC calls to STDERR
|
87
|
+
bin/theme-check-language-server
|
88
|
+
```
|
89
|
+
|
90
|
+
### Profiling
|
91
|
+
|
92
|
+
`ruby-prof` and `ruby-prof-flamegraph` are both included as development dependencies.
|
93
|
+
|
94
|
+
#### Flamegraph
|
95
|
+
|
96
|
+
With the `--profile` flag, you can run theme-check on a theme and the `ruby-prof-flamegraph` printer will output profiling information in a format [Flamegraph](/brendangregg/FlameGraph) understands.
|
97
|
+
|
98
|
+
|
99
|
+
**Setup:**
|
100
|
+
|
101
|
+
```bash
|
102
|
+
# clone the FlameGraph repo somewhere
|
103
|
+
git clone https://github.com/brendangregg/FlameGraph.git
|
104
|
+
|
105
|
+
# the flamegraph.pl perl script is in that repo
|
106
|
+
alias flamegraph=/path/to/FlameGraph/flamegraph.pl
|
107
|
+
```
|
108
|
+
|
109
|
+
**Profiling:**
|
110
|
+
|
111
|
+
```
|
112
|
+
# run theme-check with --profile
|
113
|
+
# pass the output to flamegraph
|
114
|
+
# dump the output into an svg file
|
115
|
+
bin/theme-check --profile ../dawn \
|
116
|
+
| flamegraph --countname=ms --width=1750 \
|
117
|
+
> /tmp/fg.svg
|
118
|
+
|
119
|
+
# open the svg file in Chrome to look at the flamegraph
|
120
|
+
chrome /tmp/fg.svg
|
121
|
+
```
|
122
|
+
|
123
|
+
What you'll see is an interactive version of the following image:
|
124
|
+
|
125
|
+

|
data/Gemfile
CHANGED
data/bin/theme-check
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'theme-check' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("theme-check", "theme-check")
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'theme-check-language-server' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("theme-check", "theme-check-language-server")
|
data/config/default.yml
CHANGED
@@ -23,6 +23,7 @@ LiquidTag:
|
|
23
23
|
MissingTemplate:
|
24
24
|
enabled: true
|
25
25
|
ignore: []
|
26
|
+
ignore_missing: []
|
26
27
|
|
27
28
|
NestedSnippet:
|
28
29
|
enabled: true
|
@@ -44,7 +45,7 @@ SyntaxError:
|
|
44
45
|
TemplateLength:
|
45
46
|
enabled: true
|
46
47
|
ignore: []
|
47
|
-
max_length:
|
48
|
+
max_length: 600
|
48
49
|
# Exclude content of {% schema %} in line count
|
49
50
|
exclude_schema: true
|
50
51
|
# Exclude content of {% stylesheet %} in line count
|
@@ -177,3 +178,16 @@ AssetSizeAppBlockCSS:
|
|
177
178
|
enabled: false
|
178
179
|
ignore: []
|
179
180
|
threshold_in_bytes: 100_000
|
181
|
+
|
182
|
+
AppBlockValidTags:
|
183
|
+
enabled: false
|
184
|
+
ignore: []
|
185
|
+
|
186
|
+
PaginationSize:
|
187
|
+
enabled: true
|
188
|
+
ignore: []
|
189
|
+
min_size: 1
|
190
|
+
max_size: 50
|
191
|
+
|
192
|
+
DeprecatedGlobalAppBlockType:
|
193
|
+
enabled: true
|
@@ -23,6 +23,7 @@ LiquidTag:
|
|
23
23
|
MissingTemplate:
|
24
24
|
enabled: true
|
25
25
|
ignore: []
|
26
|
+
ignore_missing: []
|
26
27
|
|
27
28
|
NestedSnippet:
|
28
29
|
enabled: true
|
@@ -110,11 +111,13 @@ ParserBlockingScriptTag:
|
|
110
111
|
|
111
112
|
AssetSizeJavaScript:
|
112
113
|
enabled: true
|
114
|
+
severity: suggestion
|
113
115
|
ignore: []
|
114
116
|
threshold_in_bytes: 10_000
|
115
117
|
|
116
118
|
AssetSizeCSS:
|
117
119
|
enabled: true
|
120
|
+
severity: suggestion
|
118
121
|
ignore: []
|
119
122
|
threshold_in_bytes: 100_000
|
120
123
|
|
@@ -144,10 +147,22 @@ HtmlParsingError:
|
|
144
147
|
|
145
148
|
AssetSizeAppBlockJavaScript:
|
146
149
|
enabled: true
|
150
|
+
severity: suggestion
|
147
151
|
ignore: []
|
148
152
|
threshold_in_bytes: 10_000
|
149
153
|
|
150
154
|
AssetSizeAppBlockCSS:
|
151
155
|
enabled: true
|
156
|
+
severity: suggestion
|
152
157
|
ignore: []
|
153
158
|
threshold_in_bytes: 100_000
|
159
|
+
|
160
|
+
AppBlockValidTags:
|
161
|
+
enabled: true
|
162
|
+
ignore: []
|
163
|
+
|
164
|
+
PaginationSize:
|
165
|
+
enabled: true
|
166
|
+
ignore: []
|
167
|
+
min_size: 1
|
168
|
+
max_size: 50
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Reject Forbidden Tags from Theme App Extension Blocks (`AppBlockValidTags`)
|
2
|
+
|
3
|
+
This rule exists to prevent theme app extension blocks from containing forbidden tags in their liquid code.
|
4
|
+
|
5
|
+
## Check Details
|
6
|
+
|
7
|
+
This rule verifies none of the below tags are used in theme app extension blocks.
|
8
|
+
|
9
|
+
- `{% javascript %}`
|
10
|
+
- `{% stylesheet %}`
|
11
|
+
- `{% include 'foo' %}`
|
12
|
+
- `{% layout 'foo' %}`
|
13
|
+
- `{% section 'foo' %}`
|
14
|
+
|
15
|
+
:-1: **Incorrect** code for this check occurs with the use of any of the above tags in the liquid code of theme app extension blocks.
|
16
|
+
|
17
|
+
## Check Options
|
18
|
+
|
19
|
+
The default configuration for theme app extensions is the following:
|
20
|
+
|
21
|
+
```yaml
|
22
|
+
AppBlockValidTags:
|
23
|
+
enabled: true
|
24
|
+
```
|
25
|
+
|
26
|
+
## When Not To Use It
|
27
|
+
|
28
|
+
This rule should not be disabled locally.
|
29
|
+
|
30
|
+
## Version
|
31
|
+
|
32
|
+
This check has been introduced in 1.3.0
|
33
|
+
|
34
|
+
## Resources
|
35
|
+
|
36
|
+
- [Rule Source][codesource]
|
37
|
+
- [Documentation Source][docsource]
|
38
|
+
|
39
|
+
[codesource]: /lib/theme_check/checks/app_block_valid_tags.rb
|
40
|
+
[docsource]: /docs/checks/app_block_valid_tags.md
|
@@ -10,9 +10,6 @@ This check is aimed at discouraging the use of the lazysizes JavaScript library
|
|
10
10
|
|
11
11
|
```liquid
|
12
12
|
|
13
|
-
<!-- Reports use of "lazyload" class -->
|
14
|
-
<img src="a.jpg" class="lazyload">
|
15
|
-
|
16
13
|
<!-- Reports use of "data-srcset" and "data-sizes" attribute. Reports data-sizes="auto" -->
|
17
14
|
<img
|
18
15
|
alt="House by the lake"
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Check for deprecated global app block type `@global`
|
2
|
+
This check makes sure theme sections are not using [deprecated (`@global`)][change_log] global app block type.
|
3
|
+
|
4
|
+
## Check Details
|
5
|
+
In order for theme sections to [support app blocks][support_app_blocks_in_theme_section], sections need to define a block of type `@app`. This check makes sure that theme sections are not using the deprecated (`@global`) global app block type in theme sections.
|
6
|
+
|
7
|
+
:-1: Example of **incorrect** theme section for this check:
|
8
|
+
```
|
9
|
+
{% for block in section.blocks %}
|
10
|
+
{% if block.type = "@global" %}
|
11
|
+
{% render block %}
|
12
|
+
{% endif %}
|
13
|
+
{% endfor %}
|
14
|
+
|
15
|
+
{% schema %}
|
16
|
+
{
|
17
|
+
"name": "Product section",
|
18
|
+
"blocks": [{"type": "@global"}]
|
19
|
+
}
|
20
|
+
{% endschema %}
|
21
|
+
```
|
22
|
+
|
23
|
+
:+1: Examples of **correct** theme section for this check:
|
24
|
+
```
|
25
|
+
{% for block in section.blocks %}
|
26
|
+
{% if block.type = "@app" %}
|
27
|
+
{% render block %}
|
28
|
+
{% endif %}
|
29
|
+
{% endfor %}
|
30
|
+
|
31
|
+
{% schema %}
|
32
|
+
{
|
33
|
+
"name": "Product section",
|
34
|
+
"blocks": [{"type": "@app"}]
|
35
|
+
}
|
36
|
+
{% endschema %}
|
37
|
+
```
|
38
|
+
|
39
|
+
## Check Options
|
40
|
+
|
41
|
+
The default configuration for this check is the following:
|
42
|
+
|
43
|
+
```yaml
|
44
|
+
DeprecatedGlobalAppBlockType:
|
45
|
+
enabled: true
|
46
|
+
```
|
47
|
+
|
48
|
+
## When Not To Use It
|
49
|
+
|
50
|
+
It is discouraged to disable this check.
|
51
|
+
|
52
|
+
## Version
|
53
|
+
|
54
|
+
This check has been introduced in Theme Check 1.5.0.
|
55
|
+
|
56
|
+
## Resources
|
57
|
+
|
58
|
+
- [Rule Source][codesource]
|
59
|
+
- [Documentation Source][docsource]
|
60
|
+
|
61
|
+
[codesource]: /lib/theme_check/checks/deprecated_global_app_block_type.rb
|
62
|
+
[docsource]: /docs/checks/deprecated_global_app_block_type.md
|
63
|
+
[remote_asset]: /docs/checks/deprecated_global_app_block_type.md
|
64
|
+
[support_app_blocks_in_theme_section]: https://shopify.dev/themes/migration#step-8-add-support-for-app-blocks-to-sections
|
65
|
+
[change_log]: https://shopify.dev/changelog/removing-the-global-block-type-in-favour-of-the-app-block-type-in-theme-sections
|