Downcity
PluginsHooksExamples

Common Bad vs Good Designs

Use short bad-vs-good comparisons to show when to choose pipeline, guard, effect, resolve, or lifecycle runtime

Common Bad vs Good Designs

Misuse 1

Need:

  • add default fields to a message

Bad choice:

  • use guard

Better choice:

  • use pipeline

Misuse 2

Need:

  • block the request if permission is missing

Bad choice:

  • use effect

Better choice:

  • use guard

Misuse 3

Need:

  • write one audit log after each execution

Bad choice:

  • use pipeline

Better choice:

  • use effect

Misuse 4

Need:

  • determine the user's final role

Bad choice:

  • use pipeline

Better choice:

  • use resolve

Misuse 5

Need:

  • maintain a long-lived cache and background sync worker

Bad choice:

  • put everything into plugin hooks

Better choice:

  • let plugin lifecycle own the long-lived state
  • keep hooks focused on chain extension