Collaborative Whiteboard in mobile app

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Collaborative Whiteboard in mobile app
Complex
from 1 week to 3 months
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing Whiteboard (Collaborative Board) in Mobile Applications

Collaborative whiteboard — infinite canvas with objects: lines, shapes, stickers, images, text. Multiple users draw simultaneously, see each other's actions in real time. On mobile adds: finger input, pinch-to-zoom, Apple Pencil / Stylus with pressure sensitivity.

Most complex part here — not network level but canvas rendering and gesture handling under load.

Data Architecture: Object Model of Canvas

Each board object — distributed state document. Good fit: Y.Map where key is object UUID, value is its properties (type, coordinates, size, color, z-index). For composite objects (path from points) — Y.Array of points inside object.

const yobjects = ydoc.getMap('objects');

// Add arrow
yobjects.set(uuid(), {
  type: 'arrow',
  x1: 100, y1: 200,
  x2: 400, y2: 350,
  strokeColor: '#1a1a2e',
  strokeWidth: 2
});

Concurrent move of one object by two users: Last-Write-Wins — acceptable for coordinates. Concurrent delete by one and change by other — standard CRDT problem: change operation applies to already deleted object and gets lost. Need tombstone logic or temporary "ghost" object storage.

Freehand Drawing: Stream Points

Free drawing generates 60–120 points per second (on 60Hz display). Sending each point via WebSocket — excessive. Optimization:

  1. Buffering — send batch points every 50ms.
  2. Simplification algorithm — Douglas-Peucker or Ramer-Douglas-Peucker removes redundant points with configurable epsilon. Curve from 500 points compresses to 30–50 without visible quality loss.
  3. Stroke prediction — on iOS with Apple Pencil UITouch.predictedTouches predict next points before actual arrival, reducing perceived latency.

Stroke as CRDT object: start with temporary Y.Array points in Awareness (not in document — don't need full history of every point). On completion (touchEnd / pointerUp) — fix simplified path in document as single object.

Canvas Rendering on Mobile

React Native: react-native-skia (Skia graphics engine) — best option for performant 2D rendering. @shopify/react-native-skia supports Path, Paint, Text, Image. Render on GPU via RN's new architecture. react-native-svg — simpler but slower for animated objects.

Flutter: CustomPainter with Canvas API — native path. flutter_drawing_board — ready package with basic tools. For production: custom CustomPainter with dirty-region optimization (redraw only changed region via Canvas.clipRect).

iOS Native: Metal + MetalKit for max performance, UIBezierPath + CALayer for medium complexity. Apple PencilKit — ready component with Pencil support but limited customization.

Android Native: Canvas API with Path for simple cases, OpenGL ES / Vulkan via GLSurfaceView for complex.

Infinite Canvas Virtualization

With 1000+ objects, rendering entire canvas each frame — problem. Need spatial index (R-tree or simple grid-based) to find objects in current viewport. Render only visible objects + small buffer beyond viewport edges.

rbush — JavaScript R-tree library, works in React Native. On panZoom determine new viewport, query objects in that bounding box, render only them.

Sync: What to Send and When

Cursor/viewport awareness (user position on canvas) — via Y.js Awareness, not document, 10fps sufficient.

Objects in creation — two modes:

  • Temporary preview via Awareness (others see unfixed object).
  • Only final object after touchEnd (simpler but no real-time drawing preview).

First mode gives better UX, second — less traffic and complexity.

Assessment

Basic whiteboard (shapes, text, arrows, sync) on Flutter or React Native — 10–16 weeks. With brush drawing, pressure sensitivity, smart path simplification and large canvas virtualization — 20–32 weeks.