Download Magisk (v19.0-28.1)

Welcome to Magisk.uk, the world's trusted provider of Magisk-rooted devices and resources. Below, you’ll find a comprehensive list of Magisk versions available for download. Whether you’re looking for the latest release or a specific older version, we’ve got you covered.

As passionate experts in Android customization, we ensure that all downloads are authentic, secure, and directly sourced from trusted repositories. When you choose Magisk.uk, you’re choosing reliability, expertise, and a community dedicated to unlocking the full potential of your Android device.

Explore the list below and start your journey with Magisk today (we recommend the latest version!).

Magisk v28.1 - Latest Version

  • [App] Fix stub APK download link
  • [App] Fix support for Android lower than 8.0
  • [General] Fix support for MTK Samsung devices
  • [MagiskInit] Fix a regression for 2SI devices
  • [MagiskPolicy] Fix a regression causing overlay.d replaced files to be not accessible

Magisk v28.0

  • [General] Support 16k page size
  • [General] Add basic support for RISC-V (not built in releases)
  • [General] Use a minimal libc to build static executables (magiskinit and magiskboot) for smaller sizes
  • [Core] Remove unnecessary mirror for magic mount
  • [Core] Update boot image detection logic to support more devices
  • [MagiskInit] Rewrite 2SI logic for injecting magiskinit as init
  • [MagiskInit] Update preinit partition detection
  • [Zygisk] Update internal JNI hooking implementation
  • [MagiskPolicy] Preserve sepolicy config flag after patching
  • [MagiskPolicy] Optimize patching rules to reduce the amount of new rules being injected
  • [DenyList] Support enforcing denylist when Zygisk is disabled
  • [Resetprop] Improve implementation to workaround several property modification detections
  • [Resetprop] Update to properly work with property overlays
  • [App] Major internal code refactoring
  • [App] Support patching Samsung firmware with images larger than 8GiB
  • [App] Use user-initiated job instead of foreground services on Android 14
  • [App] Support Android 13+ built-in per-app language preferences
  • [App] Add action.sh support to allow modules to define an action triggered from UI
  • [MagiskBoot] Support spliting kernel images without decompression
  • [MagiskBoot] Properly support vendor boot images
  • [MagiskBoot] Disable Samsung PROCA from kernel image

Magisk v27.0

  • [Zygisk] Introduce new code injection mechanism
  • [Zygisk] Support new signature introduced in U QPR2
  • [SEPolicy] Update libsepol to properly set some policy config bits
  • [MagiskBoot] Support compressing init so Magisk is installable on devices with small boot partitions
  • [ResetProp] Add new wait for property feature resetprop -w

Magisk v26.4

  • [MagiskBoot] Don't pad zeros if signed boot image is larger
  • [MagiskPolicy] Fix genfscon and filename_trans
  • [MagiskPolicy] Fix bug in libsepol
  • [Zygisk] Fix and simplify file descriptor sanitization logic
  • [App] Prevent OOM when patching AP tarfiles
  • [App] Fix bug in device configuration detection
  • [Daemon] Fix certificate parsing of APKs
  • [General] Fix logging errors from C++ code being ignored

Magisk v26.3

  • [General] Fix device information detection script
  • [General] Update BusyBox to 1.36.1
  • [General] Update toolchain that produces broken arm32 executables
  • [App] Fix root service unable to bind on OnePlus devices

Magisk v26.2

  • [MagiskBoot] Support extracting boot image from payload.bin
  • [MagiskBoot] Support cpio files containing character files
  • [MagiskBoot] Support listing cpio content
  • [MagiskBoot] Directly handle AVB 1.0 signing and verification without going through Java implementation
  • [Daemon] Make daemon socket a fixed path in MAGISKTMP
  • [resetprop] Support printing property context
  • [resetprop] Support only printing persistent properties from storage
  • [resetprop] Properly support setting persistent properties bypassing property_service
  • [MagiskSU] Support -g and -G options
  • [MagiskSU] Support switching mount namespace to PID with -t
  • [MagiskPolicy] Fix patching extended permissions
  • [MagiskPolicy] Support more syntax for extended permissions
  • [MagiskPolicy] Support printing out the loaded sepolicy rules
  • [App] Support patching boot image from ROM zips
  • [App] Properly preserve boot.img when patching Samsung firmware with init_boot.img

