Official app, branded app or your own
What the official app does
The Moodle app is a free client for iOS and Android maintained by Moodle. Once mobile web services are enabled on your site, learners can browse courses, use most core activities, download content for offline use, receive push notifications and message each other. It follows your site's roles and enrolments automatically, because it is driven by the same web services. For many organizations, configuring it well is the whole project: choosing the login method, removing menu items you do not use, testing every course type on a phone, and setting up notifications.
Where it stops
The app only knows about plugins that tell it how to behave on mobile. A custom activity without mobile support opens in a browser view or not at all. We fix that inside the plugin by declaring mobile handlers and returning templates the app can render, with offline behavior where it makes sense. Branding is the other limit. The site theme does not carry over, and the app is listed in the stores under Moodle's name. Moodle offers a branded app service for organizations that want their own listing and look, and we can help you weigh that against the alternative.
When a custom app is worth it
Build your own when the app has to do things the Moodle app is not designed for: a radically simpler experience for one audience, content from several systems, a purchase flow, device features such as scanning or location, or a look that is fully yours. We build these in Flutter, which gives one codebase for both platforms. The app authenticates against Moodle, stores a token securely on the device and calls web service functions for courses, content, grades and completion. Core functions are fine-grained, so we usually add a few custom ones that return a whole screen of data in one request, as described under Moodle API development.
Offline is a design decision
Offline support is easy to promise and hard to do well. Files and pages are simple to cache. Quizzes, SCORM packages and anything with attempts need rules: what is stored locally, when it is submitted, and what happens if the learner also did the activity on the web. We decide per activity type which ones work offline, and say plainly which do not.
Push, stores and upkeep
Push notifications need a messaging service for each platform and a link to Moodle's message outputs, so that a forum reply or a due date triggers the right alert. Store publishing brings its own work: developer accounts in your organization's name, privacy declarations, screenshots, review feedback. After launch, an app needs updates when the operating systems, the stores or your Moodle release change. Plan for mobile app maintenance from the start.