Shopify/liquid · warning
Template.register_filter
Error message
Template.register_filter
What it means
Liquid::Template.register_filter is deprecated; global filters are now registered with Environment#register_filter. The shim delegates to Environment.default and warns via Deprecations, because filter registries are per-environment in current Liquid.
Solutions
- Call Liquid::Environment.default.register_filter(mod)
- Or register the module on a dedicated Environment instance used for parsing
Example fix
// before Liquid::Template.register_filter(MyFilters) // after Liquid::Environment.default.register_filter(MyFilters)
Defensive patterns
Strategy: validation
Validate before calling
Liquid::Environment.default.register_filter(mod)
Prevention
- Register filter modules through Environment at boot
- Avoid class-level Template configuration in shared libraries
- Audit initializers for Template.register_* calls on every Liquid upgrade
When it happens
Trigger: Calling Liquid::Template.register_filter(MyFilterModule) in an initializer or support file.
Common situations: Apps adding money/date helper filters globally after upgrading Liquid; gems that extend Liquid's standard filter set.
Understand the failure class
Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.
Related errors
- Template.error_mode= is deprecated. Use…
- DEPRECATION WARNING: Condition#evaluate without a context…
- [DEPRECATION] # is deprecated. Use # instead. Called from #…
- :rigid is deprecated. Use :strict2 instead.
- Template.default_exception_renderer=
AI-assisted analysis of Shopify/liquid@807d45a6b3 (2026-09-08).
Data as JSON: /api/errors/f17d6dad17384a3c.
Report an issue: GitHub.
Appendix: source
Thrown at lib/liquid/template.rb:68
end
def file_system
Environment.default.file_system
end
def tags
Environment.default.tags
end
def register_tag(name, klass)
Deprecations.warn("Template.register_tag", "Environment#register_tag")
Environment.default.register_tag(name, klass)
end
# Pass a module with filter methods which should be available
# to all liquid views. Good for registering the standard library
def register_filter(mod)
Deprecations.warn("Template.register_filter", "Environment#register_filter")
Environment.default.register_filter(mod)
end
private def default_resource_limits=(limits)
Deprecations.warn("Template.default_resource_limits=", "Environment#default_resource_limits=")
Environment.default.default_resource_limits = limits
end
def default_resource_limits
Environment.default.default_resource_limits
end
# creates a new <tt>Template</tt> object from liquid source code
# To enable profiling, pass in <tt>profile: true</tt> as an option.
# See Liquid::Profiler for more information
def parse(source, options = {})
environment = options[:environment] || Environment.default
new(environment: environment).parse(source, options)View on GitHub (pinned to 807d45a6b3)