Magisk v26.1

Changes from v26.0

  • [App] Fix crashing when revoking root permissions
  • [MagiskInit] Always prefer ext4 partitions over f2fs when selecting the pre-init partition
  • [General] Restore module files' context/owner/group from mirror. This is a regression introduced in v26.0

Magisk v26.0

Bumping Minimum Android Version to 6.0

Magisk's support for Android Lollipop has been pretty broken for a while without it being noticed. Also, none of the active developers of Magisk have actual hardware to run Android Lollipop. We rely on using the official Android emulator for regression testing on older platforms, however Google never shipped a Lollipop emulator image with SELinux support, leaving us with no option but to drop Lollipop support since we don't feel comfortable supporting Android Lollipop without adequate testing.

New Magic Mount Implementation

Magic Mount, the feature that make modules modify partitions, has gone through a major rewrite. The existing implementation doesn't work well with OEMs injecting overlays into their system using overlayfs. The new implementation fundamentally changes how filesystem mirrors are created, giving us a more accurate clone of the unmodified filesystem.

New sepolicy.rule Implementation

Magisk allows modules to provide custom SELinux patches by including the file sepolicy.rule. Due to the complicated nature of SELinux patching, the compatibility of this functionality has been pretty spotty; many devices are not supported. In this release, a brand new pre-init partition detection mechanism has been designed to support even more devices. Due to complicated reasons, this detection mechanism cannot be performed in a custom recovery environment.

This means that any installation of Magisk v26+ using custom recovery will be incomplete; a subsequent re-installation through the Magisk app after booting up is required.

Zygisk Updates

The new Zygisk API v4 is now live! It comes with new features and a refined PLT function hook API. The implementaton of Zygisk has also gone through some major refactoring, including new code loading/unloading mechanisms and a new PLT function hook implementation.

Head over to the Zygisk Module Sample repository to check out the new API and documentation!

Magisk v25.2

Maintenance release fixing various issues.

  • [MagiskInit] Fix a potential issue when stub cpio is used
  • [MagiskInit] Fix reboot to recovery when stub cpio is used
  • [MagiskInit] Fix sepolicy.rules symlink for rootfs devices
  • [General] Better data encryption detection
  • [General] Move the whole logging infrastructure into Rust

Magisk v25.1

v25.1 fixes some minor bugs over v25.0. The following are the same as v25.0 release notes.

Magisk v25.0

Another major release! A lot of the changes aren't visible at the surface, but v25 is actually a really substantial upgrade!

MagiskInit Rewrite

A significant portion of magiskinit (the critical software that runs before your device boots up) is completely rewritten from scratch. Ever since Android introduced Project Treble in Android 8.0, Magisk has been constantly fighting against the increasingly complex partitioning and early mount setups of all kinds of devices, sometimes with weird OEM specific implementations. It got to a point that magiskinit had become so complicated that few people (including myself!) were aware of every detail, and maintaining this piece of software like this was clearly not sustainable. After many months of planning (yes, this whole re-architecture has been in my head for a long time) and some help from external contributors, a whole new sepolicy injection mechanism is introduced into Magisk, solving the "SELinux Problem" once and for all.

Since this is a full paradigm shift on how Magisk hot-patch the device at boot, several behaviors that many developers implicitly relied on might not exist. For example, Magisk no longer patches fstabs in most scenarios, which means AVB will remain intact; some custom kernels rely on AVB being stripped out for them by Magisk.

MagiskSU Security Enhancements

The superuser functionality of Magisk has not seen much changes ever since its introduction. v25 focuses on making root permission management more accurate and secure:

  • Add a whole new package tracking system to ensure malicious UID reuse attack cannot be performed
  • Properly support and implement the UX in the Magisk app for packages using sharedUserId
  • Enforce root manager APK signature verification to combat the rampant unofficial Magisk app "mods"

Many might not realize, but using a trusted, unmodified Magisk app is really important. Magisk's root daemon treats the Magisk app differently and gives it blanket root access without any restrictions. A modded Magisk app can potentially backdoor your device.

And in case some of you are about to put on your tin foil hats, this is not designed to "vendor lock-in"; the goal is to make sure your root management app comes from the same developer of the underlying root implementation. Magisk's build system allows custom distributors to use its own signing keys, and in addition, I am also providing official debug builds which skips any signature verification for development.

Magisk v24.3

  • [General] Stop using getrandom syscall
  • [Zygisk] Update API to v3, adding new fields to AppSpecializeArgs
  • [App] Improve app repackaging installation workflow

Magisk v24.2

  • [MagiskSU] Fix buffer overflow
  • [MagiskSU] Fix owner managed multiuser superuser settings
  • [MagiskSU] Fix command logging when using su -c <cmd>
  • [MagiskSU] Prevent su request indefinite blocking
  • [MagiskBoot] Support lz4_legacy archive with multiple magic
  • [MagiskBoot] Fix lz4_lg compression
  • [DenyList] Allow targeting processes running as system UID
  • [Zygisk] Workaround Samsung's "early zygote"
  • [Zygisk] Improved Zygisk loading mechanism
  • [Zygisk] Fix application UID tracking
  • [Zygisk] Fix improper umask being set in zygote
  • [App] Fix BusyBox execution test
  • [App] Improve stub loading mechanism
  • [App] Major app upgrade flow improvements
  • [General] Improve commandline error handling and messaging

Magisk v24.1

For those coming from v24.0, v24.1 only has some minor app improvements. The following are copied from v24.0 release notes.

Magisk v24.0

It has been a while since the last public release, long time no see! A personal update for those unaware: I am now working at Google on the Android Platform Security team. Without further ado, let's jump right into it!

MagiskHide Removal

I have lost interest in fighting this battle for quite a while; plus, the existing MagiskHide implementation is flawed in so many ways. Decoupling Magisk from root hiding is, in my opinion, beneficial to the community. Ever since my announcement on Twitter months ago, highly effective "root hiding" modules (much MUCH better than MagiskHide) has been flourishing, which again shows that people are way more capable than I am on this subject. So why not give those determined their time to shine, and let me focus on improving Magisk instead of drowning in the everlasting cat-and-mouse game 😉.

Sunsetting Magisk-Modules-Repo

Due to lack of time and maintenance, the centralized Magisk-Modules-Repo was frozen, and the functionality to download modules from the repo is removed in v24.0. As a supplement, module developers can now specify an updateJson URL in their modules. The Magisk app will use that to check, download, and install module updates.

Introducing Zygisk

Zygisk is Magisk in Zygote, the next big thing for Magisk! When this feature is enabled, a part of Magisk will run in the Zygote daemon process, allowing module developers to run code directly in every Android apps' processes. If you've heard of Riru, then Zygisk is inspired by that project and is functionally similar, though the implementation is quite different internally. I cannot wait to see what module developers can achieve using Zygisk!

Documentation

For developers, details about updateJson and building Zygisk modules can all be found in the updated documentation.

Magisk v23.0

Bug Fixes

  • [App] Update snet extension. This fixes SafetyNet API errors.
  • [App] Fix a bug in the stub app that causes APK installation to fail
  • [App] Hide annoying errors in logs when hidden as stub
  • [App] Fix issues when patching ODIN tar files when the app is hidden
  • [General] Remove all pre Android 5.0 support
  • [General] Update BusyBox to use proper libc
  • [General] Fix C++ undefined behaviors
  • [General] Several sepolicy.rule copy/installation fixes
  • [MagiskPolicy] Remove unnecessary sepolicy rules
  • [MagiskHide] Update package and process name validation logic
  • [MagiskHide] Some changes that prevents zygote deadlock

Magisk v22.1

Bug Fixes

  • [App] Prevent multiple installation sessions running in parallel
  • [App] Prevent OutOfMemory crashes when checking boot signature on PXA boot images
  • [General] Proper cgroup migration implementation
  • [General] Rewrite log writer from scratch, should resolve any crashes and deadlocks
  • [General] Many scripts updates fixing regressions
  • [MagiskHide] Prevent possible deadlock when signal arrives
  • [MagiskHide] Partial match process names if necessary
  • [MagiskBoot] Preserve and patch AVB 2.0 structures/headers in boot images
  • [MagiskBoot] Properly strip out data encryption flags
  • [MagiskBoot] Prevent possible integer overflow
  • [MagiskInit] Fix sepolicy.rule mounting strategy
  • [resetprop] Always delete existing ro. props before updating. This will fix bootloops that could be caused by modifying device fingerprint properties.

Magisk v22.0

RESTORE THE EXISTING MAGISK MANAGER BACK TO NORMAL BEFORE UPGRADING IF HIDDEN!

Another major Magisk release! This time our focus is not the core Magisk implementation, but rather on improving the whole Magisk user experience.

Magisk Manager is dead.
Long live the Magisk app!

Ever since the first Magisk release, Magisk (the core components) and Magisk Manager (the companion app) are released separately and isn't necessarily always in sync. This leads to some confusion and a lot of complexity when downloading/installing Magisk through the app. Starting from v22.0, the Magisk app (renamed from Magisk Manager) includes everything it needs within the APK itself, making installation a 100% offline process.

Custom recovery lovers, no worries! The Magisk app APK itself is a custom recovery flashable zip, just like MAGIC™🌈. Check out the updated installation guide for more info.

App Hiding

Another major breakthrough in this release is that devices lower than Android 9.0 can now also use the advanced app hiding technique to hide the Magisk app. Due to this incompatible change, RESTORE THE EXISTING MAGISK MANAGER BACK TO NORMAL BEFORE UPGRADING IF HIDDEN!

Bug Fixes

  • [MagiskHide] Fix a bug when stopping MagiskHide does not take effect
  • [MagiskBoot] Fix bug when unpacking lz4_lg compressed boot images
  • [MagiskInit] Support Galaxy S21 series
  • [MagiskSU] Fix incorrect APEX paths that caused libsqlite.so fail to load

Magisk v21.4

  • [MagiskSU] Fix su -c behavior that broke many root apps
  • [General] Properly handle read/write over sockets (the broken pipe issue)

Magisk v21.3

Happy 2021! v21.3 adds a workaround for devices with buggy F2FS Linux kernel drivers. This F2FS bug may cause bootloops on many devices. Checkout the full v21.0 release notes if coming from older releases.

  • [MagiskInit] Avoid mounting f2fs userdata as it may result in kernel crashes. This shall fix a lot of bootloops
  • [MagiskBoot] Fix a minor header checksum bug for DHTB header and ASUS blob image formats
  • [MagiskHide] Allowing hiding isolated processes if the mount namespace is separated

Magisk v21.2

  • [MagiskInit] Detect 2SI after mounting system_root on legacy SAR devices
  • [General] Make sure post-fs-data scripts cannot block more than 35 seconds
  • [General] Fix the magisk --install-module command
  • [General] Trim Windows newline when reading files
  • [General] Directly log to file to prevent logcat weirdness
  • [MagiskBoot] Fix header dump/load for header v3 images

Magisk v21.1

v21.1 is a maintenance update from v21.0, mostly addressing bugs, refining some details, and adding new boot image format support (for Pixel 5 and 4a 5G). Checkout the full v21.0 release notes if coming from older releases.

