Repository navigation
Releases: topjohnwu/Magisk
Release list
Magisk v31.0
The highlight of this release is a complete, ground-up rewrite of the Magisk app UI.
Over the years, the Android application codebase had accumulated significant technical debtβspanning legacy XML layouts, Databinding, and KAPT. In this release, the entire UI layer has been rebuilt from scratch with modern Jetpack Compose and Material 3.
This rewrite allowed us to modernize the architecture and introduce substantial UI/UX improvements, with additional new features:
- A new built-in terminal emulator with full TTY and ANSI support for module flashing and action scripts.
- Direct support for streaming and extracting boot images from remote OTA URLs on-the-fly.
Legacy App Still Available
This kind of full rewrite can sometimes introduce unexpected edge cases or bugs. If you encounter issues with the new app, the legacy View-based version will still be built and uploaded for a couple of releases, available for download here.
Changelog
- [App] Complete UI overhaul with Jetpack Compose and Material 3, completely removing the legacy View and Fragment architecture
- [App] Add new built-in terminal emulator with full TTY and ANSI support for module flashing and action scripts
- [App] Support downloading and streaming boot image extraction directly from remote OTA URLs
- [MagiskBoot] Support dynamic zImage payload sizes without requiring exact size padding during repack
- [MagiskBoot] Update AVB hash descriptor image size to match unpacked image size
- [MagiskBoot] Lower default compression preset for XZ and LZMA to reduce memory usage during repacking
- [Zygisk] Support Android 17 (API 37)
- [Zygisk] Support Meta Quest (Horizon OS) lazy partition zygotes
- [MagiskPolicy] Fix identifier parsing for names containing hyphens
- [resetprop] Add
--compact(-c) flag to compact property storage areas - [MagiskInit] Properly prioritize charger mode detection before
force_normal_boot - [DenyList] Add
webview_zygoteas an unmount target
Full Changelog: here
Magisk v30.7
- [MagiskInit] Support Android 16 QPR2 sepolicy format
- [MagiskInit] Support using klogdump partition as pre-init storage
- [Zygisk] Support Android 16 QPR2 and higher
- [Zygisk] Support Android XR and some Nubia devices
- [MagiskSU] Do not drop capabilities by default, even when switching to non-root UIDs. Explicitly use the
--drop-capargument to drop capabilities. - [MagiskBoot] Better lzma format detection
- [MagiskBoot] Fix various commandline argument parsing bugs
Full Changelog: here
Magisk v30.6
Hotfix
- [MagiskInit] Revert a change that could result in bootloops
v30.5 Changelog
- [General] Migrate a significant portion of the codebase to Rust
- [General] Various minor bug fixes
- [General] Support installing Magisk into vendor_boot partition
- [Core] Improve Magisk specific files injection logic
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
- [MagiskSU] Fallback to older implementation when the kernel doesn't support zero userspace copy APIs
- [MagiskPolicy] Support new sepolicy binary format introduced in Android 16 QPR2
- [resetprop] Reduce property modification traces
- [resetprop] Properly support Android versions with property overrides
Full Changelog: here
Magisk v30.5
- [General] Migrate a significant portion of the codebase to Rust
- [General] Various minor bug fixes
- [General] Support installing Magisk into vendor_boot partition
- [Core] Improve Magisk specific files injection logic
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
- [MagiskSU] Fallback to older implementation when the kernel doesn't support zero userspace copy APIs
- [MagiskPolicy] Support new sepolicy binary format introduced in Android 16 QPR2
- [resetprop] Reduce property modification traces
- [resetprop] Properly support Android versions with property overrides
Full Changelog: here
Magisk v30.4
- [MagiskSU] Fix several implementation bugs
Diffs to v29.0
- [General] Various minor bug fixes
- [General] Support installing Magisk into vendor_boot partition
- [General] Migrate a significant portion of the codebase to Rust
- [Core] Improve Magisk specific files injection logic
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
- [MagiskSU] Fallback to older implementation when the kernel doesn't support zero userspace copy APIs
- [MagiskPolicy] Support new sepolicy binary format introduced in Android 16 QPR2
- [resetprop] Reduce property modification traces
Full Changelog: here
Magisk v30.3
- [General] Support installing Magisk into vendor_boot partition
- [MagiskPolicy] Support new sepolicy binary format introduced in Android 16 QPR2
- [Core] Migrate much more code into Rust
- [MagiskSU] Fallback to older implementation when the kernel doesn't support zero userspace copy APIs
Diffs to v29.0
- [General] Various minor bug fixes
- [General] Support installing Magisk into vendor_boot partition
- [General] Migrate a significant portion of the codebase to Rust
- [Core] Improve Magisk specific files injection logic
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
- [MagiskSU] Fallback to older implementation when the kernel doesn't support zero userspace copy APIs
- [MagiskPolicy] Support new sepolicy binary format introduced in Android 16 QPR2
- [resetprop] Reduce property modification traces
Full Changelog: here
Magisk v30.2
- [Core] Fix an edge case breaking modules when overlayfs is involved
- [Core] Fix module
.replacefunctionality in certain situations - [resetprop] Reduce property modification traces
Diffs to v29.0
- [General] Various minor bug fixes
- [Core] Migrate module implementation to Rust
- [Core] Improve Magisk specific files injection logic
- [MagiskBoot] Migrate compression code to Rust
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
- [resetprop] Reduce property modification traces
Full Changelog: here
Magisk v30.1
- [Core] Fix bug in module mounting implementation
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
Diffs to v29.0
- [General] Various minor bug fixes
- [Core] Migrate module implementation to Rust
- [Core] Improve Magisk specific files injection logic
- [MagiskBoot] Migrate compression code to Rust
- [MagiskSU] Add ability to restrict Linux capabilities even if running as root (uid=0)
Full Changelog: here
Magisk v30.0
- [General] Various minor bug fixes
- [Core] Migrate module implementation to Rust
- [Core] Improve Magisk specific files injection logic
- [MagiskBoot] Migrate compression code to Rust
Full Changelog: here
Magisk v29.0
This release looks minor at the surface, however, the entire codebase has gone through significant refactoring and migration. The native code in Magisk used to be mainly C++, but several contributors and I have been steadily rewriting parts of the code in Rust since April 2022. After years of effort, the Rust-ification of the project slowly began picking up steam, and at the moment of this release, over 40% of the native code has been rewritten in Rust, with several major subsystem rewrites in the PR queue, planned to be merged for the next release.
Many might wonder, why introduce a new language to the project? My reason is actually not to reduce memory safety issues (although it is a nice side benefit), but to be able to develop Magisk using a more modern programming language. After using Rust for a while, it's clear to me that using Rust allows me to write more correct code and makes me happier compared to dealing with C++. People share the same sentiment as I do.
Changelog
- [General] Massive internal refactoring and code migration
- [App] Support downloading module zip files with XZ compression
- [App] Disable app animations when system animations are disabled
- [MagiskMount] Support systemlessly deleting files with modules using blank file nodes
- [MagiskInit] Redesign sepolicy patching and injection logic
- [MagiskSU] Better TTY/PTY support