Mobiscroll splits into two products, and only one of them is in the open source repository
Scheduling, event calendar and resource management UI components, and Mobiscroll Connect, the calendar connectivity layer for scheduling products. Index for both; holds the open-source form components and the changelogs.
At a glance
- What is it?
- The acidb/mobiscroll repository is an index for two commercial products, not their source. What ships under Apache-2.0 to public npm is a set of form, notification and popup components per framework.
- Who is it for?
- Take the Apache-2.0 lite packages when you want Mobiscroll's form controls, toasts and popup shells and can live with their dependency footprint and the commercial half of the design system sitting beside them. Walk away if the component you actually need is the Scheduler, Event Calendar, Timeline or Agenda, because those install through the Mobiscroll CLI under a licence and none of their source is in this repository.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A repository that mostly indexes other things
The single most important fact about acidb/mobiscroll is what it is not. The root package.json is marked "private": true, it carries no published entry, and its description calls itself an index. Changelog.md covers both products in separate sections because they version independently, and each entry links out rather than restating the notes. The actual source under src, packages and scripts builds the five framework packages, not the scheduling widgets that carry the product's name.
So a developer arriving with the Scheduler in mind has picked the wrong repository. The scheduling components live at a commercial distribution channel, and the README says so directly: they need a trial or a licence and install through the Mobiscroll CLI, with the installation page linked at mobiscroll.com/docs/react/getting-started/installation. Mobiscroll Connect is indexed here too, and no Connect source lives in this repository at all; its home is a separate SDK monorepo covering Node.js, Python, PHP, .NET, Java and Go plus direct REST.
Read the repository as a signpost. It is worth reading precisely because it states the boundary clearly instead of hiding the commercial half behind an open source front door.
What actually lands in your node_modules
The open-source half publishes as the @mobiscroll/{framework}-lite packages on public npm, and the install is plain npm with no CLI step, no registry configuration and no licence key:
npm install @mobiscroll/react-lite # React
npm install @mobiscroll/angular-lite # Angular
npm install @mobiscroll/vue-lite # Vue
npm install @mobiscroll/javascript-lite # plain JavaScript
npm install @mobiscroll/jquery-lite # jQueryThe component inventory is narrow. Forms covers Button, Checkbox, Dropdown, Input, Radio button, Segmented, Stepper, Switch and Textarea. Notifications covers Alert, Confirm, Prompt, Snackbar and Toast. Popup is one component in four display modes, a modal dialog, an anchored popover, a bottom sheet and inline, each with a focus trap, the ARIA dialog role and keyboard dismissal. That last detail is the reason to care about the popup group specifically: focus trapping and keyboard dismissal are the two things hand-rolled overlays usually get wrong, and here they are stated as part of the component contract rather than left to the consumer.
Everything scheduled, dated or ranged is on the other side of the wall: Event Calendar, Scheduler, Timeline and Agenda, the Calendar, Date & Time and Range pickers, and Select.
Five builds, four rendering strategies, Preact hidden
The architectural commitment is that each framework package is native rather than a wrapper around one shared widget. React uses React's rendering and hooks, Vue uses Vue's reactivity and renderer, Angular uses change detection with @Input and @Output bindings. The plain JavaScript and jQuery builds have no framework internals to borrow, so they bundle Preact internally for rendering. The README is explicit that Preact is an implementation detail and is never exposed in the public API, which is the right call for a jQuery codebase that does not want a framework dependency leaking into its globals.
The build scripts make the split concrete. build-react, build-vue, build-javascript and build-jquery each call node ./scripts/build.js with a framework argument, while Angular has its own build-angular.js, presumably because it needs a different compilation path. build-npm chains all five in order, and the publish script walks packages/react, packages/vue, packages/javascript, packages/jquery and packages/angular in that sequence. The rollup toolchain carries babel, node-resolve, replace, terser, postcss and autoprefixer.
One practical consequence: adopting the lite components in React means also importing the stylesheet, which the examples show as a separate path into the published dist.
A first form in React, and what to look for
The React example wires an Input, a Button and a Toast together with local state, and the CSS import is part of the component usage rather than an optional extra:
import { useState } from 'react';
import { Input, Button, Toast } from '@mobiscroll/react-lite';
import '@mobiscroll/react-lite/dist/css/mobiscroll.min.css';
export default function ContactForm() {
const [showToast, setShowToast] = useState(false);
return (
<>
<Input label="Email" type="email" />
<Button onClick={() => setShowToast(true)}>Save</Button>
<Toast isOpen={showToast} message="Saved" onClose={() => setShowToast(false)} />
</>
);
}What you should see is a controlled toast that the component dismisses by calling onClose, so the parent still owns visibility. The Angular version reaches the same outcome through injection instead of state, importing MbscModule and the Notifications service and calling notify.toast with a message. The Vue version uses a ref bound through @click and @close with kebab-case props such as :is-open.
For the plain JavaScript and jQuery builds the surface is attribute driven, with `mbsc-input` and `mbsc-button` attributes on ordinary elements and either mobiscroll.toast or a jQuery handler to show the notification. The design intent stated in the README is that a form built with the lite components sits next to a Mobiscroll scheduler without looking bolted on, and that claim is only visible in a project that also holds a commercial licence.
Where the lite packages are the wrong choice
Three limits are visible from the repository itself. The first is scope: if the product requirement is a resource timeline or a shift rota view, none of the nine form controls get you there and the commercial licence is unavoidable. The second is that the value proposition of the design system is partly borrowed. The README sells the lite components on matching the rest of Mobiscroll, which means the strongest case for them is a team already paying for the other half, and a weaker case for a team that just wants a good Input and Toast.
The third is quieter. Because Connect has no source here and the scheduler has none either, the repository is an index and changelog surface alongside the lite component source. If you are evaluating the open-source components, the CHANGELOG entries describe the whole product including components you cannot install, which makes reading upgrade notes a slower exercise than it would be in a repository that matches its package contents. The README does not document a rollback procedure, and it does not state a minimum browser or Node version for the lite packages.
MCP server, agent skills and a second changelog feed
The tooling section points at a CLI that installs and configures Mobiscroll in a project, and at AI tooling that includes an MCP server hosted at mcp.mobiscroll.com, agent skills for Claude Code and Codex, and rule files for Cursor and GitHub Copilot. None of that ships in the lite packages, and the documentation for it lives under the javascript guides. It is worth separating clearly: the open-source install needs none of it, while a team installing the commercial scheduling components goes through the CLI path the README points at.
Versioning tells a similar story. package.json sits at 6.1.4, and the recent releases v6.1.3 on 2026-09-17 and v6.1.4 on 2026-09-23 land in the same v6 line as the commercial packages. A v4.10.9 release from 2021-05-17 shows the older major line is still named in history, which is a reminder to check which line a given install is on before copying configuration from an older tutorial. The last push was on 2026-10-13 and the repository is not archived.
Licence split and what it means for a legal review
Two licence identities coexist. The lite packages and the source in this repository are Apache-2.0, with a LICENSE file and a NOTICE file at the repository root. The scheduling components are commercial and require a trial or a licence. This is not legal advice, but the practical read for a reviewer is that a self audit has to be done per package rather than per vendor: the Apache-2.0 obligations attach to the code you actually vendored, and they say nothing about the commercial terms of components installed through the CLI.
Mobiscroll Connect is a third question again. It is a backend integration for Google Calendar, Microsoft Outlook, Apple Calendar and CalDAV, with a unified Calendar API, normalized calendar data, OAuth and consent flows, sync and webhooks, and it works with your own UI rather than requiring Mobiscroll UI. The README lists no licence for Connect itself, and its SDKs live in the separate mobiscroll-connect-sdks repository. If calendar connectivity is the actual requirement, the licence question has to be settled against that repository and the Connect documentation rather than against the Apache-2.0 file sitting here.
Editorial conclusion
Take the Apache-2.0 lite packages when you want Mobiscroll's form controls, toasts and popup shells and can live with their dependency footprint and the commercial half of the design system sitting beside them. Walk away if the component you actually need is the Scheduler, Event Calendar, Timeline or Agenda, because those install through the Mobiscroll CLI under a licence and none of their source is in this repository. Before committing, open the package list under the open-source heading and confirm the specific component you need is in the Forms, Notifications or Popup group.
Frequently asked questions
Is the Mobiscroll Scheduler open source?
No. The Scheduler, Event Calendar, Timeline and Agenda are commercial components distributed separately, and they install through the Mobiscroll CLI with a trial or a licence. Only the form, notification and popup components in this repository are Apache-2.0.
How do I install the Mobiscroll React components?
Run `npm install @mobiscroll/react-lite` and import the stylesheet from `@mobiscroll/react-lite/dist/css/mobiscroll.min.css`. There is no CLI step, no registry configuration and no licence key for the lite packages.
Does Mobiscroll require Preact as a dependency?
The plain JavaScript and jQuery builds bundle Preact internally to handle rendering, while React, Angular and Vue packages use their own framework internals. The README states that Preact is an implementation detail and is never exposed in the public API.
Where is the source code for Mobiscroll Connect?
Not in this repository. The SDKs for Node.js, Python, PHP, .NET, Java and Go, plus direct REST access, live in the acidb/mobiscroll-connect-sdks monorepo, with a runnable example in acidb/mobiscroll-connect-demo.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/acidb-mobiscroll)Was this useful?