Learn what Felgo offers to help your business succeed. Start your free evaluation today! Felgo for Your Business

Felgo Updates

Felgo Update Guide

After installing the Felgo SDK, you can receive updates with the Maintenance Tool. The Maintenance Tool is located at the installation directory of your Felgo SDK and is called MaintenanceTool.

Run this application and select Update components to check if any updates are available for the Felgo SDK.

You then see a list of packages for which an update is available. To update the packages, click Continue and then Update on the following screen. After all packages were downloaded and installed, you can close the Maintenance Tool by clicking the Done button.

Note: After you updated the SDK, you need to Clean your project so the updated Felgo version is used. To clean your project, open Qt Creator and select Clean Project from the Build menu. Afterwards you can run your project and the updated Felgo version is used.

With your Felgo signup, you get access to all Felgo updates for free. Some of the components are available exclusively for Felgo customers - to upgrade to a Felgo license click here.

Latest Felgo Release

v 4.2.0 (2024-08-19)

Highlights Blog Post: Release 4.2.0: New Felgo Hot Reload, OAuth 2.0 Plugin, Universal Links, Android 14 & Qt Creator 14

Felgo 4.2.0 adds Felgo Hot Reload, Android 14 support, updated Qt Creator 14, a new OAuth 2.0 Plugin and Universal App Link Handling.

Felgo 4.2.0 comes as a free update for all Felgo developers.

Update Now (New to Felgo? Get started here)

Highlights

  • Updated Felgo Hot Reload (formerly Felgo Live) now includes all the latest additions and improvements. The Felgo Live Client is renamed to Felgo Developer App on Desktop, to be consistent with the mobile clients. Also, the Felgo Live Server is now just Felgo Hot Reload in your Felgo SDK installation folder.

    • Improvements and new features from the Felgo Hot Reload standalone version released earlier this year. This includes improved JavaScript function editing, optimized binding handling, and delegate component and Loader source component changes without losing the application state. And many more.
    • The Felgo Hot Reload GUI application and connection screen got a visual overhaul. Also, the Felgo Hot Reload GUI application (formerly Felgo Live Server) now displays information about the opened project and shows the Connection ID more prominently in the new bottom status bar.
    • You can change QML singletons and QML imports without restarting your app.
    • A new error screen and rollback feature lets you fix errors in your code and continue coding without interruption and full reloads.

    If you want to learn more about individual features, have a look here: https://felgo.com/qml-hot-reload.

    Note: Please perform the following steps to migrate your project to Felgo Hot Reload:

    • CMakeLists.txt: Replace find_package(FelgoLive REQUIRED) with find_package(FelgoHotReload REQUIRED) and target_link_libraries(appMessenger PRIVATE FelgoLive) with target_link_libraries(appMessenger PRIVATE FelgoHotReload).
    • main.cpp: Replace include from #include <FelgoLiveClient> to #include <FelgoHotReload>. Replace FelgoLiveClient client (&engine); with FelgoHotReload felgoHotReload(&engine);
    • Felgo Hot Reload now automatically adds a DEFINE if you link it. If you use custom DEFINES for that right now, you can replace those with USE_FELGO_HOT_RELOAD now (e.g., to check if you want to load your main QML file or use Hot Reload instead in your main.cpp file).
  • Support for Android 14 and Gradle 8.7 for local development and Cloud Builds. Please perform the following steps to migrate your existing project:
    • Add the following to your android/build.gradle file in the android block:
       android {
           namespace androidPackageName
      
           // ... other existing code
      
           packagingOptions {
               jniLibs {
                   useLegacyPackaging = true
               }
           }
       }
    • Clear your build folder or set the following CMake build flags (this is automatically done when clearing the CMake cache file):

    • Gradle 8.7 requires your app to be built with Java 17. In Qt Creator, you can find this setting under Preferences -> Devices -> Android -> JDK Location.

      If you don't have JDK 17 installed yet, you can download Android Studio or download the standalone JDK here: Download JDK

    • If you use the Firebase Plugin, make sure to update the Google Services in your build.gradle file to 4.4.2 as well:
       ...
       classpath 'com.google.gms:google-services:4.4.2'
       ...
  • Felgo 4.2.0 updates the shipped Qt Creator to version 14.0.1. See the Qt Creator changelog files for more information about new features.
  • The new OAuth 2.0 Plugin for Android and iOS allows to authorize users within your application in an RFC-conform way.

  • You can now handle universal and app links from within your Felgo app. The new App::appLinkUrlReceived() signal provides URL information when your application was opened from an app or universal link (deep link). You can read more about using universal and app links in our new Universal and App Links guide.

