🔥
ExclusiveAn exclusive new experience — React Native support is on its way to Planby!
React Scheduler forLarge Datasets
Planby is a high-performance React scheduler and timeline component with virtualization for large datasets (10k+ events).
Virtual rendering, windowing, minimal DOM footprint, and smooth 60fps scroll — built for production apps that can't afford to lag.
npm install @nessprim/planbySee 10k Events Demo- 10,000+
- Events rendered
- without performance loss
- 60fps
- Scroll performance
- even with dense data
- ~45KB
- Bundle size
- gzipped
- <50
- DOM nodes
- visible at any time
Virtual Rendering
Planby uses virtual rendering to paint only the events that are currently visible in the viewport. Events outside the view are not in the DOM at all — they exist only as data.
This means loading 10,000 events looks identical to loading 100 from the browser's perspective. The scheduler calculates which items intersect the current viewport rectangle and renders only those.
- Events outside viewport are never mounted
- Instant initial render regardless of dataset size
- No progressive loading or pagination needed
- Memory footprint stays constant
THE RESULT
10,000 events loaded
~50 DOM nodes
1,000 events loaded
~50 DOM nodes
100 events loaded
~50 DOM nodes
DOM node count is determined by viewport size, not dataset size.
Windowing
Windowing (also called list virtualization) means the scheduler only renders the rows and columns that fit in the current window — the "window" of visibility.
Both horizontal (time axis) and vertical (channels/resources axis) windowing are applied simultaneously. Scrolling in any direction swaps old items out and new items in — all without the user noticing any change.
- Bidirectional windowing: horizontal & vertical
- Overscan buffer keeps scroll feel instant
- Works with dynamic row heights
- No layout shifts during scroll
10,000 nodes
Without windowing
All events in DOM
~40 nodes
With windowing
Only visible rows
800ms+
Initial render
Without windowing
<16ms
Initial render
With windowing
Minimal DOM Footprint
A large DOM is the most common cause of slow React apps. Layout thrashing, style recalculations, and garbage collection overhead grow linearly with DOM size.
Planby keeps its DOM footprint constant regardless of how many events you load. The number of rendered nodes depends on viewport size, not dataset size. This makes it predictable and profiler-friendly.
DOM node count comparison (1000 events loaded):
FullCalendar
8,000+
React Big Calendar
5,000+
Planby
~50
Why DOM footprint matters
- Each DOM node consumes memory — fewer nodes = less GC pressure
- Browser layout is O(n) with DOM size — small DOM = instant reflow
- React reconciliation is faster with fewer fiber nodes to diff
- DevTools, accessibility tree, and event bubbling all benefit
- Mobile browsers have 3–5x less memory headroom
Smooth Scroll Performance
Smooth scrolling in a data-heavy scheduler is a hard engineering problem. Planby solves it by keeping the critical rendering path as short as possible.
Scroll events trigger a position recalculation, which updates only the items that enter or leave the viewport. React sees a small, surgical diff — not a full re-render of thousands of components.
16ms
Frame budget
60fps target
~2ms
Scroll handler
typical execution
~4ms
React diff
small item swap
~8ms
Paint time
remaining budget
Scroll optimizations built-in
- Passive scroll listeners — never blocks main thread
- Position calculation happens outside React render cycle
- CSS transforms for item positioning — no layout thrashing
- Overscan renders a small buffer outside viewport for seamless feel
- Debounced heavy operations (search, filtering) separate from scroll
- will-change: transform hint for GPU compositing
Works with real-time updates too
WebSocket streams, live data, and frequent state updates don't degrade scroll performance. React only re-renders the changed items, not the entire grid.
10k Events Demo
The live demo below uses Planby's scheduler with virtualization enabled. Scroll horizontally and vertically — the frame rate stays at 60fps because only visible events are in the DOM at any time.
Scheduler
Your scheduler with drag and drop, overlapping events, grid layout, and more.
Timezones
Drag and Drop
Resize elements
Overlap events
Grid layout / events
ℹ️ Note: Drag and drop “multi-rows” with “layer” overlap mode is still in test mode.
How Planby Handles Large Datasets — Technical Summary
Data layer
- Events are stored as flat arrays — no nested tree structures
- Position calculation (x, y, width) done once on mount or data change
- Sorted by start time for O(log n) binary search during viewport calc
- Timezone offsets pre-applied — no runtime math during scroll
Render layer
- Absolute positioning for all items — no flexbox/grid reflow cost
- React.memo on each event component — no wasted re-renders
- Stable item keys prevent React from unmounting/remounting
- Canvas fallback available for extreme density (50k+ events)
Your Perfect Plan Awaits
Built for React and React Native teams. Start with what you need. Grow when you're ready.
Get exclusive access to Planby PRO features
Solo 🥳
$
19
/ month
- Ready-to-use code examples
- 1 developer license
- No team collaboration
- 🎁5 days free trial
- Commercial
PRO
🚀$
25
/ month
- Ready-to-use code examples
- Team access
- Portal Planby access
- PRO Documentation
- Updates included
- 🎁7 days free trial
- Commercial
- License key
Custom 👨💻
Enterprise
- Everything included in PRO
- Enterprise exclusive features
- One-on-one onboarding
- Expert Consultation
- Premium support
- Commercial
Perpetual licenses for your team or company.
Solo 🥳
$
400
- Ready-to-use code examples
- 1 developer license
- No team collaboration
- Commercial
PRO
🚀$
500
- Ready-to-use code examples
- Team access
- Portal Planby access
- PRO Documentation
- Commercial
- License key
- 1 year update license included
Custom 👨💻
Enterprise
- Everything included in PRO
- Enterprise exclusive features 🚀
- One-on-one onboarding
- Expert Consultation
- Premium support
- Commercial
Build Your High-Performance Scheduler Today
Start free. No performance compromises.