Magisk v21.0

v21.0 is the largest release in Magisk's history. It comes with full Android 11 support (tons of stuff had to be rewritten from scratch!), and a completely redesigned Magisk Manager. These are the reasons why this particular public release took me over half a year to wrap up.

To the end user, not much has changed other than the fact that Magisk Manager has completely changed its appearance. However developers should pay attention to some changes due to adjustments for Android 11. Full changelogs are too massive to fit, so here I'll point out the main changes and links to updated documentations.

Highlights

  • Android 11 support 🎉
  • Completely redesigned Magisk Manager
  • Safe Mode detection: if you installed a module that bootloops your device, reboot into Safe Mode and all modules will be disabled. More instructions on how to deal with broken modules is linked here.

The following are for advanced users/developer:

  • On Android 8.0+, Magisk now uses a new SELinux setup that keeps Android sandbox less compromised. This provides better security to rooted users, and also separates Magisk rules from original rules. Details here.
  • On Android 11, /sbin may no longer exist. For developers, this means the Magisk's internal tmpfs directory is no longer always /sbin, and instead randomly created every boot. To get the tmpfs path, use the command magisk --path (more details here). For custom kernel developers that uses overlay.d, updated docs are here.
  • magiskpolicy gained more features and some minor syntax changes, details here.

Magisk v20.4

Miscellaneous

This release is mainly focused on stability and bug squashing. Please be aware that MagiskHide is no longer enabled by default. Since Google has enabled hardware-based key attestation in SafetyNet (FAQ), there is no effective way to pass full CTS SafetyNet anymore (although Google seems to have temporarily reverted the change).

I decided that the fully redesigned Magisk Manager isn't fully ready for prime time yet, so this time around no Magisk Manager update is released. The WIP manager will continue to be improved and is available for testing on the canary channel.

BusyBox Standalone Mode

Starting with Magisk v20.4, all Magisk related scripts, including boot scripts and module installation scripts, will run on BusyBox's shell (ash) in standalone mode. In BusyBox ash standalone mode, every single command will be forced to use the one that is in Magisk's BusyBox (if available). For instance, no matter how you change the environment variable PATH, the rm command will always use the one in BusyBox, not the one in system, external BusyBox, vendor, or included in custom recovery.

The reason behind this change is that all scripts will be guaranteed to have 100% consistent results no matter how the environment is setup. The internal BusyBox is significantly beefed up with patches from @osm0sis, and also with SELinux features enabled. It shall offer a very complete, reliable, and consistent scripting environment. If in any case you require to use a command outside of BusyBox, please call it with the full path (e.g. /system/bin/nslookup)

Magisk Changelog

  • [MagiskInit] Fix potential bootloop in A-only 2SI devices
  • [MagiskInit] Properly support Tegra partition naming
  • [General] Load libsqlite.so dynamically, which removes the need to use wrapper scripts on Android 10+
  • [General] Detect API level with a fallback method on some devices
  • [General] Workaround possible bug in x86 kernel readlinkat system call
  • [BusyBox] Enable SELinux features. Add chcon/runcon etc., and '-Z' option to many applets
  • [BusyBox] Introduce standalone mode. More details in release notes
  • [MagiskHide] Disable MagiskHide by default
  • [MagiskHide] Add more potential detectable system properties
  • [MagiskHide] Add workaround for Xiaomi devices bootloop when MagiskHide is enabled on cross region ROMs
  • [MagiskBoot] Support patching special Motorolla DTB format
  • [MagiskPolicy] Support 'genfscon' sepolicy rules
  • [Scripts] Support NAND based boot images (character nodes in /dev/block)
  • [Scripts] Better addon.d (both v1 and v2) support
  • [Scripts] Support Lineage Recovery for Android 10+

Magisk v20.3

Fix magiskboot crashing when dealing with lz4_legacy format

Magisk v20.2

Pre-Init sepolicy Patches for Modules

