Pre-Publish Checklist
Run through this 7-item checklist before publishing your field library. Every item is a common source of post-publish issues. A library that passes this checklist is ready for production use.
The 7-Item Checklist
1. Type Key Uniqueness
Each control's type string must be globally unique. Verify your namespace is not used by any other published library.
- Search MarketHub for your namespace prefix
- Confirm with your team that no internal libraries use the same prefix
- Format:
orgname:control-name(all lowercase, hyphens)
2. All Five Modes Tested
Render the control in all five operating modes and verify correct behavior:
| Mode | Expected Behavior | Test |
|---|---|---|
| edit | Interactive, shows validation errors | Manual + unit tests |
| view | Read-only, formatted display | ViewComponent renders correctly |
| preview | Read-only, same as view | readOnly prop respected |
| design | Static thumbnail, no events | DesignComponent or EditComponent static |
| admin | Same as edit (usually) | Mode prop does not break rendering |
3. TypeScript Strict Mode
Run tsc --noEmit --strict with zero errors. No any types except where explicitly needed (and documented).
4. Empty / Null Value Handling
Both EditComponent and ViewComponent must handle these without throwing:
value = nullvalue = undefinedvalue = ''value = 0value = false
5. peerDependencies Correct
Verify package.json has all Atlas Forms packages and React in peerDependencies, not dependencies. Run npm pack --dry-run and verify the bundle does not contain React or Atlas Forms source.
6. Accessibility
Each interactive control must have:
aria-labelon the input (oraria-labelledbyreferencing the field label)aria-invalid="true"whenerrorprop is presentaria-describedbypointing to the error element ID- Keyboard accessibility: Tab to focus, Enter/Space to activate
7. Test Coverage ≥80%
Run npm run test -- --coverage. The coverage report must show ≥80% for lines, branches, and statements across all source files in src/.
npm publish or submit to InstallHub. Remember to create a git tag for the version: git tag v1.0.0 && git push --tags.