module ReactOnRails::Utils

def self.normalize_immediate_hydration(value, name, type = "Component")

Raises:
  • (ArgumentError) - If value is not a boolean or nil

Returns:
  • (Boolean) - The normalized immediate_hydration value

Parameters:
  • type (String) -- The type ("Component" or "Store") for warning messages
  • name (String) -- The name of the component/store (for warning messages)
  • value (Boolean, nil) -- The immediate_hydration option value
def self.normalize_immediate_hydration(value, name, type = "Component")
  # Type validation: only accept boolean or nil
  unless [true, false, nil].include?(value)
    raise ArgumentError,
          "[REACT ON RAILS] immediate_hydration must be true, false, or nil. Got: #{value.inspect} (#{value.class})"
  end
  # Strict equality check: only trigger warning for explicit boolean true
  if value == true && !react_on_rails_pro?
    Rails.logger.warn immediate_hydration_pro_license_warning(name, type)
    return false
  end
  # If nil, default based on Pro license status
  return react_on_rails_pro? if value.nil?
  # Return explicit value (including false)
  value
end