New Features

  • The AppListItem now supports a new inset list style to match the look of modern list layouts on iOS. Use the AppListItem::insetStyle property to switch to the new style. You can also customize the look with the new AppListItem::leftMargin, AppListItem::rightMargin, AppListItem::backgroundRadius and AppListItem::firstInSection properties.

     import Felgo
    
     App {
       ListPage {
         model: [
           { name: "Apple", type: "Fruits" },
           { name: "Banana", type: "Fruits" },
           { name: "Potato", type: "Vegetables"}
         ]
         delegate: AppListItem {
           text: modelData.name
           insetStyle: Theme.isIos
         }
         section.property: "type"
         section.delegate: SimpleSection {
           style.showDividers: false
         }
       }
     }
  • You can now read file data in Base64 encoding with FileUtils::readFileBase64. This is useful to upload encoded file data to a backend database or for custom processing in your application.
  • Use the IconButton::activeIconType and IconButton::activeColor to customize the button active state when IconButton::toggle is set to true.
     import Felgo
     import QtQuick
    
     App {
       IconButton {
         toggle: true
         iconType: IconType.staro
         selectedIconType: IconType.starhalffull
         activeIconType: IconType.star
         activeColor: "green"
       }
     }
  • Felgo Hot Reload: Search the Felgo Hot Reload log output with a search string to find specific log messages. You can search case-sensitive, case-insensitive, or use regular expressions. Click the search icon or press CTRL-F (or CMD-F on macOS) to open the search panel.

Improvements

  • Felgo 4.2.0 updates third-party plugin libraries to add the latest features and be compliant with app stores. As usual, please update our iOS frameworks according to the latest releases from the integration guides.
  • The NativeDialog type now supports opening all dialog types that are already available via the NativeUtils API. You can specify all of the dialog properties and add a callback function that will be executed when the corresponding finished signal of the dialog is emitted. Use the new NativeDialog features if you prefer working with callback functions:
  • Updates HttpRequest to return an object with error information in case the request fails. It provides the following new properties: info, ok, clientError, serverError, error, accepted, noContent, badRequest, unauthorized, notAcceptable, notFound, forbidden, fromCache, status, statusType, text, charset, body and header.

Fixes

Other Changes

  • Removes the Flurry plugin with this release, as Flurry stopped operations mid of March 2024. If you are using the Flurry Plugin, consider migrating to Amplitude Plugin or Firebase Plugin for analytics.

v 4.1.0 (2023-06-22)

Highlights Blog Post: Release 4.1.0: Build Qt 6 Apps for WebAssembly, Integrate Firebase Analytics, Gaming Components and SpeechToText

Felgo 4.1.0 adds support for WebAssembly, Firebase Analytics, Felgo Gaming Components, SpeechToText functionality and an improved Felgo Hot Reload connection process.

Felgo 4.1.0 comes as a free update for all Felgo developers.

Highlights

  • You can now build your Qt and Felgo 4 project for WebAssembly and run your application on the web.

    The WebAssembly Kit in Qt 6 and Felgo 4 integrates perfectly with Qt Creator. Similar to building for Desktop, you can build and run the application by pressing the Run button in Qt Creator. Qt Creator will compile the project, start a local web server, deploy your app, and open the the browser to run it.

    You can also use the Felgo Hot Reload GUI to start a Web Client and directly run your Qt Quick project in the browser. All changes to the code are reloaded on the fly - without the need for compilation and deployment to a local web server.

  • The Felgo Games components are now migrated to Qt 6 and ready to take your 2D games to the next level.

    The update includes all the core gaming modules. The following features are currently only available in Felgo 3:

    There are also number of API changes due to underlying changes in Qt 6:

    • The property GameSoundEffect.category no longer exists.
    • The property BackgroundMusic.availability no longer exists.
    • The property BackgroundMusic.autoLoad no longer exists. To delay loading the media file, set the BackgroundMusic::source property only before calling BackgroundMusic::play().

    Lastly, some Felgo Games components used a name that also exists in QtQuick modules. To avoid conflicts due to the identical name, the Felgo types are now renamed with the Game-prefix. The affected Felgo QML types and existing QtQuick types are:

