Environment
- App: Notate (latest version)
- Device: Onyx BOOX Note Air 1
- OS: BOOX Android (latest firmware)
- Stylus: BOOX Pen
- Canvas type: Infinite canvas
Description
When drawing on the infinite canvas, strokes on the right side of the canvas are not rendered in real time, even though they are correctly captured.
The issue behaves inconsistently depending on viewport position:
- Drawing on the left side of the canvas works normally (real-time rendering)
- When moving to the right side of the canvas:
- strokes are still recorded in the document
- BUT they are not visually rendered
- Returning to the left side:
- rendering works again
- but previously drawn strokes on the right remain invisible
The missing strokes only appear after a viewport interaction, such as:
- panning the canvas with finger
- dragging the canvas slightly
- tapping or forcing a redraw event
After this interaction, all previously invisible strokes suddenly appear.
Steps to reproduce
- Open Notate
- Create a new infinite canvas note
- Draw on the left side → works correctly
- Continue drawing further to the right side of the infinite canvas
- Continue drawing
➡️ Result:
- strokes are not rendered in real time on the right side
- strokes exist in the model but are invisible
- Stop drawing and interact with canvas (pan / drag / tap)
➡️ Result:
- previously invisible strokes suddenly appear
Expected behavior
- All strokes should render in real time regardless of canvas position
- No dependency on viewport interaction for rendering updates
- Consistent rendering across full infinite canvas space
Actual behavior
- Left side: real-time rendering works
- Right side: strokes are not rendered until manual interaction
- Canvas updates are delayed and only flushed on:
- viewport movement
- touch interaction
- manual redraw trigger
Possible cause (hypothesis)
This looks like a rendering desynchronization issue caused by:
- incomplete viewport invalidation logic
- partial rendering tied to active viewport tiles
- missing dirty-region propagation for offscreen strokes
- delayed flush of stroke buffer until interaction event
- tile-based canvas rendering not syncing with input layer
It appears that strokes are correctly stored in the document model but are not pushed to the render pipeline until a manual repaint is triggered.
Additional notes
- Fully reproducible on Onyx BOOX Note Air 1
- Latest version of Notate
- Issue persists across sessions
Evidence
A screen recording demonstrating the issue.
https://www.youtube.com/shorts/TrEi8fu2qq8
The video shows:
- strokes missing on right side during drawing
- sudden appearance after viewport interaction
Environment
Description
When drawing on the infinite canvas, strokes on the right side of the canvas are not rendered in real time, even though they are correctly captured.
The issue behaves inconsistently depending on viewport position:
The missing strokes only appear after a viewport interaction, such as:
After this interaction, all previously invisible strokes suddenly appear.
Steps to reproduce
➡️ Result:
➡️ Result:
Expected behavior
Actual behavior
Possible cause (hypothesis)
This looks like a rendering desynchronization issue caused by:
It appears that strokes are correctly stored in the document model but are not pushed to the render pipeline until a manual repaint is triggered.
Additional notes
Evidence
A screen recording demonstrating the issue.
https://www.youtube.com/shorts/TrEi8fu2qq8
The video shows: