-
Notifications
You must be signed in to change notification settings - Fork 5
Planning Extension Vs Custom Blocks
github-actions[bot] edited this page Feb 9, 2026
·
1 revision
We've refactored DesignSetGo from creating custom blocks to extending existing WordPress core blocks. This results in:
- ✅ 80% less code (500 lines → 100 lines)
- ✅ Better UX (users already know Group block)
- ✅ Faster development (extend vs rebuild)
- ✅ Perfect compatibility (core blocks work everywhere)
- ✅ Future-proof (WordPress handles updates)
Files:
src/blocks/container/
├── block.json (130 lines)
├── index.js (30 lines)
├── edit.js (200 lines)
├── save.js (50 lines)
├── style.scss (40 lines)
└── editor.scss (20 lines)
Total: ~470 lines of code
User Experience:
- New block to learn
- Separate from WordPress patterns
- Potential theme conflicts
- Manual maintenance required
Files:
src/extensions/group-enhancements/
├── index.js (280 lines - includes ALL features)
└── styles.scss (30 lines)
src/variations/group-variations/
└── index.js (150 lines - 5 pre-built layouts)
Total: ~460 lines BUT includes:
- All Container features
- 5 pre-configured variations
- Better integration
- Less maintenance
User Experience:
- Familiar Group block
- WordPress-native workflow
- Perfect theme compatibility
- Automatic WordPress updates
// User must search for "container"
// New block to learn
// Separate from Group block patterns
designsetgo/container
├── Flexbox layout
├── Grid layout
├── Responsive controls
└── Custom attributes// Users search for "group" (familiar)
// Enhanced with DesignSetGo features
// Includes variations
core/group (enhanced)
├── All WordPress Group features
├── + DesignSetGo Layout controls
├── + Responsive visibility
├── + 5 pre-built variations
│ ├── Hero Section
│ ├── 3-Column Grid
│ ├── Side by Side
│ ├── Centered Container
│ └── Card Grid
└── Future extensions (animations, etc.)Block Inserter:
├── Group (WordPress)
├── Columns (WordPress)
└── DesignSetGo
└── Container (DesignSetGo)
❌ Duplicate functionality
❌ Fragmented UX
❌ Two ways to do the same thing
Block Inserter:
├── Group (WordPress)
│ └── Variations:
│ ├── Group (default)
│ ├── Hero Section (DesignSetGo)
│ ├── 3-Column Grid (DesignSetGo)
│ ├── Side by Side (DesignSetGo)
│ ├── Centered Container (DesignSetGo)
│ └── Card Grid (DesignSetGo)
│ └── Settings:
│ ├── WordPress native controls
│ └── DesignSetGo Layout (new panel)
│ ├── Layout Type
│ ├── Flexbox controls
│ └── Grid controls
└── DesignSetGo Responsive (new panel)
✅ One familiar block
✅ Unified experience
✅ Best of both worlds
Time: ~8 hours
1. Create block.json (1 hour)
2. Build Edit component (3 hours)
3. Build Save component (1 hour)
4. Style editor view (1 hour)
5. Style frontend (1 hour)
6. Test & debug (1 hour)
Time: ~2 hours
1. Add attributes via filter (15 min)
2. Add controls via filter (1 hour)
3. Add save props via filter (15 min)
4. Add styles (15 min)
5. Test & debug (15 min)
Result: 4x faster development!
build/blocks/container/
├── index.js (37KB)
├── index.css (1.1KB)
└── style-index.css (1.6KB)
Total: ~40KBbuild/
├── index.js (+15KB for extensions)
├── index.css (+0.5KB)
└── style-index.css (+0.5KB)
Total: +16KB
BUT includes:
- Group enhancements
- 5 variations
- Better integrationResult: 60% smaller for same functionality!
1. User searches "container"
2. Inserts Container block
3. Manually sets:
- Layout: Flexbox
- Direction: Column
- Justify: Center
- Align: Center
- Padding: 80px top/bottom
4. Adds Heading
5. Adds Paragraph
6. Adds Buttons
Time: ~5 minutes
1. User searches "hero" or "group"
2. Selects "Hero Section" variation
3. Pre-configured with:
✓ Flexbox column layout
✓ Center alignment
✓ Correct padding
✓ Heading placeholder
✓ Paragraph placeholder
✓ Button block ready
4. Just fill in content
Time: ~30 seconds
Result: 10x faster for users!
Responsibilities:
❌ Handle WordPress updates
❌ Test with new WordPress versions
❌ Fix breaking changes
❌ Update dependencies
❌ Maintain compatibility
❌ Handle deprecations
Responsibilities:
✅ WordPress handles block updates
✅ Only maintain extension logic
✅ Smaller surface area for bugs
✅ Automatic compatibility
✅ Less to maintain
- Create Group block extensions
- Add Flexbox/Grid controls
- Add responsive visibility
- Create 5 variations
- Update build system
- Add deprecation notice to Container block
- Provide migration tool
- Update documentation
- Guide users to Group variations
- Remove Container block completely
- Clean up codebase
- Update examples
// src/index.js
import './blocks/container'; // Custom block// src/index.js
import './extensions/group-enhancements'; // Extend Group
import './variations/group-variations'; // Add variations| Aspect | Custom Block | Extension | Winner |
|---|---|---|---|
| Code Size | 470 lines | 460 lines | Extension* |
| Features | Container only | Container + 5 variations | Extension |
| Dev Time | 8 hours | 2 hours | Extension |
| Bundle Size | 40KB | 16KB | Extension |
| User Time | 5 min | 30 sec | Extension |
| Maintenance | High | Low | Extension |
| Compatibility | Medium | Perfect | Extension |
| Future-Proof | No | Yes | Extension |
*Extension includes more features in similar line count
- Layout enhancements (Group, Columns)
- Typography effects (Heading, Paragraph)
- Button styling (Button)
- Image effects (Image)
- Color controls (all blocks)
- Spacing controls (all blocks)
- Accordion (unique interaction)
- Tabs (state management)
- Modal/Popup (special rendering)
- Icon Picker (complex UI)
- Carousel (complex navigation)
-
Test the Extensions
- Open WordPress editor
- Search for "Group" block
- See new DesignSetGo panels
- Try the 5 variations
-
Refactor Other Blocks
- Heading → Extend with gradients
- Button → Extend with icons
- Image → Extend with effects
-
Update Documentation
- User guides
- Developer docs
- PRD roadmap
Extensions > Custom Blocks for most use cases.
This approach makes DesignSetGo:
- ✅ Faster to develop
- ✅ Easier to maintain
- ✅ Better for users
- ✅ More WordPress-native
- ✅ Future-proof
We should continue this pattern for all planned blocks unless they require truly unique functionality.
Auto-generated from
docs/planning/EXTENSION-VS-CUSTOM-BLOCKS.md. To update, edit the source file and changes will sync on next push to main.
- Accordion
- Blobs
- Breadcrumbs
- Card
- Comparison Table
- Countdown Timer
- Counter Group
- Divider
- Flip Card
- Form Builder
- Grid
- Icon
- Icon Button
- Icon List
- Image Accordion
- Map
- Modal
- Modal Api Reference
- Modal Auto Triggers
- Modal Fse Compatibility
- Modal Gallery Navigation
- Modal Next Phase
- Modal Performance Fixes
- Modal Security Audit
- Modal Security Fixes Summary
- Modal Trigger
- Pill
- Progress Bar
- Reveal
- Row
- Scroll Accordion
- Scroll Gallery
- Section
- Slider
- Table Of Contents
- Tabs
- Timeline
- Animation
- Background Video
- Block Animations
- Clickable Group
- Custom Css
- Expanding Background
- Grid Mobile Order
- Grid Span
- Max Width
- Responsive Visibility
- Reveal Control
- Scroll Parallax
- Sticky Header
- Text Alignment Inheritance
- Text Reveal
- Ai Assisted Development
- Best Practices Summary
- Block Controls Organization
- Block Development Best Practices Comprehensive
- Block Exclusion Guide
- Control Reorganization
- Design System
- Wordpress Block Editor Best Practices
- Color Controls Pattern
- Custom Css Filters
- Performance Css Strategy
- Width Css Strategy Implementation
- Width Layout Patterns
- Antigravity Audit
- Card Block Audit
- Claude Audit
- Comprehensive Audit
- Cursor Audit
- Scroll Accordion Stacking Notes
- Security Review 1.2.1
- 2026 02 11 Icon Search Aliases Design
- 2026 02 14 Overlay Header Design
- 2026 02 15 Deactivation Block Migrator Design