Magisk v20.2 add support for modules to include its own custom sepolicy patches. Developers used to use boot scripts along with the magiskpolicy tool to do live sepolicy patches; however, this method leads to numerous issues as Android is no longer designed to allow live sepolicy patches, and on some devices (e.g. Huawei) this method is outright inapplicable.

To address this issue, Magisk allow module devs to create a new file called sepolicy.rule in their modules. The module installer script and Magisk daemon will make sure this file is stored in somewhere accessible pre-init to allow magiskinit to do its job every time your device boots up.

New Module Installer Format

The old template is actually pretty convoluted: developers are expected to implement specific callback functions in their install.sh, and the zip file structure does not directly represent how modules are actually stored on your device. The new module installer format makes creating new modules very easy, but still give experienced developers tons of freedom to do anything they want in the installation process.

For details regarding sepolicy.rule and the new module installer format, please read the updated Developer Guides. Note that the old "Module Installer Template" is obsolete; creating a Magisk module no longer requires a "template" as it is now a straightforward process.

Magisk v20.1

Lots of bug fixes from v20.0, and some cool new features!

Updated Magisk Manager Hiding

Starting with Magisk v20.1 paired with Magisk Manager v7.4.0, a new hiding mode is introduced for Android 9.0+. On supported devices, Magisk Manager will download and customize a heavily obfuscated stub APK and use it as a replacement. The stub app will then download the full app into its private internal data, then dynamically load and run the actual full Magisk Manager.

Note, not all Android 9.0+ devices will be able to use this feature. To use an obfuscated stub as Magisk Manager, the Magisk daemon will have to rely on a special way to communicate with the app, and some OEMs (most likely Chinese manufacturers) block certain broadcasts, breaking the communication channel.

Magisk Manager will verify compatibility before it uses stubs to hide itself on Android 9.0+. The verification relies on Magisk v20.1+, which means you have to fully upgrade and reboot in order to opt in this feature. If you are already running a hidden Magisk Manager, restore and upgrade Magisk Manager, upgrade Magisk and reboot, then re-hide the app.

For those incompatible with the hiding-with-stub feature, there are also a few updates that everyone, regardless whether using stubs or not, can enjoy:

  • You can now customize the app name of the repackaged Magisk Manager
  • Magisk Manager will generate new keys to sign the repackaged APK to prevent signature detection

Magisk v20.0

The following release notes are mostly the same as v19.4. Compared to v19.4 beta, the most notable change is adding tons of support for more devices on Android 10, along with several bug fixes.

Magisk v19.4

This version is heavily tested and tons of bugs were squashed before release. However due to the massive changes, it is decided to release a public beta for people/root app developers to adjust/update before things hit public stable.

New System-as-root Implementation

Magisk has supported system-as-root devices for a long time since the first Pixel came out. The goal is always to revert things back to the good old initramfs based root dir. However, this not only creates tons of issues on many devices, not easily hide-able with MagiskHide, but most importantly not even possible on Android 10. Starting with v19.4, Magisk will follow how Google has designed system-as-root: mounting system actually to / (root).

This implies several MASSIVE consequences for system-as-root devices:

  • /system is no longer a valid mount point. For existing root apps that remounts /system to rw, you will have to remount / instead of /system
  • The root directory (/) is no longer rootfs, but actually system. Remounting / to rw and modify files means you are writing to the actual system partition, NOT volatile storage as it used to be in rootfs. This is not recommended as user is not necessary aware that you are tampering an actual partition, sometimes dangerous if dm-verity/AVB-verity is enforced, or sometimes outright impossible since many devices now ship with read-only system partitions (e.g. EROFS, EXT4 dedup)
  • Several custom kernel rely on Magisk's root directory overlay system (overlay) for modifying /. This is no longer compatible with the new implementation. A new overlay system (overlay.d) will replace the existing one as an alternative (details in documentations). To provide backwards compatibility, Magisk will switch to "Compat Mode" when /overlay is detected, which simply reverts to the old system-as-root setup. Compat Mode will not work on Android 10 and will cause bootloop. Although things will still work as it used to, please upgrade to overlay.d ASAP.

