First Widget Checklist

Use this checklist before opening your first widget MR.

Definition and Config

  • [ ] key is globally unique and stable

  • [ ] label is user friendly

  • [ ] layout has sane defaults and minimums

  • [ ] config.schema contains all user facing settings

  • [ ] Defaults live in schema default values (not duplicated in runtime)

  • [ ] docsUrl points to widget docs

Runtime Behavior

  • [ ] useLiveData and polling behavior are explicit

  • [ ] Loading, error, and empty states are rendered

  • [ ] Expensive input normalization is memoized

  • [ ] Host provided state (variables, workspace, brush) uses SDK hooks

UX and Persistence

  • [ ] User interactions that should survive reloads persist via useWidgetConfigPersistence

  • [ ] Table widgets use SDK table primitives instead of custom header logic

  • [ ] Role levels are applied for restricted settings where needed

Quality

  • [ ] Unit tests cover schema/definition and critical behavior

  • [ ] npm run lint, npm run test, and npm run build pass locally

  • [ ] Local playground works with createMockHost + DevProviders