Layout model
Key difference- Layout-aware route
- Yoga flexbox reflow
- PptxGenJS
- Manual x/y/w/h
- python-pptx
- Manual Inches(x, y)

Compare
Every other PPTX library requires manual x/y/w/h coordinates. PaperJSX uses Yoga flexbox — slides reflow automatically when content length changes.
[01] Side by side
These are the practical differences that show up once the slide content stops being fixed-length.
| Capability | Layout-aware route | PptxGenJS | python-pptx |
|---|---|---|---|
| Layout model | Yoga flexbox reflow | Manual x/y/w/h | Manual Inches(x, y) |
| Line breaking | Knuth-Plass | Basic | Basic |
| Content length changes | Layout reflows | Requires coordinate edits | Requires coordinate edits |
| Authoring model | Declarative JSON tree | Imperative slide builder | Imperative slide builder |
[02] The difference
This is what the implementation model looks like in practice when the same slide has to survive variable-length content.
slide.addText('Q2 Board Update', {x: 0.6,y: 0.8,w: 8.6,h: 0.5,fontSize: 24,bold: true,});slide.addText(['Revenue up 34% QoQ','NRR reached 118%',], {x: 0.6,y: 1.7,w: 8.6,h: 1.6,breakLine: true,});
{type: 'slide',children: [{type: 'stack',gap: 20,children: [{ type: 'text', text: 'Q2 Board Update', fontSize: 24 },{type: 'stack',gap: 8,children: [{ type: 'text', text: 'Revenue up 34% QoQ' },{ type: 'text', text: 'NRR reached 118%' },],},],},],}
[03] Where it pays off
Once titles grow, bullets wrap, or sections appear and disappear, coordinate maintenance becomes a recurring engineering cost. A layout engine eliminates that category of work entirely.
Layout-aware route
Best when content length varies enough that coordinate maintenance is already showing up in the roadmap or the bug queue.
Coordinate-first route
If the structure never changes and explicit slide placement works, coordinates can be enough — but most teams underestimate how quickly content starts varying.
Use the slide that breaks when the data changes. The layout engine handles it automatically — no coordinate adjustments needed.