Best practices for structuring n8n workflows for scale and long-term maintainability

I’ve been working with n8n for increasingly complex automations and wanted to get community input on workflow structure once things move beyond simple linear flows.

Specifically curious how others handle:

  • Breaking large workflows into reusable sub-workflows vs keeping context in one place

  • Naming conventions and versioning strategies that don’t become painful over time

  • Error handling patterns (global error workflows vs localized try/catch logic)

  • Managing credentials and environment differences cleanly between dev/staging/prod

  • Performance considerations when workflows grow in node count or execution frequency

The docs cover individual nodes well, but I’m interested in real-world patterns people have found effective when workflows become business-critical and long-lived.

Would love to hear what’s worked (or not worked) for others running n8n at scale.