Skip to content

Releases: topjohnwu/Magisk

Magisk v31.0

Magisk v31.0 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 04 Sep 16:56

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_zygote as an unmount target

Full Changelog: here

Magisk v30.7

Choose a tag to compare

@topjohnwu topjohnwu released this 23 Feb 08:07
  • [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-cap argument to drop capabilities.
  • [MagiskBoot] Better lzma format detection
  • [MagiskBoot] Fix various commandline argument parsing bugs

Full Changelog: here

Magisk v30.6

Choose a tag to compare

@topjohnwu topjohnwu released this 01 Dec 23:57

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

Magisk v30.5 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 01 Dec 09:56
  • [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

Magisk v30.4 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 02 Oct 11:34
  • [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

Magisk v30.3 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 30 Sep 04:46
  • [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

Magisk v30.2 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 06 Aug 10:53
  • [Core] Fix an edge case breaking modules when overlayfs is involved
  • [Core] Fix module .replace functionality 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

Magisk v30.1 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 03 Jul 10:27
  • [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

Magisk v30.0 Pre-release
Pre-release

Choose a tag to compare

@topjohnwu topjohnwu released this 01 Jul 17:25
  • [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

Choose a tag to compare

@topjohnwu topjohnwu released this 14 May 08:33

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

Full Changelog: here