πŸƒβ€β™‚οΈ Fast : An Efficient Way to Build Extensions

Version Badge

Credit: The idea of the installation process and the project structures is inspired by Rush. Thanks a ton, Shreyash :+1::gift:

:man_running: FAST is An Efficient Way to Build App Inventor Extensions For MIT App Inventor 2. With FAST, you no longer need to use any class level annotations except @DesignerComponent.

Explore the wiki section for comprehensive overview and step-by-step instructions on FAST.

:star2: Features

  • :fire: Generates blocks as PNG for each builder.
  • :fire: Attach custom xml to bundle it with APK.
  • :fire: Generates docs in Markdown.
  • :fire: Maven dependency resolver.
  • :fire: Dynamic Kotlin Compiler.
  • :fire: Integration of R8 Shrinker.
  • :fire: Support AAR as dependencies.
  • Java 8 support, including lambda expressions ()->.
  • Seamless support for Java and Kotlin languages.
  • Support for Multi-component in extension.
  • Integration of new red drop-down helper blocks.
  • Up-to-date ProGuard library 7.7.0.
  • Generates a smaller size of extension.
  • All @annotations will be removed from built AIX.
  • Ability to declare manifest in AndroidManifest.xml.
  • Code suggestions on VSCode, Eclipse, IntelliJ IDEA & Android Studio.
  • Ability to filter AI2 provided classes to reduce the AIX size.
  • Auto Project migration from Rush, extension-template & AI2 source based project.
  • Jetifier to migrate Android support libraries to Androidx.

:handshake: Supported OS

  • Windows
  • Linux
  • MacOS
  • Android (Termux)

:thinking: How to install?

Refer to this wiki to install the FAST on your system.

:thinking: How to Update?

Refer to this wiki to update the FAST to the latest version.

:thinking: How to create a new FAST project

  1. Open or navigate terminal at where you want to create your extension project.
  2. Run fast create <ProjectName>
  3. Enter the package name.
  4. Enter author name.
  5. Select language.
  6. Done.

:thinking: How to build a FAST project

  1. Open or navigate termanl at where the FAST project is.
  2. Run fast build to build the project.
  3. Done. The compiled extension should be inside the out directory.

:thinking: How to optimize using ProGuard?

  1. Make sure that ProGuard is enabled in fast.yml.
  2. Run the build command with -r.

:thinking: How to optimize using R8?

  1. Make sure that R8 is enabled in fast.yml
  2. Run the build command with -s.

  • :moneybag: Donations are welcome here.
  • :memo: Release notes are here.
  • :bulb: Ideas are welcome here.
  • :bug: Submit issues here.
  • :handshake: For getting additional supports, text me in PM or drop a comment below.

Thanks a lot to all the beta testers of FAST. Without their feedback and help, it would have been impossible to make FAST a stable compiler. :tada:


6 Likes

Thank you! Since Rush hasn’t been updated since 2021 and the Niotron IDE is also outdated, FAST is very welcome and overdue to make things easier for less experienced developers (like me).

2 Likes

Thank you for your feedback. It is very valuable to me. However, the FAST is able to compile the Niotron IDE extension source code.

Great :smiley:, this is very advanced and I’m glad that I was one of the beta testers of this wonderful tool.

1 Like

The FAST CLI feels like a breath of fresh air for us (extension developers). After testing it out, I’m genuinely impressed with its speed. Thank you for bringing this valuable tool to us!

2 Likes

I am truly grateful for your invaluable contributions and suggestions for Android Termux. Your assistance has been immensely beneficial to me.

1 Like

Thank you for the feedback! I’m glad to hear you’re enjoying the FAST CLI. We’ve worked hard to make it efficient, so it’s great to see it making a positive impact. Feel free to share any further suggestions!

1 Like

:loudspeaker: An update is pushed. Please run the update command to have the latest version v1.1.3


  • Added support for using a default icon.png.
  • By default, desugar_sources is now enabled.
  • Removed mock-related attributes from the fast.yml config.
1 Like

Good job @JEWEL :smiley:, this is very advanced and I’m glad that I was one of the beta testers of this wonderful tool

1 Like

I can’t thank you enough that how much you helped me to make the FAST stable for Linux operating system. Your insightful suggestions and innovative ideas are always highly appreciated and welcomed.

1 Like

:loudspeaker: An update is available (v1.1.4)


  • Fixed Java 8 sources compiling issues even desugaring is disabled.
  • Added custom bootclasspath support for targeting Java 8 on JDK8+
  • Now it’ll write additional logs to logs.txt at the installed location of FAST.
  • Changed title color and some prints color (blue to orange).

:warning: A clean installation is required, the update command might be not working.

:+1: Special thanks to @Patryk_F for helping me understand the build process :bouquet:

5 Likes

:loudspeaker: An update is available v1.2.1

:spiral_calendar: Date built: 30.10.24.23.43


  • FAST will print warnings if naming conventions are not followed.

x Cannot run program β€œjavac”: CreateProcess error=2, The system cannot find the file specified
getting error

Could you please share the logs.txt file that can be found in the installation location of FAST?

Hello @JEWEL i also found some issues while compiling extension here’s log file
logs.txt (1.4 KB)

:mega: An update is available v1.2.2

Date built: 02.11.24.06.29


  • Resolved an issue impacting the R8 dexer and shrinker.
  • Included naming conventions warnings for helper-blocks, arguments of choices, parameters of functions and events.
3 Likes

can i build using kotlin?

1 Like

Yes, FAST supports Kotlin language as well.

2 Likes

I’m using Fast and I want to know if it has support for aar?

Currently, you can’t directly use an aar file to develop extensions. You need to extract the classes.jar from the .aar file. Use any zip viewer application (e.x: Winrar) to unzip it.