Skip to main content

v2026.04.30 Release

· One min read
Redex Team
Redex Team

Optimizations

This release brings several code-size and inlining improvements:

  • RemoveUnreachablePass can now sweep annotation elements (via the sweep_annotation_elements option). This yields a large code-size reduction for apps that cannot enable AnnoKill, and a modest reduction for those that do.
  • More lenient cross-store reference (XStoreRefs) handling when normal_primary_dex is enabled, improving inlining across primary and secondary dex files for apps using native multidex.
  • ResolveRefsPass now does a better job resolving interface references.

Other improvements

  • New CompactPointerVector container, a memory-efficient alternative to std::vector for storing a small number of pointers inline without heap allocation.
  • Broader use of AtomicStatCounter for thread-safe stats collection.
  • Partial migration from boost::optional to std::optional.
  • Systematic include cleanup and const-correctness improvements across the codebase.

v2025.09.18 Release

· One min read
Redex Team
Redex Team

Optimizations

This release brings Kotlin default arguments optimization in Constant Propagation.

Other improvements

  • More adoptions of the new unordered container type.
  • Reducing Redex memory usage (via inliner’s new max_reduced_size option).
  • JarLoader improvements for fuzzing.

v2025.03.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This release brings enhancements to existing optimizations:

  • BranchPrefixHoisting runs more often, hoisting more instructions.
  • Improvements to inlining, inlining almost 1% more callsites while reducing code-size overall.
  • Improvements to source blocks for merged classes.
  • New pass InsertDebugInfoPass to insert artificial debug info for incoming code that is missing line numbers.
  • Improvements to constant propagation analyzers to evaluate package names.

Other improvements

  • Improvements to .pro parsing logic and dex loading logic (not expected to change application perf).

v2024.10.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This is a relatively small incremental release bringing two new optimizations:

  • A new resource inlining pass, inlining universally constant resources values directly in the code, eliminating expensive resource lookups. This first implementation only considers colors, ints and bools, but does not yet consider strings.
  • Eliminating unused arguments in true virtual methods. This reduces method invocation overhead for virtual methods.

Other improvements

  • Support for -assumevalues in ProGuard specifications, as supported by R8. This unlocks additional optimizations in Redex.

v2024.08.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This release bundles a few improved optimizations that improve code size and performance:

  • Relax init optimization that inlines the constructor calls at object instantiation site. As a result, we can also remove the constructor method from the class.
  • By reordering classes in InterdexPass, we made dexes more dense after Halfnosis pass and empty dexes will be left behind and can be removed by the newly introduced DexRemovalPass.

Better Engineering & Reliability Improvements

  • Improved dead resource elimination, to bring parity between .apk and .aab builds for removed resources.
  • Classes using the ServiceLoader Java APIs will now be kept by Redex; keep rules are no longer necessary.
  • Class renaming improvements to better identify class names used by layout files and string references.
  • Improved annotation handling in SingleImplPass.

v2024.05.31 Release

· One min read
Redex Team
Redex Team

Optimizations

This release bundles a few improved optimizations that improve code size and performance:

  • Improvements to object escape analysis and associated transformations (support for check-casts, returning parameters, true virtual and super invocations, comparing objects with null, and a whole new global cost function), resulting in fewer object allocations and more inlining.
  • Streamlined treatment of system annotations (a conceptual cleanup effort that lead to a size reduction).
  • Value numbering for branch conditions eliminating branches in code.

Build Speed / Reliability / Better Engineering

  • Improved precision of analysis for class references from layouts and XML attributes, preventing Redex from removing referenced classes.
  • First steps towards addressing an ancient design bug in Redex causing improper handling of the package-private access modifier.
  • Performance improvements to Redex infrastructure.

Office Hours

· One min read

!!! Redex Public Office Hour Coming on Wed. 10/26/2022 @2PM PST !!!

Zoom Meeting id: 921 3454 5091; passcode: 177943

Please dial in to chat! We would love to learn how do you use Redex, what challenges are you facing, and how can we better help. We would like keep the 1st office hour to be more high level. If you have very specific questions, like how to build Redex, Github issue is still the best way to resolve it.