Android 10 Support

Other than A-only devices running Android 10, Android 10 is fully supported with MagiskHide fully functioning. Android 10's biggest challenge is the new "2-Stage-Init" system-as-root implementation, which is the sole reason why A-only is not support yet. Stay tuned for further updates as that is the next thing on the list.

(For those interested in "2-Stage-Init" and other details of system-as-root, check this Twitter thread I tweeted)

Product Partition Support

Magisk Module developers can now finally properly modify files in /product! This partition is now an essential part in Android 10, and many files are moved from system to product. Please check documentations for more details.

A-Only System-as-root

A huge number of new devices have A-only system-as-root setups (Android 9.0). These unfortunate devices will have to install Magisk into the recovery partition. Please check the fully updated Installation Guide for more details.

Magisk v19.3

Support execute commands in magiskhide env

Magisk v19.2

Fix stub strings

Magisk v19.1

  • Imageless Magisk: Although module migration was tested, there are still chances that your modules will get lost in the process. Be prepared to reinstall your existing modules in that case.
  • Native 64-bit support
  • Zygote Ptrace Based MagiskHide

Magisk v19.0

I would say this is one of my most ambitious release of all time! Due to the extremely massive changes, this release will be a public beta. Calling it v18.2 doesn't do it justice, so v19.0 we go.

Magisk Module installer

Magisk module developers: pay extra attention! A completely new Magisk Module Installer replaces the old Magisk module template. This new format decouples ALL installation logic from modules, and encourages developers to use the provided API for installation. This new format is ENFORCED, meaning all existing modules should upgrade ASAP, and new modules are REQUIRED to follow the rules.

Carefully read through the updated docs!

Warning: All existing modules that does not use the new module format will be automatically removed on May 1st, 2019. Module devs: upgrade your existing modules ASAP!

Imageless Magisk

Since the existence of Magisk, all modules are stored within an EXT4 image which will be loop mounted at boot. This approach has a few problems: resizing the image is a huge headache (no live resizing, resize2fs on some devices refuse to work properly), and also MANY devices using F2FS ships a broken driver with the kernel, causing EXT4 loop devices unable to be mounted at all. All these problems come to an end now: modules are now directly stored in /data! Backwards compatibility is provided, for modules that uses the official module template, installation should work just fine.

Warning: Although module migration was tested, there are still chances that your modules will get lost in the process. Be prepared to reinstall your existing modules in that case.

Native 64 Bit is Back

At one point in history, Magisk uses native 64 binaries. However due to binary size considerations, all binaries was switched to 32 bit. Starting from v19, all static binaries are still 32 bit only, but the most important part: the main magisk binary now runs in native 64 bit on supported devices.

Zygote Ptrace Based MagiskHide

MagiskHide used to use logcat to monitor activity manager events for new process creation. That method is extremely unreliable: even with constant improvements since introduction, it is still not working 100% of the time. Here comes a fundamentally new approach: ptrace the zygote process and step through all fork events. In layman's term, this new method is able to target a process before it even starts to run! The code for it is extremely tricky, but it was tested for quite a while in the canary channel, so I'm confident enough to release this to the public :)

Android Q

Full support for Android Q Beta 1 is also introduced in this release. However, you cannot use it on the Pixel 3 (XL) due to the fact that Google decided to use logical partitions on the 3rd gen Pixels starting with Q. A solution is still WIP, please stay tuned!

Final Words

What you can expect in upcoming releases: Samsung S10 support, and full logical partition support. Also, I AM aware of Google Pay issues, but these are not my main focus now since there are still tons of other issues for me to focus on. Several discussion threads on XDA provide seemingly working solutions, please do some research on your own.

(Credit: TopJohnWu)