Note: For more information about migrating projects from Felgo 3 to 4, see the migration guide.

  • The Firebase Plugin now includes a new FirebaseAnalytics type, a cross-platform integration of Google’s Firebase Analytics service. This plugin type uses Google Analytics 4 instead of the outdated Universal Analytics and replaces the Google Analytics Plugin.
     import Felgo
     import QtQuick
    
     App {
       FirebaseAnalytics {
         id: analytics
    
         // GAv4 web measurement ID for desktop:
         measurementId: "G-GB8PY1E0JT"
         userId: "USER15"
       }
    
       NavigationStack {
         AppPage {
           title: "Firebase Analytics"
    
           Row {
             AppButton {
               text: "logEvent"
               onClicked: analytics.logEvent("ButtonClicked", { "type": "logEvent" })
             }
             AppButton {
               text: "logScreen"
               onClicked: analytics.logScreen("Firebase Analytics")
             }
           }
         }
       }
     }

New Features

  • You can now use new SpeechToText item to record and transcribe spoken text online or on-device on Android and iOS.
     import Felgo
     import QtQuick
    
     App {
       NavigationStack {
         AppPage {
           title: "Speech to Text"
    
           AppButton {
             id: button
             anchors.horizontalCenter: parent.horizontalCenter
             flat: false
             enabled: SpeechToText.recognitionAvailable
             text: !SpeechToText.recognitionActive ? "Start" : "Stop"
             onClicked: {
               if(!SpeechToText.recognitionActive)
                 SpeechToText.startSpeechToText("en-US")
               else
                 SpeechToText.stopSpeechToText()
             }
           }
    
           Connections {
             target: SpeechToText
             enabled: SpeechToText.recognitionAvailable
             onSpeechToTextResult: (result, isFinal) => {
                                     recognized.text = result
                                   }
           }
    
           AppText {
             id: recognized
             width: parent.width
             anchors.top: button.bottom
             anchors.bottom: parent.bottom
             verticalAlignment: Text.AlignTop
             padding: 10
           }
         }
       }
     }

    Using this functionality requires some additional project configuration. See the SpeechToText documentation for more information.

    Note: To use speech-to-text on your Android device, make sure that you have Google Search und Google SpeechServices installed.

Improvements

  • Enhanced Connection Process for Felgo QML Hot Reload: Previously, the Felgo Hot Reload Client relied on UDP broadcasts within the local network to discover the Felgo Hot Reload server application. However, UDP broadcasts are limited in iOS 16+ and may even be blocked in certain networks. These limitations resulted in occasional connection issues and inconveniences during development, impacting the overall workflow.

    The new solution eliminates UDP broadcasts and enables direct client-to-server connections. Here's how it works:

    • Unique Server Identifier: Each Felgo Hot Reload instance now has a unique server identifier, displayed prominently in the Felgo Hot Reload server application.

    • Direct Connection: In the mobile client app, you can manually enter the server ID of your development computer. This allows the client to directly connect to the specified server without relying on UDP broadcasts.

    • Improved Connection Management: The Felgo Hot Reload Client now remembers previous connections, creating a list of hosts that you can easily choose from for subsequent connections. This eliminates the need to enter the server ID every time and simplifies the process of reconnecting to a known host.

    These changes address the drawbacks of the previous approach while introducing a more reliable and efficient connection method.

  • The SwipeOptionsContainer now provides a better user experience when when opening or closing the swipe options.
  • Adds a new option for NativeUtils::setStatusBarStyle() and Theme::statusBarStyle. Use statusBarStyleCustom to have control over the status bar via native code.
  • The Felgo application does no longer apply a custom font by default. If you are already using native platform fonts in your application, you can thus remove the setting from the main.cpp:
     // Use platform-specific fonts instead of Felgo's default font - this setting is no longer required
     felgo.setPreservePlatformFonts(true);

