Moodle 4.3
You are encouraged to upgrade to a supported version of Moodle.
Release date: 9 October 2023
Here is the full list of fixed issues in 4.3.0.
If you are upgrading from a previous version, please see Upgrading in the user docs.
Server requirements
These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.
- Moodle upgrade: Moodle 3.11.8 or later.
- PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.2.x is supported too. See PHP for details.
- PHP extension sodium is required. See Environment - PHP extension sodium.
- PHP setting max_input_vars must be >= 5000. For further details, see Environment - max input vars.
- PHP variants: Only 64-bit versions of PHP are supported. Note: Changed since 4.1.
Database requirements
Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.
| Database | Minimum version | Recommended |
|---|---|---|
| PostgreSQL | 13 (increased since Moodle 4.1) | Latest |
| MySQL | 8.0 (increased since Moodle 4.1) | Latest |
| MariaDB | 10.6.7 (increased since Moodle 4.1) | Latest |
| Microsoft SQL Server | 2017 | Latest |
| Oracle Database | 19 | Latest |
Note that, since Moodle 4.3, the maximum length for the database prefix ($CFG->prefix) is 10 characters. Installation or upgrade won't be possible with longer prefixes.
Client requirements
Browser support
Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:
Desktop:
- Chrome
- Firefox
- Safari
- Edge
Mobile:
- MobileSafari
- Google Chrome
For the best experience and optimum security, we recommend that you keep your browser up to date.
Major UX improvements
Gradebook
- MDL-77638 - Create a modal form for basic addition of grade categories in Gradebook setup
- MDL-78217 - Improve the overriding of weights in the Gradebook setup
- MDL-77447 - Make the grade item status indicators consistent across the Gradebook reports
- MDL-77639 - Create a modal form for basic addition of outcomes in Gradebook setup
- MDL-77035 - Improve the UI related to the bulk move functionality in Gradebook setup
- MDL-77637 - Create a modal form for basic addition of grade item in Gradebook setup
- MDL-78100 - Add an option to clear all applied filters in the grader report
Activity cards redesign
- MDL-78283 - Add radio dropdown interaction to group mode icon
- MDL-78279 - Create new details dropdown components
- MDL-78282 - Add radio dropdown interaction to availability badge
- MDL-78280 - Add details dropdown to completion criteria badge
- MDL-78288 - Add access restriction quickform direct link button to restrictions details dropdown
- MDL-78200 - Add the group mode indicator to the activity card
- MDL-78954 - Improve action menu subpanel aesthetics and effects
- MDL-78826 - Improve accessibility of keyboard control for the generic dropdowns
- MDL-78607 - Improve section and activity settings form to load access restrictions
- MDL-78665 - Create a generic submenu for status selection
- MDL-78286 - Add completion quickform direct link button to completion details dropdown
- MDL-78207 - Implement activity card information badge integration
- MDL-78203 - Add group mode option to activity actions submenu
- MDL-78201 - Create the groupmode state actions
- MDL-78199 - Improve activity card styling
- MDL-78744 - Refactor 'activity_information' output class
- MDL-78289 - Improve the student completion criteria display format
- MDL-78204 - Add "show more" / "show less" options for access restrictions on course page
- MDL-78291 - Modify the availability activity action menu to open in a subpanel
Other major features
Messaging phase 1 - Integrate chat services
- MDL-77576 - Matrix integration MVP - Matrix is available for use in courses
- MDL-78619 - Add a custom link communication provider
- MDL-76704 - Admin settings to control Matrix room creation for Courses
- MDL-77357 - Create dynamic form fields feature for communication plugins
- MDL-77252 - Add banners to indicate room creation status to teachers
- MDL-78129 - Allow teachers, managers and admins to moderate their courses' Matrix rooms
- MDL-77917 - Allow versioned APIs for clients in Matrix provider
LTI external tools - Improve configuration and management in courses
- MDL-78575 - Centralised page to view and manage preconfigured LTI external tools in a course
- MDL-78909 - Enable setting whether a preconfigured tool appears in the activity chooser in a course
- MDL-78916 - Simplify the creation of an LTI external tool activity in a course
- MDL-78576 - Improve deletion of course preconfigured LTI tools
Multi-factor Authentication
- MDL-78509 - MFA in core
- MDL-78534 - Improve 2nd factor verify flow
- MDL-79051 - Improve email template
MoodleNet integration - Phase 2
- MDL-75318 - Allow teachers to share courses to MoodleNet (all activities)
- MDL-78267 - Add ability for teachers to customise courses shared to MoodleNet
- MDL-75502 - Implement share progress page for content shared to MoodleNet
- MDL-77296 - Record MoodleNet share progress data in a consumable format
Default site completion criteria settings
- MDL-78528 - Redesign the Default activity completion page
- MDL-78517 - Homogenise the course completion conditions
- MDL-78531 - Create a new 'Courses > Default settings' section in Site administration
- MDL-78530 - Consider the default site completion settings during activity creation
- MDL-78527 - Improve the completion conditions form
- MDL-78633 - Use tertiary navigation selector in Course completion settings
- MDL-79093 - Order activities by display name in Default activity completion
TinyMCE 6
- MDL-75268 - Create TinyMCE Premium plugins integration
- MDL-78613 - Add source code formatting and styling
- MDL-75963 - Add "Code highlighter" filter to display coding style properly
- MDL-77979 - TinyMCE tool for preventing auto-linking
- MDL-79066 - Add fullscreen button
BigBlueButton
- MDL-76710 - Add support for BigBlueButton Subplugins
- MDL-78062 - Add backup support for BigBlueButton Subplugins
- MDL-78960 - BigBlueButton Subplugin : allow action_url_addons to know about the instance
Quiz and questions
- MDL-76629 - Add sticky student name column in Quiz results table
- MDL-74054 - Give teachers more flexibility to customise their own view of the question bank
- MDL-72321 - Better searching/filtering in the question bank, so more flexible randomisation in quizzes
- MDL-77218 - Quiz/questions preview: explanatory text that preview settings only affect the preview
- MDL-77564 - Quiz display options: make it possible to completely hide the grade information
- MDL-77127 - Allow students to hide the timer in a timed quiz
- MDL-77745 - Anywhere a teacher views questions, display version information
- MDL-78823 - Implement qbank plugin enabled/disabled events
- MDL-77872 - Increase the width of Quiz editing page to improve usability
Report builder
- MDL-78117 - Create a custom report filter on context level
- MDL-76471 - Create a report builder filter for "enrolment name"
- MDL-76900 - Separate course participant enrol/role elements to new report entities
- MDL-78879 - Support "not" / inversion of category conditions in report builder
- MDL-75810 - Add tag support to badges custom report source
- MDL-76902 - Create "Course categories" custom report source
- MDL-78755 - Course participants report source should show active enrolments by default
- MDL-77700 - Include user in custom report for comments on blog entries
- MDL-76295 - Implement default report sorting in all report sources
- MDL-78835 - Include custom fields in report group/grouping entities
- MDL-78741 - Allow reporting/filtering on context path and parent
- MDL-77532 - Include custom fields in cohort report entity
- MDL-77061 - Add search and filter function in Manage Badges page
- MDL-78532 - Create a new Web Service to retrieve system reports (core_reportbuilder_retrieve_system_report)
- MDL-77067 - Indicate where report audiences are used in schedules
- MDL-77614 - Reports shouldn't allow adding new entities whose name was already added
Content bank and H5P
- MDL-76338 - Enable content to be copied in content bank
- MDL-77667 - Display full course name in content bank for selection
- MDL-74773 - Contentbank: add notification when updating
Accessibility improvements
- MDL-75762 - Retain course page position when pressing back button from activity/resource
- MDL-74869 - Activity icon colours should be SCSS variables so they are easy to override
Usability improvements
- MDL-71212 - Add course kebab menu with 'Collapse all' and 'Expand all' options to course index
- MDL-78474 - Enable users to personalise the name for the resource "Text and media area"
- MDL-76203 - Add support for BDI tag in HTML Purifier
- MDL-74679 - Allow students to send Q&A forum post notifications with no editing-time delay
- MDL-77793 - Remove the legacy theme selector
- MDL-63759 - Replace geoIP lookup with openstreetmap
- MDL-76982 - Add floating previous/next buttons to navigate book chapters
- MDL-73464 - Focus on chapter content when navigating to next/previous Book chapter
- MDL-76270 - Enable/disable group messaging in bulk
- MDL-78184 - Improve user flow for connecting to a open badges backpack
- MDL-44190 - Select current course by default when restoring a single activity from within a course or activity
- MDL-78630 - A notification should be displayed when a user's account is locked/unlocked
- MDL-78579 - Glossary should display number of entries pending approval
- MDL-78503 - Web service tokens: Add a Last Access column at the table view
- MDL-79042 - MathJax: Notify when we finish rendering all the equations
Other Highlights
Functional changes
- MDL-48762 - Restrict access to course based on start and end date
- MDL-40084 - Export related files in database activity export
- MDL-73325 - Enable support for tagging badges
- MDL-45452 - Completion report: Date format for "Excel-compatible format" CSV export updated to use Excel compatible format
- MDL-75802 - A (teacher) user should not be able to un-enrol themselves via bulk un-enrolment
- MDL-67186 - Add custom fields to groups and groupings
- MDL-73839 - Allow using cohort enrolment when uploading course via CSV
- MDL-78972 - Update 'Delete' colour in activity action menu
- MDL-78341 - Improve the progress bar rendering to re-align with bootstrap
- MDL-78175 - Move role renaming settings to a participant -> enrolments page
For administrators
- MDL-69489 - Enable Admins to restrict LTI Tools to specific Categories
- MDL-77443 - Event Monitor: Course and activity name variables for event monitoring rules
- MDL-78993 - Remove the $CFG->svgicons setting
- MDL-67529 - GDPR: Option to filter which courses are included in data requests
- MDL-78312 - User selectors: add an 'exact match only' option
- MDL-77260 - Make it easier to find a specific component in event monitoring tool
- MDL-78468 - Remove the legacy theme settings enabledevicedetection and devicedetectregex
- MDL-79090 - Enable and disable scheduled tasks from the CLI
- MDL-71421 - Move php-sodium recommendation back to requirement
- MDL-78132 - Improve the workflow for creating badge backpack
- MDL-76104 - Add Moodle filters support to user tours
- MDL-78019 - Log every time a user deletes a file from the draft area
Mobile
- MDL-79242 - Improve the UX for first time users of the Android app via the Google Play install referrer API
- MDL-74263 - Enable guest access with password support on the app
Performance
- MDL-46279 - Refactor SCORM database schema to improve performance
- MDL-78212 - Allow MySQL database driver to set MySQL options for MYSQLI_CLIENT_COMPRESS
- MDL-77797 - Make LaTeX files cached public immutable so can be served by a CDN
Security improvements
- MDL-54704 - SSL support for connection to Postgres and MySQL Database
- MDL-67390 - Update password hashing to SHA-512
- MDL-72622 - Support TLS connections for Redis
- MDL-76656 - Web service tokens should be read-once
- MDL-50160 - HTTP only cookies (cookiehttponly) default set to on and UI setting removed
- MDL-67774 - Specify password peppers in config.php
- MDL-53368 - Captcha available on login page
- MDL-69958 - Support /.well-known/password-change requests from password managers
- MDL-78801 - Add Auto logout settings for the mobile app
- MDL-78698 - Deprecate random_bytes_emulate function
- MDL-78571 - Media: Allow Vimeo do not track option
- MDL-62401 - Embed YouTube videos with nocookie extension
- MDL-75372 - Add logging for URLs which fail the cURL security helper blocking
For developers
- MDL-76405 - Prepare Moodle for PHP 8.2
- MDL-74954 - Hooks as replacement for some one-to-many lib.php callbacks based on PSR-14
- MDL-79088 - Create hooks for adding items to the site primary navigation
- MDL-79338 - Add support for hook callback redirection in tests
- MDL-79144 - Allow hooks to define tags
- MDL-77863 - Convert hard coded colours to use variables to make theme customisation easier
- MDL-43195 - New Creative Commons Licenses version 4
- MDL-32278 - Lib: improve print_object to handle recursion, produce prettier output
- MDL-78109 - Cache: Remove harmful requirelockingwrite/requirelockingread options
- MDL-77353 - Create generic core_user functions for generating and displaying user details
- MDL-78316 - Convert IconSystem to ESM
- MDL-74301 - Upgrade Eslint and audit rules
- MDL-78467 - Cache: Improve cache locking API
- MDL-77991 - Create a new generic select and search style element
- MDL-78266 - Break core/templates into smaller, constituent parts
- MDL-78884 - Remove sized files for MIME icons and update them with new SVG files
- MDL-79039 - MathJax: Rewrite old JavaScript to AMD module
- MDL-78934 - Move from (archived) Goutte to BrowserKit
- MDL-67271 - Add missing SVG files for FontAwesome images
- MDL-79031 - Add a JavaScript event for filters to trigger when they have finished rendering
- MDL-78306 - Convert core/modal and remaining legacy uses to ESM
Web service additions and updates
- MDL-74570 - New web service core_badges_get_user_badge
- MDL-74568 - New web service mod_chat_view_sessions
- MDL-78844 - New web service to check access to a system report
- MDL-56020 - New Web Services for global search
Deprecations
- MDL-61165 - Remove support for Legacy cron
- MDL-78561 - Deprecate grade_helper:get_lang_string method
- MDL-77174 - Deprecate moodle-core-notification-confirm
- MDL-79134 - Deprecate MD5 for included user passwords in Backup
- MDL-79313 - Deprecate unused \calendar_top_controls()
- MDL-78328 - Deprecate forum_print_discussion_header
- MDL-71067 - Final deprecation of whitelist properties in coverage_info
- MDL-69530 - Final deprecation of \core_h5p\file_storage::EDITOR_FILEAREA constant
- MDL-78012 - Final deprecation of badge backpack methods from 3.11
- MDL-71183 - Final deprecation of \core_course_renderer::course_section_cm_completion()
- MDL-71196 - Final deprecation of *_get_completion_state() callbacks
- MDL-71331 - Final deprecation of course_section_add_cm_control_nonajax()
- MDL-71494 - Final deprecation of the $extradetails parameter in mod_feedback\output\summary constructor
Component API updates
- admin/tool/behat/upgrade.txt
- admin/tool/dataprivacy/upgrade.txt
- admin/upgrade.txt
- availability/upgrade.txt
- backup/upgrade.txt
- badges/upgrade.txt
- cache/upgrade.txt
- calendar/upgrade.txt
- communication/provider/upgrade.txt
- communication/upgrade.txt
- completion/upgrade.txt
- course/format/upgrade.txt
- course/upgrade.txt
- customfield/upgrade.txt
- enrol/upgrade.txt
- filter/upgrade.txt
- grade/report/upgrade.txt
- grade/upgrade.txt
- group/upgrade.txt
- h5p/upgrade.txt
- lib/form/upgrade.txt
- lib/upgrade.txt
- lib/xapi/upgrade.txt
- mod/assign/upgrade.txt
- mod/bigbluebuttonbn/upgrade.txt
- mod/data/upgrade.txt
- mod/feedback/upgrade.txt
- mod/forum/upgrade.txt
- mod/imscp/upgrade.txt
- mod/lti/upgrade.txt
- mod/quiz/report/statistics/upgrade.txt
- mod/quiz/upgrade.txt
- mod/resource/upgrade.txt
- mod/scorm/upgrade.txt
- question/bank/upgrade.txt
- question/type/calculated/upgrade.txt
- question/upgrade.txt
- reportbuilder/upgrade.txt
- repository/upgrade.txt
- theme/boost/upgrade.txt
- theme/upgrade.txt
- user/upgrade.txt