React Scheduler with Remix
This tutorial shows how to create a simple Remix application and render a DHTMLX React Scheduler on a page.
The complete source code is available on GitHub.
Prerequisites
- Node.js (LTS recommended)
- React + TypeScript basics
- Remix / React Router fundamentals. If you need a refresher, see the Remix docs: https://remix.run/docs
Quick setup - create the project
Since Remix now ships as part of React Router v7, the recommended way to scaffold a project is:
npx create-react-router@latest
When prompted, choose:
- Project name: react-scheduler-remix-quick-start
- Use the default template (React, TypeScript, TailwindCSS, SSR)
- Install dependencies: Yes
After installation, navigate into the project directory:
cd react-scheduler-remix-quick-start
Installing React Scheduler
Install React Scheduler as described in the React Scheduler installation guide.
In this tutorial we use the evaluation package:
npm install @dhtmlx/trial-react-scheduler
or
yarn add @dhtmlx/trial-react-scheduler
If you already use the Professional package, replace @dhtmlx/trial-react-scheduler with @dhx/react-scheduler in the commands and imports.
Preparing demo data
Create a data/ folder at the project root. Inside it, add a demoData.ts file containing the initial data for the Scheduler:
import type { Event } from '@dhtmlx/trial-react-scheduler';
export const events: Event[] = [
{
id: 1,
classname: 'blue',
start_date: new Date('2025-12-08T02:00:00Z'),
end_date: new Date('2025-12-08T10:20:00Z'),
text: 'Product Strategy Hike',
},
{
id: 2,
classname: 'blue',
start_date: new Date('2025-12-08T12:00:00Z'),
end_date: new Date('2025-12-08T16:00:00Z'),
text: 'Agile Meditation and Release',
},
{
id: 3,
classname: 'violet',
start_date: new Date('2025-12-09T06:00:00Z'),
end_date: new Date('2025-12-09T11:00:00Z'),
text: 'Tranquil Tea Time',
},
{
id: 4,
classname: 'green',
start_date: new Date('2025-12-09T11:30:00Z'),
end_date: new Date('2025-12-09T19:00:00Z'),
text: 'Sprint Review and Retreat',
},
{
id: 5,
classname: 'yellow',
start_date: new Date('2025-12-10T06:00:00Z'),
end_date: new Date('2025-12-10T08:00:00Z'),
text: 'Stakeholder Sunset Yoga Session',
},
];
The companion demo includes additional events for a richer visual.