Fixes

Known Issues

  • The Qt Multimedia backend for Qt 6.4.1 WebAssembly is not fully supported yet. It is currently not possible to play audio or video with the MediaPlayer type. Playing raw audio with the SoundEffect type works as expected.
  • Qt Multimedia Audio Output is not working on Windows. See QTBUG-108383 for a workaround that can be applied globally on your system or locally for the project. The issue has been fixed already. With the next Qt version update of the Felgo SDK, the workaround will not be required anymore.

Felgo Hot Reload

Felgo Live is now Felgo Hot Reload. To migrate, make the following changes in your CMakeLists.txt and main.cpp files:

 find_package(FelgoHotReload REQUIRED)
 target_link_libraries(app PRIVATE FelgoHotReload)

As well as in the cpp FelgoLiveClient is renamed to FelgoHotReload:

 #include <FelgoHotReload>

v 4.0.1 (2023-03-15)

Highlights Blog Post: Release 4.0.1: Support for Apple Sign In and Android Content URI, Improved Felgo Live Permissions on macOS

Felgo 4.0.1 adds support for the Apple Sign In Plugin, allows you to use content:// URIs on Android in Qt Quick, and includes better app permission handling for Felgo Hot Reload on macOS.

Felgo 4.0.1 comes as a free update for all Felgo developers.

New Features

  • The Apple Sign In Plugin with the AppleSignIn and AppleSignInButton QML types is now available on iOS.
     import QtQuick
     import Felgo
    
     App {
       AppPage {
         Column {
           AppleSignInButton {
             id: appleSignInButton
           }
    
           AppText {
             text: !appleSignInButton.visible
                   ? "Apple Sign-in unavailable."
                   : appleSignInButton.appleSignIn.isLoggedIn
                     ? "Signed in with Apple user: " + appleSignInButton.appleSignIn.userName
                     : "Click above button to sign in with Apple user"
           }
         }
       }
     }
  • The AdMobBannerNative type is now available to display ad banners inline. To use the type on iOS, it is required to change the graphics API to OpenGL:
     #include <QQuickWindow>
    
     int main(int argc, char *argv[])
     {
       // Set OpenGL rendering
       QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGLRhi);
    
       QApplication app(argc, argv);
       …
     }

Improvements

  • You can now use Android content:// URIs as source for an AppImage, for example when accessing and showing the NativeUtils::galleryPhotos or using the ImagePicker.
     import Felgo
     import QtQuick
    
     App {
       NavigationStack {
         AppPage {
           id: page
           title: qsTr("Choose Photos")
    
           // right bar item to accept selection
           rightBarItem: TextButtonBarItem {
             text: "Next"
             enabled: imagePicker.selectedCount > 0
    
             // your app will probably pop the photo selection page from the stack to move on
             // this example only logs the selected photos
             onClicked: console.debug("SELECTED:", JSON.stringify(imagePicker.selection))
           }
    
           // image picker view for photo selection
           ImagePicker {
             id: imagePicker
             anchors.fill: parent
           }
         }
       }
     }
  • The Felgo Hot Reload Client now better handles app permissions on macOS Monterey and later.

Fixes

  • The Qt Bluetooth APIs do no longer require the Qt Location permission on Android 12 or later.
  • Stability improvements for Felgo Hot Reload.

v 4.0.0 (2023-02-09)

Highlights Blog Post: Release 4.0: Create Beautiful Cross-Platform Apps with Qt 6

Felgo 4.0.0 makes it possible to develop Felgo apps with all the latest features of Qt 6.4.1. The release also brings support for the CMake build system, includes a custom build of the Qt Location module and updates Felgo controls to use Qt Quick Controls 2.

Felgo 4.0.0 comes as a free update for all Felgo developers and can be installed side-by-side to Felgo 3.

You can download the Felgo 4 installer here.

