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

  1. Call Liquid::Environment.default.register_filter(mod)
  2. 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

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


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)