Skip to content

Rush 2.0.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 22:44

Rush 2 is here: Kotlin and Java extensions with Maven dependencies, Android libraries with their resources, R8, and several extensions in one app, built the same way every time.

Highlights

  • Kotlin and Java, mixed in one project. Java 17 language features (records, switch expressions, text blocks) are desugared automatically, and with min_sdk 24 or higher newer Java APIs such as java.time work too.
  • Maven dependencies from Maven Central and Google's Maven repository, plus local JARs and AARs in deps/. AARs ship with their resources, which App Inventor compiles, and their manifests are merged into the extension's.
  • Several extensions in one app. Libraries are shipped as shared AARs that App Inventor de-duplicates, or relocated under the extension's package when they must stay private. libraries in rush.yml overrides where a library goes (exclude, provided, shared, private), and rush deps tree shows where each one goes and why.
  • R8 shrinks private libraries in every build; rush build --optimize also optimizes and obfuscates, and writes a mapping file for stack traces.
  • Android resources in res/, and AndroidManifest.xml for permissions, services, activities and providers. ${applicationId} becomes the app's package.
  • Documentation of the extension's blocks in Markdown, written next to the AIX.
  • GitHub Actions: shreyashsaitwal/rush-cli@v2 sets up Rush in any workflow, and new projects come with a workflow that builds every change and publishes releases from tags.
  • AI agents and dev containers: every project carries instructions for AI coding agents (AGENTS.md, a Claude skill) and a dev container for Codespaces and VS Code. The Rush extension template creates a project in the browser with nothing installed.
  • rush upgrade installs new releases.
  • Reproducible and fast: the same project always produces the same AIX, and builds that change nothing skip compiling and DEX.

See the documentation and the roadmap.

Install

curl -fsSL https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.sh | bash
iwr https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.ps1 -useb | iex

Coming from Rush 1

Rush 2 replaces Rush 1: install it with the commands above, then convert each project in place with rush migrate (commit or back it up first). See Migrating from Rush 1.

Coming from zainulhassan815/rush-cli 2.x

Rush 2 was stabilized in a fork, which released 2.0.0 to 2.5.0. Its work now continues here, and this release contains everything the fork shipped, plus:

  • R8 replaces ProGuard. R8 reports classes that the shipped code uses but nothing ships as Missing class errors; add -dontwarn rules only for code that never runs. Rush owns -repackageclasses: a project rule file that sets it fails the build, and rush migrate removes it.
  • libraries in rush.yml places a library explicitly. provided_dependencies is deprecated; rush migrate converts it.
  • Only libraries every App Inventor app has are treated as provided; the ones App Inventor adds for some components only are bundled.
  • Fixes: ${applicationId} in AAR manifests becomes the app's package, so two apps using the same extension can be installed together; AARs that declare ids as <id name="…"/> (recent AndroidX) build on App Inventor; rush create no longer hangs when stdin isn't a terminal.
  • A warning for Continuation<T> results, which App Inventor doesn't wait for; the docs now deliver slow results through events.

Installs from the fork read releases from the fork, so re-run the installer above once. To switch a project:

  • Replace zainulhassan815/rush-cli with shreyashsaitwal/rush-cli in .github/workflows/build.yml, .github/workflows/copilot-setup-steps.yml and .devcontainer/devcontainer.json.
  • Run rush migrate. Projects created by the fork's 2.x releases set -repackageclasses in src/proguard-rules.pro, which now fails the build; rush migrate removes it and converts provided_dependencies.
  • Run rush agents to refresh the Rush skill for AI agents.