Highlights

The switch to Felgo 4 and Qt 6 comes with many different changes for various Qt Modules and Felgo components. The following list summarizes the most important topics:

  • Build System Update to CMake: For Qt 6 and Felgo 4, CMake is now the preferred build system. You can keep your qmake project configuration initially, but it is recommended to upgrade existing Felgo projects to the CMake build system. This is because some features, like multi-ABI builds on Android, are not supported with qmake and Qt does not plan to further develop and improve qmake support.

  • Felgo Controls with Qt Quick Controls 2.0: Qt Quick Controls 1 are no longer available with Qt 6. Thus, all Felgo controls now use Qt Quick Controls 2. However, the base Qt Quick Controls now come with an own icon property. As a result, it is now required to use a new iconType property for configuring an IconType in Felgo controls. This affects various QML types like AppIcon, AppButton, AppCheckBox, AppActivityIndicator, ActivityIndicatorBarItem, FloatingActionButton, IconButton, IconButtonBarItem, NavigationItem or SearchBar. In addition, the Felgo Page, ScrollIndicator and Icon types are now renamed to AppPage, AppScrollIndicator and AppIcon to avoid naming collisions with the respective Qt types:
     import Felgo
     import QtQuick
    
     App {
       Navigation {
         NavigationItem {
           title: "Home"
           iconType: IconType.home             // Change icon to iconType
    
           AppPage {                           // Change Page to AppPage here
             Column {
               anchors.centerIn: parent
    
               AppButton {
                 text: "Click me"
                 iconType: IconType.handodown  // Change icon to iconType
               }
               AppCheckBox{
                 text: "Enabled?"
                 iconType: IconType.adjust     // Change icon to iconType
               }
             }
           }
         }
       }
     }
  • Qt Location and Maps with MapLibreGL: The Qt Location module is currently not available with Qt 6. Felgo 4 thus provides a custom build of the module to support map features with the AppMap type. However, due to changes in Qt's rendering system, the MapBoxGL Plugin is not available anymore. As an alternative for rendering vector maps, Felgo 4 includes a new Maplibre GL Plugin. Other map plugins for tile-based rendering of maps are supported like before.

  • Changes to Qt Modules and QML: Qt 6 brings many changes for various Qt Modules and also includes some differences for Qt Quick and QML. For example, you no longer have to specify module version numbers for import statements. Also, Qt Quick now operates in high-dpi mode by default and some of the QML and C++ types have a slightly different API. See the Qt documentation for a full list of Changes to Modules in Qt 6 and a Qt 6 Porting Guide.

For detailed information on all the changes and how to migrate your Felgo 3 project, see the Felgo 4 update guide: Felgo 4 Update Guide and Project Migration for Qt 6.

Apart from the necessary changes for migration to Qt 6, the Felgo 4 release also includes new features, improvements and fixes for the Felgo SDK, which are listed in the sections below.

New Features

Improvements

  • The AppButton now allows setting the (background, border & text) color for the hovered state.

Fixes

  • Fixes incorrect AppToolTip position when using long bubble texts.
  • Fixes missing placeholder text when canceling AppTextEdit input on iOS with an empty field.
  • The Notification Plugin now supports Android 12+ (API level 31+) devices and build targets.
  • The NativeUtils::share functionality for iOS and Android is updated to properly support sharing text, web links or files with the native share dialog of the latest OS versions.
  • Fixes behavior problems when combining the PullToRefreshHandler with a ListView that has additional top spacing from a header item or top margin configuration.
  • Fixes the App::tablet property to already deliver a correct value when used in the Component.onCompleted handler of the app window.

Older Felgo Releases

Felgo 3 (Qt 5.15) Releases

See the Felgo 3 Releases for more information on the currently available version of Felgo 3.

Felgo 3 with Qt 5.15 can still be used independent from Felgo 4. It is possible to install Felgo 3 side-by-side with Felgo 4 or other Qt installations.

You can thus keep your Felgo 3 project until you are ready to migrate to Qt 6 and Felgo 4.

Qt_Technology_Partner_RGB_475 Qt_Service_Partner_RGB_475_padded