Skip to content

Version flows

When you need to update a flow’s structure or add new steps, create a new flow version with a unique slug. This approach keeps existing runs safe while allowing you to deploy new functionality.

Flows are immutable by design. Once registered in the database, their structure cannot be modified to protect running workflows and maintain data integrity.

Changing flow shape requires a new flow definition with a unique flow_slug. Use pgflow compile to generate the proper migration.

Safe (No New Version Needed)Breaking (Requires New Version)
✅ Modifying step handler code❌ Adding/removing steps
✅ Adjusting retry parameters❌ Changing step dependencies
✅ Updating timeout values❌ Modifying input/output types
✅ Bug fixes within handlers❌ Changing step slug names

Put the new flow in its own file with a versioned slug.

  • Directorysupabase/functions/
    • Directory_tasks/
      • fetchUserData.ts
      • sendEmail.ts
    • Directory_flows/
      • greet_user.ts
      • greet_user_v2.ts // 👈 new
  1. Create new flow file

    supabase/functions/_flows/greet_user_v2.ts
    export default new Flow<Input>({
    slug: 'greet_user_v2',
    // ...new configuration and step definitions
    })
  2. Compile it

    Compile the new flow to SQL which generates a migration file:

    npx pgflow@latest compile supabase/functions/_flows/greet_user_v2.ts
  3. Run migration

    npx supabase migrations up --local

Old version stays live; new one is separate.