Development Practices
Code Formatting
Standards for consistent code formatting across the Formbricks project
Core Configuration
Prettier Config
Formbricks uses a standardized Prettier configuration defined in @formbricks/config-prettier
:
Key configurations:
- 110 characters line width
- Double quotes for strings
- ES5 trailing commas
- Always use parentheses for arrow functions
- Strict import ordering
Import Order
All imports follow a strict ordering:
- Mocks (for testing)
- Server-only imports
- Third-party modules
- Internal
@formbricks/*
modules - Local aliases (`~/*)
- Relative imports
TypeScript Config
- Strict TypeScript checking enabled
- Consistent use of
tsconfig.json
extending from@formbricks/config-typescript
- Example configuration:
JSDoc Comments
Required for public APIs and complex functions:
Error Handling
Standardized error handling using the ErrorHandler class:
Enforcement Tools
Pre-commit Hooks
Using Husky and lint-staged for automated checks:
ESLint Configuration
Each package extends from @formbricks/eslint-config
with specific presets:
library.js
for packagesnext.js
for Next.js applicationsreact.js
for React applications
Continuous Integration
- Automated formatting checks in CI/CD pipeline
- SonarCloud integration for code quality analysis
- Coverage requirements for tests
VS Code Integration
Required Extensions
esbenp.prettier-vscode
- Prettier formattingdbaeumer.vscode-eslint
- ESLint integrationbradlc.vscode-tailwindcss
- Tailwind CSS support
Recommended Settings
Best Practices
-
Consistent Formatting
- Always run
pnpm format
before committing - Use VS Codeβs format on save feature
- Follow the established import order
- Always run
-
Type Safety
- Enable strict TypeScript checks
- Use explicit type annotations when necessary
- Avoid using
any
type
-
Code Organization
- Keep files focused and modular
- Group related functionality
- Use clear, descriptive names
-
Documentation
- Document complex logic
- Use JSDoc for public APIs
- Keep comments current with code changes
These standards ensure consistency across the Formbricks codebase while maintaining high code quality and developer productivity.
Was this page helpful?