Flexible UI components

for scheduling, planning and resource management

0%

Built for growth companies to mature organizations who are looking for solid tools instead of opinionated libraries, that play well with their stack

Get started for free with full functionality to build out your proof of concept.
Testimonial logoTestimonial logoTestimonial logoTestimonial logoTestimonial logoTestimonial logoTestimonial logoTestimonial logo

Excellent tooling for your team

We believe that developers deserve great tools that help them build the experience they envisioned.

We don’t ship opinionated solutions, we rather give you the things you need to build it how you want it to be.

Extend beyond your immediate requirements

What happens in the future? Don’t get blocked. Coming from the nature of how we build our products, Mobiscroll comes with super flexibility.

Handle situations appropriately and let the library grow with you.

Backed by dependable support, docs and guides

All of this is backed by a great technical support team that are developers, just like you, guiding you through chat and a ticketing system.

Along with 100s of downloadable examples in the framework of your choice, great documentation and guides.

Compliance & accessibility

Stay compliant and provide accessible UI through mobile and desktop experiences.

With built-in RTL support, keyboard navigation, actions, WAI-ARIA support for screen readers and WCAG 2.2 compliance.

Trusted by amazing internal and product teams

HR planning
Scheduling
Resource Management

Many HR tools rely on solid scheduling and calendaring mechanics. Both product companies and internal teams use Mobiscroll to build their UI from rota planing and staffing to leave and employee event calendars.

Use the timeline for managing tens, hundreds or event thousands of resources and the scheduler for having a Google calendar-like experience.

Why Mobiscroll?

Because building things internally is time-consuming, needs ongoing maintenance and takes unnecessary effort.

In comparison to other vendors, developers using Mobiscroll can get much closer to the outcome their product teams envisioned.

Scheduling... Many HR tools rely on solid scheduling and calendaring mechanics. Both product companies and internal teams use Mobiscroll to build their UI from rota planing and staffing to leave and employee event calendars.
Resource management... Many HR tools rely on solid scheduling and calendaring mechanics. Both product companies and internal teams use Mobiscroll to build their UI from rota planing and staffing to leave and employee event calendars.
Illustration about Rota planning, absence & leave, staffing, shift planning, timesheet and crew management.
Rota planning
Absence & leave
Staffing
Shift planning
Crew management
Timesheet
The robust tools
your product team will love and your developers will love working with

Scheduler for day, week, month or any custom range for one or more resources

Build responsive scheduling, appointment management for single or multiple resources, with deep view configuration and customization through templating and custom renderers.

Fine-grain control over drag & drop, validation along with external event drag, ship great scheduling experiences.

How is the Scheduler made?

To get this example up and running we have:
  • Configured the view from 8AM to 5PM
    I's very simple to set a recurring start and end time for the day, you can do the same with the days within the week.
  • Overriden the default colors and font weights in CSS
    You can easily customize the look and feel of the scheduler by adjusting colors, font weights, and other styles using CSS, ensuring it matches your design requirements.
  • Have implemented custom templates
    Custom templates allow you to fully control how events, headers, and time slots are displayed, making it possible to create a highly personalized scheduling experience.
  • Used the lifecycle events to handle the various interactions
    By leveraging lifecycle events, you can react to user interactions such as event clicks, drags, and drops, enabling dynamic updates and seamless user experiences.
// configured the view (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// configured the view (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// configured the view (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// overriden colors
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// custom templates (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// lifecycle (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}

Responsive event calendar with mobile & desktop mode

Use the calendar view to display events for one or more resources and from multiple sources as labels or lists. Month view by default, but can be configured as single or multiple week view, multi-month view, quarter view or year view.

Flexible in styling and customizable through theming and custom renderers.

How is the Calendar made?

To get this example up and running we have:
  • Configured the view from 8AM to 5PM
    I's very simple to set a recurring start and end time for the day, you can do the same with the days within the week.
  • Overriden the default colors and font weights in CSS
    You can easily customize the look and feel of the scheduler by adjusting colors, font weights, and other styles using CSS, ensuring it matches your design requirements.
  • Have implemented custom templates
    Custom templates allow you to fully control how events, headers, and time slots are displayed, making it possible to create a highly personalized scheduling experience.
  • Used the lifecycle events to handle the various interactions
    By leveraging lifecycle events, you can react to user interactions such as event clicks, drags, and drops, enabling dynamic updates and seamless user experiences.
