class ReactOnRails::PrerenderError

def build_troubleshooting_suggestions(component_name, err, console_messages)

rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
def build_troubleshooting_suggestions(component_name, err, console_messages)
  suggestions = []
  # Check for common error patterns
  if err&.message&.include?("window is not defined") || console_messages&.include?("window is not defined")
    suggestions << <<~SUGGESTION
      1. Browser API used on server - wrap with client-side check:
         #{Rainbow("if (typeof window !== 'undefined') { ... }").cyan}
    SUGGESTION
  end
  if err&.message&.include?("document is not defined") || console_messages&.include?("document is not defined")
    suggestions << <<~SUGGESTION
      1. DOM API used on server - use React refs or useEffect:
         #{Rainbow('useEffect(() => { /* DOM operations here */ }, [])').cyan}
    SUGGESTION
  end
  if err&.message&.include?("Cannot read") || err&.message&.include?("undefined")
    suggestions << <<~SUGGESTION
      1. Check for null/undefined values in props
      2. Add default props or use optional chaining:
         #{Rainbow("props.data?.value || 'default'").cyan}
    SUGGESTION
  end
  if err&.message&.include?("Hydration") || console_messages&.include?("Hydration")
    suggestions << <<~SUGGESTION
      1. Server and client render mismatch - ensure consistent:
         - Random values (use seed from props)
         - Date/time values (pass from server)
         - User agent checks (avoid or use props)
    SUGGESTION
  end
  # Generic suggestions
  suggestions << <<~SUGGESTION
    • Temporarily disable SSR to isolate the issue:
      #{Rainbow('prerender: false').cyan} in your view helper
    • Check server logs for detailed errors:
      #{Rainbow('tail -f log/development.log').cyan}
    • Verify component registration:
      #{Rainbow("ReactOnRails.register({ #{component_name}: #{component_name} })").cyan}
    • Ensure server bundle is up to date:
      #{Rainbow('bin/shakapacker').cyan} or #{Rainbow('yarn run build:server').cyan}
  SUGGESTION
  suggestions.join("\n")
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
end