// configured the view (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// configured the view (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// configured the view (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// overriden colors
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// custom templates (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// lifecycle (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}

Timeline

Use the calendar view to display events for one or more resources and from multiple sources as labels or lists. Month view by default, but can be configured as single or multiple week view, multi-month view, quarter view or year view.

Flexible in styling and customizable through theming and custom renderers.

How is the Timeline made?

To get this example up and running we have:
  • Configured the view from 8AM to 5PM
    I's very simple to set a recurring start and end time for the day, you can do the same with the days within the week.
  • Overriden the default colors and font weights in CSS
    You can easily customize the look and feel of the scheduler by adjusting colors, font weights, and other styles using CSS, ensuring it matches your design requirements.
  • Have implemented custom templates
    Custom templates allow you to fully control how events, headers, and time slots are displayed, making it possible to create a highly personalized scheduling experience.
  • Used the lifecycle events to handle the various interactions
    By leveraging lifecycle events, you can react to user interactions such as event clicks, drags, and drops, enabling dynamic updates and seamless user experiences.
// configured the view (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// configured the view (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// configured the view (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// overriden colors
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// custom templates (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// lifecycle (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}

Agenda

Use the calendar view to display events for one or more resources and from multiple sources as labels or lists. Month view by default, but can be configured as single or multiple week view, multi-month view, quarter view or year view.

Flexible in styling and customizable through theming and custom renderers.

How is the Agenda made?

To get this example up and running we have:
  • Configured the view from 8AM to 5PM
    I's very simple to set a recurring start and end time for the day, you can do the same with the days within the week.
  • Overriden the default colors and font weights in CSS
    You can easily customize the look and feel of the scheduler by adjusting colors, font weights, and other styles using CSS, ensuring it matches your design requirements.
  • Have implemented custom templates
    Custom templates allow you to fully control how events, headers, and time slots are displayed, making it possible to create a highly personalized scheduling experience.
  • Used the lifecycle events to handle the various interactions
    By leveraging lifecycle events, you can react to user interactions such as event clicks, drags, and drops, enabling dynamic updates and seamless user experiences.
// configured the view (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// configured the view (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// configured the view (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// configured the view (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (js)
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors (jq)
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// overriden colors
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// overriden colors
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// overriden colors (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// custom templates (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// custom templates (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// custom templates (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle
mobisroll.eventcalendar('#demo', {
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle
$('#demo').mobiscroll().eventcalendar({
  view: {
    schedule: { type: 'week' }
  }
})
// lifecycle (ng)
<mbsc-eventcalendar [data]="myEvents"></mbsc-eventcalendar>
// lifecycle (react)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
// lifecycle (vue)
function (props)  {
  return <>
    <Eventcalendar />
  </>
}
Mobiscroll comes in multiple flavors
for multiple frameworks, with real components, not just wrappers

For plain JavaScript

Use it wherever JavaScript runs, framework agnostic components for the modern developers.

Get started with JavaScript examples ->

For Angular

Use it with Angular, Ionic, Remix or any development framework based on Angular.

Get started with Angular examples ->

For React

Use it with React, Ionic, Next.js or any development framework based on React.

Get started with React examples ->

For Vue

Use it with Vue, Ionic, Nuxt or any development framework based on Vue.

Get started with Vue examples ->

For jQuery

Use it with jQuery-based projects to enhance interactivity, simplify DOM manipulation and improve cross-browser compatibility.

Get started with jQuery examples ->
Companies who value the developer experience choose Mobiscroll

Built to scale

Standing on a solid foundation, our toolset based approach doesn’t outgrow you. We build to face new requirements.

Why development loves it

Flexibility on the output

The reality is that every product is a bit different. We focus on flexibility rather than opinionated and stiff solutions.

Why product loves it

Peace of mind

With a great track record, you can count on us. Future-proof your team and let us help you check all the boxes.

Why leadership loves it
Want to understand if Mobiscroll is for you, got questions or need consultation?
Book a Call

Duplicate Session

You have signed in on a different machine. To keep everything in sync, you have been signed out of this session.

If you need to invite team members, manage seats and accounts you can do it from the licenses page.

Duplicate Session

We noticed you are logged in on a different machine and have closed your old session.

If you need to invite team members, manage seats and accounts you can do it from the licenses page.