Actively maintained
12 documented releases, the latest being v6.5.0 on Oct 27, 2026. Every one of them is a free update for existing license holders.
-"openAIConfig": {
+"aiConfig": {
- "enableChat": true,
- "supabaseUrl": "<https://xxxx.supabase.co>",
- "supabaseAnonKey": "eyJhbGciOi...",
+ "n8nBaseUrl": "<https://automation.fluxbuilder.com/>",
+ "n8nApiKey": "YOUR_N8N_API_KEY",
"revenueAppleApiKey": "...",
"revenueGoogleApiKey": "...",
"revenueProductsIos": ["gpt_3999_1y_1w0", "gpt_399_1m_1w0"],
"revenueProductsAndroid": ["gpt_pro_v1"],
"enableSubscription": false,
- "enableInputKey": false,
+ // Chat screen customization, all optional:
+ // - avatar/chatBackgroundImage: null (or omitted) keeps the built-in
+ // default image, "" hides it, any other value is used as-is.
+ // - agentName/welcomeMessage: null/"" (or omitted) hides them.
+ "avatar": null,
+ "chatBackgroundImage": null,
+ "agentName": null,
+ "welcomeMessage": null,
}serverConfig also switches to n8n:"serverConfig": {
"url": "<https://chatgpt.inspireui.com>",
"type": "gpt",
- "supabaseUrl": "<https://xxxx.supabase.co>",
- "supabaseAnonKey": "eyJhbGciOi...",
+ "n8nBaseUrl": "<https://automation.fluxbuilder.com/>",
+ "n8nApiKey": "YOUR_N8N_API_KEY",
}

android/build.gradle.kts, android/app/proguard-rules.pro. If you see this warning on Google Play, apply the same two changes to your project.supportedCurrencies field to each payment gateway configuration (e.g., stripeConfig, paypalConfig, razorpayConfig, payStackConfig, and cashOnDeliveryConfig).supportedCurrencies list.supportedCurrencies is not set or is an empty list, the payment gateway remains available for all currencies..jpg?table=block&id=406cbb07-4f62-806d-907d-e16a8832c39e&cache=v2&spaceId=adfc7c52-309f-45b9-8822-60b33369c98c)
.jpg?table=block&id=406cbb07-4f62-8073-a7b0-cb9614aa2686&cache=v2&spaceId=adfc7c52-309f-45b9-8822-60b33369c98c)
"stripeConfig": {
...
"dokanStripeConnect": false,
+ /// Optional, works for every payment gateway config (stripeConfig,
+ /// paypalConfig, razorpayConfig, payStackConfig, cashOnDeliveryConfig, ...).
+ /// Hides the gateway when the current currency is not in the list.
+ /// Not set or empty: the gateway is shown for every currency.
+ /// "supportedCurrencies": ["USD", "EUR", "GBP"],
},
...
"payStackConfig": {
...
+ /// PayStack is hidden when the current currency is not in this list
'supportedCurrencies': ['ZAR'],
},


filterConfig.sectionOrder: list of section keys that controls which filter sections are shown and their order. It replaces the show* keys in env.dart. Old apps that still have show* (and no sectionOrder) keep working, and FluxBuilder migrates show* to sectionOrder.filterConfig.collapsedSections (optional, default []): sections listed here start collapsed while nothing is selected in them. A section with a selection always starts expanded. Same keys as sectionOrder, layout is ignored. "filterConfig": {
- "showLayout": true,
- "showSort": true,
- "showPriceSlider": true,
- "showCategory": true,
- "showListingLocation": true,
- "showBrand": true,
- "showTag": true,
- "showFeature": true,
- "showAttribute": true,
+ /// Sections to display and their order. Only the listed sections are shown.
+ "sectionOrder": [
+ "layout", "sort", "listingLocation", "price", "category",
+ "brand", "tag", "attribute", "feature",
+ ],
+
+ /// Sections that start collapsed (a section with a selection still starts expanded)
+ /// "collapsedSections": ["brand", "tag", "attribute", "feature"],
+ "collapsedSections": [],
+
"supportedSortByOptions": null,
},
Show Store Products: Display related products from the same vendor on the Listing Details screen in Listeo and MyListing apps. (For Listeo, the Store Section must be enabled.)Default Expand Coupons: Display the Coupon Block expanded by default on the Listing Details screen, allowing users to easily discover and apply available coupons before proceeding with their booking.Default Expand Store Information (Listeo + Dokan): Display vendor information directly on the Listing Details screen, making it easier for users to identify the vendor associated with each listing.Show Video Section and Default Expand Video: Display a Video section in the Product Details.Show Short Description: show or hide the Short Description across all Product Detail layouts.productDetail.showVideo: show/hide the video in the image slider.productDetail.videoInGallery: show/hide a standalone Video section below the images. On MyListing, it also controls the Video content block.productDetail.expandVideo: expand the standalone Video section by default (only when videoInGallery is true). "productDetail": {
/// Show/hide video in the image slider
"showVideo": true,
+ /// Show/hide a standalone Video section below the images
+ "videoInGallery": false,
+ /// Expand the standalone Video section by default (only when "videoInGallery": true)
+ "expandVideo": true,
...
}
startTime and endTime are optional. Include Z or an offset, values without it are treated as UTC.endTime is only an estimate for the countdown, it does not lift the maintenance. Set enable to false (or remove the key) to end it.startTime when possible, so devices already have it cached when the maintenance starts.maintenanceConfig is re-applied mid-session. Other Remote Config keys still apply on the next app open.enableRemoteConfigFirebase lets Remote Config override other config keys too.enableRemoteConfigFirebase is true in env.dart and the maintenanceConfig key is published with "enable": true.+ "enableRemoteConfigFirebase": true,maintenanceConfig key in Firebase Remote Config:{
"enable": true,
"title": "Under Maintenance",
"message": "We'll be back shortly. Thank you for your patience!",
"startTime": "2026-10-07T02:00:00Z",
"endTime": "2026-10-07T04:00:00Z"
}
android/app/src/main/res/values-v31/styles.xml, values-night-v31/styles.xml, configs/native_splash.yaml (new android_12 section) and configs/splash_android12_transparent.png.android_12 section in configs/native_splash.yaml. If android_12.image is removed, the launcher icon shows again on Android 12+.dart run flutter_native_splash:create --path=configs/native_splash.yaml is safe and keeps the icon hidden.android_12.image with a 1152x1152 image whose content fits within a centered 768px circle.autoSelectFirstAttribute is false.levels in Firebase Remote Config had invalid values. Invalid entries are now skipped, and an error in the post-login Firebase/Loyalty step no longer blocks a successful login.configs/env.props file (if not input, the app will crash):
compileSdk from 36 to 37flutter --versionflutter channel stable
flutter upgrade --force
flutter clean
flutter pub getconfigs/env.props file (if not input, the app will crash):
Supported: Listeo App
EnableNativeCheckout is true."paymentConfig": {
/// Only work when `EnableNativeCheckout` is true.
"EnableHybridPayment": true,
}Supported: Listeo App
BookingPaymentScreen to complete payment. A skeleton loading state has also been added for Thai PromptPay.Supported: Listeo App

Supported: Listeo App
Pay for order now follows WooCommerce needs_payment(): pending and failed orders can be paid. 
Supported: Listeo + Dokan App

"productDetail": {
/// Only for Listeo
+ "expandVendorInfo": true,
}
"productDetail": {
// Listing only (Listeo/MyListing): Listeo requires Store Section to be enabled
+ "showRelatedVendorProducts": true,
}Supported: Listeo App

"productDetail": {
+ "expandCoupon": true,
}Supported: Listeo App

Supported: Listeo App
ListeoEditorFieldsSection to clearly identify grouped listing fields and make the editor easier to scan and navigate.

"advanceConfig": {
"versionCheck": {
"enable": true,
"iosId": null,
"iOSAppStoreCountry": null,
"androidId": null,
"androidPlayStoreCountry": null,
+ "forcedUpdate": false,
+ "dialogTitle": null,
+ "dialogText": null,
+ "updateButtonText": null,
+ "dismissButtonText": null,
}
}"versionCheck": {
"enable": true,
"iosId": null,
"iOSAppStoreCountry": null,
"androidId": null,
"androidPlayStoreCountry": null,
"forcedUpdate": false,
"dialogTitle": null,
"dialogText": null,
"updateButtonText": null,
"dismissButtonText": null
}"versionCheck": {
"enable": true,
"iosId": null,
"iOSAppStoreCountry": null,
"androidId": null,
"androidPlayStoreCountry": null,
"forcedUpdate": false,
"dialogTitle": "New version availale",
"dialogText": "Would you like to update it now?",
"updateButtonText": "Update Now",
"dismissButtonText": null
}"versionCheck": {
"enable": true,
"iosId": null,
"iOSAppStoreCountry": null,
"androidId": null,
"androidPlayStoreCountry": null,
"forcedUpdate": true,
"dialogTitle": "App Update Required",
"dialogText": "Please update to continue using the app",
"updateButtonText": "Update",
"dismissButtonText": null
}"searchConfig": {
+ // Required Extended license
+ "imageSearchUrl": "image-search-endpoint",
+ "imageSearchApiKey": null
}id in Firestore chat room users.id with email fallback for backward compatibility.
{
"HorizonLayout": [
{
"layout": "threeColumn",
+ "showSeeAll": false
}
],
"VerticalLayout": {
+ "showSeeAll": false
}
}env.dartfacebookAppId before login"loginSetting": {
"showGoogleLogin": true,
+ "googleWebClientId": "YOUR_GOOGLE_WEB_CLIENT_ID.apps.googleusercontent.com",
}
configs/env.props file (if not input, the app will crash):
flutter --versionflutter channel stable
flutter upgrade --force
flutter clean
flutter pub getconfigs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
Supported: All Apps
com.revenuecat.purchases:purchases to the latest version.

Supported: Listing , ⚠️ BREAKING CHANGE
"defaultSettings": [
...,
+ "addListing",
...
]addListing or this menu item will be missing.
Supported: Listeo
"productDetail": {
+ "expandCalendarView": true
}

Supported: Listeo

Supported: Listeo Booking
Supported: Listeo Booking

Supported: All Apps
"TabBarConfig": {
+ "showMinimize": true
}
Supported: All Apps
"TabBarConfig": {
+ "liquidGlass": true
}
Supported: All Apps
"TabBarConfig": {
+ "floating": true
}
Supported: All Apps
"authConfig": {
"providers": {
"sms": {
+ "otpLength": null // 6 as default
}
}
}
Supported: Woo/Shopify
{
"layout": "videos",
"icon": "assets/icons/tabs/icon-videos.png",
"styleVersions": ["1", "2"],
+ "order": "asc",
+ "orderby": "date"
}Supported: All Apps
"filterConfig": {
"showLayout": true,
"showSort": true,
"showPriceSlider": false,
"showCategory": false,
"showListingLocation": false,
"showBrand": false,
"showTag": false,
"showFeature": false,
"showAttribute": false,
"supportedSortByOptions": ["date", "price"]
}supportedSortByOptions accepts: onSale, featured, date, price, title, popularity, rating, menu_order, rand, relevance.
Supported: All Apps
Supported: All Apps
Supported: All Apps

Supported: All Apps
Supported: All Apps
showPrice control in product detail settings for flexible price display behavior."productDetail": {
+ "showPrice": true
}
Supported: All Apps
"secureScreenConfig": {
"enable": false,
"screens": []
}enable=true with empty screens to block app-wide.enable=true with screens list to block specific routes only.salesiq_mobilisten to fix iOS build.configs/env.props file (if not input, the app will crash):flutter --versionflutter channel stable
flutter upgrade --force
flutter clean
flutter pub getconfigs/env.props file (if not input, the app will crash):
Supported: Listing (Listeo/ListingPro App)


lib/env.dart and configure as below: "productDetail": {
+ "expandFAQs": true,
}Supported: Listing (Listeo App)
Supported: Listing (Listeo)

Supported: Listing (Listeo/ListingPro/MyListing App)




Supported: Listing (Listeo App)
Supported: All frameworks

Supported: All frameworks

Supported: All frameworks
imageCompare homepage layout widget for before/after showcase. Perfect for showcasing before/after transformations directly on your Homepage. Makes your app look professional!+ {
+ "layout": "imageCompare",
+ "beforeImage": "...",
+ "afterImage": "...",
+ "trackWidth": 3.0,
+ "borderRadius": 12.0,
+ }Supported: All frameworks
"webViewConfig": {
+ "handleDynamicLink": true,
}Supported: WooCommerce, MultiVendor (Dokan/WCFM), Shopify, Listing (Listeo/ListingPro/MyListing), Magento, Opencart, Strapi, Prestashop, Notion, BigCommerce, Haravan, GPT, WordPress

"authConfig": {
+ "showContinueAsGuestInLogin": false,
}Supported: All frameworks | ⚠️ BREAKING CHANGE
authConfig structure to support flexible sign-up fields and modern provider config.+ "authConfig": {
+ "defaultMethod": "emailPassword",
+ "providers": { ... },
+ "registration": {
+ "email": {"show": true, "require": true},
+ "firstName": {"show": true, "require": true},
+ "lastName": {"show": true, "require": true},
+ "phone": {"show": false, "require": false},
+ "username": {"show": true, "require": false},
+ },
+ }Supported: All frameworks
Supported: All frameworks | ⚠️ BREAKING CHANGE
advanceConfig into dedicated currencyConfig."advanceConfig": {
- "DefaultCurrency": ...,
- "Currencies": ...,
- "EnableWOOCSCurrencySwitcher": true
}
+ "currencyConfig": {
+ "defaultCurrencyCode": "USD",
+ "currencies": [...],
+ "enableWOOCSCurrencySwitcher": true,
+ }MODIFY_AUDIO_SETTINGS).configs/env.props file (if not input, the app will crash):
Supported: Listing (Listeo)

Supported: Listing (Listeo/ListingPro/MyListing)

Supported: All frameworks
easy_paypal package to replace the old PayPal Data Collector SDK (com.paypal.android.sdk:data-collector) with the policy-compliant Braintree version (com.braintreepayments.api:data-collector:4.31.0). This resolves Google Play rejections caused by the old SDK collecting device location without prominent disclosure.Supported: All frameworks
local_auth_android to a fixed version to resolve a build failure introduced by Android Gradle Plugin 9+ (AGP 9), where local_auth_android was missing compileSdk in its build.gradle.kts. This fixes the NullPointerException crash during Gradle configuration.Supported: All frameworks (Extended source code only)
stripe_android and stripe_ios requiring compileSdk ≥ 36 due to updated androidx dependencies (activity, core-ktx, browser, navigationevent), while the project was still targeting android-35.Supported: WooCommerce, MultiVendor (Dokan/WCFM)



Supported: WooCommerce, MultiVendor (Dokan/WCFM)

easy_paypal SDK — replaces com.paypal.android.sdk:data-collector with com.braintreepayments.api:data-collector:4.31.0 to comply with Google Play's User Data and Prominent Disclosure policylocal_auth_android to a compatible version to fix build failures with Android Gradle Plugin 9+.stripe_android and stripe_ios required compileSdk ≥ 36 due to updated androidx dependencieshttps://domain/product/slug and https://domain/product/slug/ are now supportedconfigs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
connectivity_plus packageconfigs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
flutter --versionflutter channel stable
flutter upgrade --force
flutter clean
flutter pub getconfigs/env.props file (if not input, the app will crash):
flutter precache --iosSupported: All frameworks | ⚠️ BREAKING CHANGE
dynamicLinkConfig in lib/env.dart:"dynamicLinkConfig": {
"type": "selfhosted",
"serviceConfigs": {
"selfhosted": {
"supportedDomains": ["yourdomain.com"],
"handleHttpsLinks": true,
"handleCustomScheme": true,
"customScheme": "fluxstore",
},
},
},apple-app-site-association (no extension) to https://yourdomain.com/.well-known/apple-app-site-association with Content-Type: application/jsonassetlinks.json to https://yourdomain.com/.well-known/assetlinks.jsonwebsiteUrl and websiteDomain in configs/env.props/product/*, /product-category/*, /collections/*, /brand/*, /product-tag/*, /store/*, /listing/*, /blog/*, /post/*Supported: Listing (Listeo) | ⚠️ BREAKING CHANGE
"booking" to the defaultSettings array in lib/env.dart or lib/config/config_xx.json when upgrading:"defaultSettings": [
...
+ "booking",
...
],Supported: Listing (Listeo, ListingPro, MyListing)

productDetail in lib/env.dart:"productDetail": {
// Only for Listeo
"expandEventsCategories": true,
"expandServicesCategories": true,
"expandRentalsCategories": true,
"expandClassifiedsCategories": true,
// Only for FluxStore Listing (ListingPro/MyListing)
"expandRegions": true,
"expandFeatures": true,
// Not supported for Listeo, MyListing
"expandTags": true,
}Supported: All frameworks
emptyImage and boxFit options to wishListConfig in lib/env.dart to customize the image shown on an empty Wishlist screen"wishListConfig": {
...
+ "emptyImage": "assets/images/empty_wishlist.png",
+ "boxFit": "contain",
},
Supported: All frameworks (except GPT, WordPress, Vendor Admin, Delivery, WebApp)
.png?table=block&id=330cbb07-4f62-806b-b81e-c12b514aa683&cache=v2&spaceId=adfc7c52-309f-45b9-8822-60b33369c98c)
null, the default RTL behavior applies).png?table=block&id=330cbb07-4f62-809c-be85-faa7ad23dde0&cache=v2&spaceId=adfc7c52-309f-45b9-8822-60b33369c98c)
imageOnLeft option for product layouts using "layout": "listTile" in lib/config/config_xx.json{
"layout": "listTile",
+ "imageOnLeft": false,
}.png?table=block&id=330cbb07-4f62-801f-a76a-db93c89af009&cache=v2&spaceId=adfc7c52-309f-45b9-8822-60b33369c98c)

Supported: Listing (Listeo)
Supported: Listing (Listeo)


EnableReview renamed to EnablePreview in checkout screen config (all 88 translation files updated) — if you override this key in env.dart or config_xx.json, rename it accordinglyflutter_facebook_auth and facebook_app_events to latest versions — requires Xcode 26.x or later to build for iOScategoryMenuShowDepth config missing from some category menu layoutsconfigs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
flutter precache --ioslib/env.dart file as below "searchConfig": {
/// Enable Ajax Search using either AjaxSearchPro or FiboSearch plugin
/// ref: https://support.inspireui.com/help-center/articles/35/37/196/ajax-search-pro
"ajaxSearch": {
"enable": true,
"plugin": "fiboSearch" //fiboSearch, ajaxSearchPro
},
/// Enable search by SKU in search screen
"enableSkuSearch": true
}
lib/env.dart file as below{
"whatsAppOrderConfig": {
"phoneNumber": "12124567890",
"message": "Hello, I would like to place an order. Here are the details:\n\n{order_details}\n\nTotal Amount: {total_amount}\n\nThank you!",
"paymentMethodIds": [
"lwc-whatsapp-order"
],
"autoOpenWhatsAppAfterOrder": false
}
}{billing_name}, {billing_email}, {billing_phone}, {billing_address}, {shipping_name}, {shipping_email}, {shipping_phone}, {shipping_address}, {order_id}, {order_details}, {total_amount}lib/env.dart file as below: "splashScreen": {
"enable": true,
/// duration in milliseconds, used for all types except "rive", "flare" and "video"
"duration": 2000,
/// Type should be: 'fade-in', 'zoom-in', 'zoom-out', 'top-down', 'rive',
/// 'flare', 'static', 'video'
"type": "video",
"image": "assets/videos/splashscreen.mp4", // https://demo.mstore.io/wp-content/uploads/2025/09/splashscreen.mp4
/// AnimationName's is used for 'rive' and 'flare' type
"animationName": "fluxstore",
"boxFit": "contain",
"backgroundColor": "#ffffff",
"paddingTop": 0,
"paddingBottom": 0,
"paddingLeft": 0,
"paddingRight": 0,
},lib/env.dart file as below:"EnableRentalProductsWoo": true,
lib/env.dart file as below:
"onBoardingConfig": {
'enableOnBoarding': true,
'version': 1,
'autoCropImageByDesign': true,
'isOnlyShowOnFirstTime': true,
'showLanguage': true,
'showLanguagePopup': false,
+ // Currently, only available for version 1
+ 'showSignInSignUp': true,
},
file/env.dart file "productCard": {
"defaultImage": 'assets/images/no_product_image.png',
'showShortDescription': true,
...
},lib/config/config_en.json file, for example:{
"HorizonLayout":[
{
"layout":"", ///twoColumn, threeColumn, fourColumn, card, saleOff, listTile, quiltedGridTile, carousel
"showShortDescription":true,
...
}
],
"VerticalLayout":{
"layout":"", ///pinterest, menu, card, columns, columnsWithFilter, topProducts, menuWithCustomCategories
"showShortDescription":true,
...
}
"TabBar": [
{
"layout": "category",
"categoryLayout": "card", ///card, sideMenuWithSub, columns, topMenu, animation, grid, sideMenuWithSub,
///sideMenuWithGroup, ///multi-level, ///fancy-scroll
"icon": "assets/icons/tabs/icon-category.png"
},
],
...
}
lib/config/config_en.json as below: {
"name": "Brands",
"layout": "brand",
...
"imageBoxFit": "contain",
"topBrand": [] // ID of brands
},OneSignalNotificationServiceExtension to adapt with Xcode 26configs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
flutter --versionflutter channel stable
flutter upgrade --force
flutter clean
flutter pub getconfigs/env.props file (if not input, the app will crash):
flutter precache --ioscompileSdkVersion 35 to compileSdkVersion 36ndkVersion "25.1.8937393" to ndkVersion "28.1.13356709"Edge-to-edge may not display for all users:
Your app uses deprecated APIs or parameters for edge-to-edge:


lib/env.dart as belowMap<String, dynamic> environment = {
...
"offlineModeConfig": {
"enable": true,
}
...
};

lib/env.dart, and set true or false for showPhoneNumber as below "productCard": {
"showPhoneNumber": true,
...
},
lib/env.dart, and set true or false for hideAddress as below: "productCard": {
'hideAddress': true/false,
},hideAddress directly for each design layout in lib/configs/con_en.json file as below:{
"HorizonLayout":[
{
"layout":"", ///twoColumn, threeColumn, fourColumn, card, saleOff, listTile, quiltedGridTile, carousel
"hideAddress":true/false,
...
}
],
"VerticalLayout":{
"name": "Vertical Layout",
"layout":"", ///pinterest, menu, card, columns, columnsWithFilter, topProducts, menuWithCustomCategories
"hideAddress":true/false,
...
}
"TabBar": [
{
"layout": "category",
"categoryLayout": "card", ///card, sideMenuWithSub, columns, topMenu, animation, grid, sideMenuWithSub,
///sideMenuWithGroup
"icon": "assets/icons/tabs/icon-category.png"
},
],
...
}
lib/env.dart, and configure as below: "productDetail": {
...
"layout": "flatStyle",
...
}lib/configs/config_en.json and add “video” for “Background” as below: "Background": {
"height": 1,
"color": "#026DCD",
"image": "https://trello.com/1/cards/5dc3b80702a7994eec2ea5d0/attachments/5dc3b80802a7994eec2ea5d1/download/woman.jpg",
+ "video": "https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4",
+ "fit": null, // For Image only
"isScrollable": false
},lib/configs/config_en.json and set “isScrollable” as below: "Background": {
"height": 0.35,
"color": "#026DCD",
"image": "https://trello.com/1/cards/5dc3b80702a7994eec2ea5d0/attachments/5dc3b80802a7994eec2ea5d1/download/woman.jpg",
+ "isScrollable": true
},lib/env.dart, and then configure as below: {
"type": "image",
"wrap": true,
"horizontalItem": false,
"columns": 4,
"layout": "category",
"marginLeft": 15.0,
"marginRight": 15.0,
"marginTop": 10.0,
"marginBottom": 10.0,
"separateWidth": 24.0,
"shadow": null,
"gradientStyle": false,
"items": [
{
"originalColor": false,
"backgroundColor": null,
"title": null,
"name": null,
"keepDefaultTitle": false,
"colors": [
"ff3cc2bf",
"ff3cc2bf"
]
},
"productCategoryMenuStyle": "tab",
"categoryMenuShowDepth": true
}categoryMenuShowDepth : only support productCategoryMenuStyle that is "tab"lib/env.dart as below: "advanceConfig": {
+ /// systemDefault, exitImmediately, requireConfirmPopup, requireDoubleTap
+ "exitAppType": "requireConfirmPopup",
},

lib/env.dart, and set as below:{
"productCard": {
+ "typeShouldOpenInWebview": [],
"boxFit": "cover",
"boxShadow": null,
"defaultImage": "assets/images/no_product_image.png"
},
} "typeShouldOpenInWebview": [
"grouped",
"auction",
"external",
"subscription",
"appointment",
]lib/env.dart and configure as below: "advanceConfig": {
- /// Disable inAppWebView to use webview_flutter
- /// so webview can navigate to external app.
- /// Useful for webview checkout which need to handle payment in another app.
- "inAppWebView": false,
- 'AlwaysClearWebViewCache': false,
- 'AlwaysClearWebViewCookie': false,
- "WebViewScript": "",
},
+ "webViewConfig": {
+ "webViewMode": "webViewFlutter", // `inAppWebView` or `webViewFlutter`
+ "alwaysClearWebViewCache": false,
+ "alwaysClearWebViewCookie": false,
+ "webViewScript": "",
+ /// List of domains that should open the external app instead of the webview.
+ /// Just add the domain name only, do not add full URL. For example: "example.com"
+ /// If not set, we will use our default list from [kExternalDomains]
+ "externalDomains": [],
+ /// List of domains that should be loaded in the webview.
+ /// If the list is empty, all domains will be opened in the webview if it is
+ /// not in [externalDomains]. Otherwise, if the domain is not in this list, it
+ /// will be opened in the external browser.
+ /// Just add the domain name only, do not add full URL. For example: "example.com"
+ "internalDomains": [],
+ },const kExternalDomains = [
'wa.me', // Whatsapp
'wa.link', // Whatsapp
'api.whatsapp.com', // Whatsapp
'm.me', // Messenger
'messenger.com', // Messenger
'www.messenger.com', // Messenger
'ig.me', // Instagram
'instagram.com', // Instagram
'www.instagram.com', // Instagram
'x.com', // X
'facebook.com', // Facebook
'www.facebook.com', // Facebook
'youtube.com', // Youbute
'www.youtube.com', // Youbute
'youtu.be', // Youbute
't.me', // Telegram
'telegram.org', // Telegram
'play.google.com', // Google play
'apps.apple.com', // App store
'zalo.me', // Zalo
];

productListItemHeight config in Animation Category LayoutlineHeight in ProductTitletextarea for WooCommerce product addonsconfigs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
lib/env.dart as below: "dynamicLinkConfig": {
"type": "selfhosted",
},lib/configs/config_en.json as below:"TabBar": [
{
"layout": "videos",
"styleVersions": [ // Add the versions you want to display here. You can arrange them in any order you prefer. If not set, only version 1 will be used as the default.
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"icon": "assets/icons/tabs/icon-videos.png"
}


lib/configs/config_en.json as below:{
"HorizonLayout":[
{
"layout":"", ///twoColumn, threeColumn, fourColumn, card, saleOff, listTile, quiltedGridTile, carousel
"showProductCardCategory":true,
"showListingType":true,
...
}
],
"Vertical Layout":{
"layout":"", ///pinterest, menu, card, columns, columnsWithFilter, topProducts, menuWithCustomCategories
"showProductCardCategory":true,
"showListingType":true,
...
}
"TabBar": [
{
"layout": "category",
"categoryLayout": "card", ///card, sideMenuWithSub, columns, topMenu, animation, grid, sideMenuWithSub,
///sideMenuWithGroup, ///multi-level, ///fancy-scroll
"icon": "assets/icons/tabs/icon-category.png"
},
],
...
}lib/env.dart as below: "productCard": {
"defaultImage": 'assets/images/no_product_image.png',
"showProductCardCategory": true,
"showListingType": true,
...
},
lib/env.dart as below: "advanceConfig": {
...,
"Currencies": [
...,
{
'symbol': '\ue900',
'decimalDigits': 2,
'symbolBeforeTheNumber': true,
'currency': 'Saudi Riyal',
'currencyCode': 'SAR',
}
]
}
lib/env.dart as below: "afterShip": {
+ "enabled": true,
"tracking_url": "https://fluxstore.aftership.com", // Old URL, not using if `custom_tracking_url` is not empty
+ "custom_tracking_url": "https://fluxstore.aftership.com/{slug}/{trackingNumber}", // Default null
},lib/configs/config_en.json as below: {
"time": 5,
"items": [
{
"id": "[#6ade0]",
"image": "https://trello.com/1/cards/685321344e242df4e72be312/attachments/685b60f57568cc0b3a6825c8/download/David_Arizona_2025_-_IG_Reels_Promo_Voice_Actors.jpg",
"video": "https://animewonderfest.com/wp-content/uploads/2025/06/IG-Reel-arizona-Promo-David-Matranga.mp4"
},
{
"id": "[#aa32b]",
+ "time": 15, // default null
"image": "https://trello.com/1/cards/685321344e242df4e72be312/attachments/685b6044be49b99d81f5342b/download/Matthew_Promo_-_Arizona_2025_-_Reels_-_Announcement_Posts.jpg",
"video": "https://animewonderfest.com/wp-content/uploads/2025/06/IG-Announcement-Arizona-Promo-Matthew-Rudd.mp4"
}
],
"limit": 10,
"layout": "instagramStory",
"usePath": false,
"itemWidth": 100,
"marginTop": 10,
"hideAvatar": false,
"itemHeight": 200,
"marginLeft": 15,
"viewLayout": "media",
"hideCaption": false,
"itemSpacing": 16,
"marginRight": 15,
"marginBottom": 10,
"enableBackground": false,
"itemBorderRadius": 10
}lib/env.dart as below: "vendorConfig": {
...
/// Show Register by Owner (Only for Fluxstore Listing)
"OwnerRegister": true/false,
...
}

lib/configs/config_en.json as below for: {
"layout": "logo",
"showSearch": true,
"showLogo": true,
"productType": true/false,
...
}, {
"layout": "header_search",
"productType": true/false,
...
}, {
"layout": "header_text",
"productType": true/false,
...
}, {
"layout": "bannerImage",
"title": {
"productType": true/false,
...
},
...
}, "categoryConfig": {
// Enable this option when the store has more than 100 category items
"enableLargeCategories": true,
"deepLevel": 3,
},MultiSiteSwitcherLayout. This layout enables a fully customizable UI for selecting between multiple storefronts within a single mobile app.MultiSiteSwitcherConfig: Defines the layout’s global settings and style.MultiSiteSwitcherStoreConfig: Handles individual store styling and folder mapping.MultiSiteSwitcherLayout: The main widget that renders the switcher UI based on the config.env.dart:showAppBarSwitcherSite under multiSiteConfigs.lib/env.dart:"multiSiteConfigs": [
{
"configFolder": "us_store",
"showAppBarSwitcherSite": true
}
]
lib/configs/config_en.json as below:{
"layout": "multiSiteSelection",
"backgroundColor": "#FFEAD5",
"borderRadius": 10.0,
"widthButton": 120.0,
"heightButton": 35.0,
"spacing": 10.0,
"stores": [
{
"folder": "us_store",
"image": "https://example.com/us-flag.png",
"imageSelected": "https://example.com/us-flag-selected.png",
"colorSelected": "#3FC1BE"
},
{
"folder": "vi_store",
"image": "https://example.com/vn-flag.png",
"imageSelected": "https://example.com/vn-flag-selected.png",
"colorSelected": "#FF6B6B"
}
]
}multiSiteConfig._updateCurrencyForSite method to handle updating currency and country when a new site configuration is selected.currencyCode, the app will attempt to find a matching currency from the kAdvanceConfig.currencies list.countryCode is also provided in the site config, it will override the country code of the found currency.currencyCode is not found or not provided, the app will fall back to the kAdvanceConfig.defaultCurrency.getPrefConfig method now prioritizes currency and country settings from multiSiteConfig before falling back to kAdvanceConfig.defaultCurrency or persisted settings.changeMultiSite, the currency and country are now updated according to the new site's settings.configs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
flutter --versionflutter channel stable
flutter upgrade --force
flutter clean
flutter pub getconfigs/env.props file (if not input, the app will crash):
flutter precache --ioslib/env.dart file...
"advanceConfig": {
...
"OptimizeImage": {
"enable": true,
"plugin": "optimole" // Support "re-generate-image" plugin (old) & "optimole" plugin (new)
},
...
}
...showIndicator config — now fully customizable.
lib/config/config_en.json, add showIndicator into banner config{
"showIndicator": false
} lib/config/config_en.json"SmartEngagementBanner": {
"popup": {
"allowTapOutsideToClose": true, // Default: false
"iconSize": 36,
},
}deepview parameter support for better navigation.
lib/config/config_en.json file, after set true for requiredLogin, add the corresponding role as below:{
"requiredLogin": true,
"roles": [] //"customer", "administrator", "vendor",....
}
lib/env.dart file as below:"advanceConfig": {
/// false: show category menu as Text https://tppr.me/v3bLI
/// true: show as Category Image
"categoryImageMenu": true,
}




configs/env.props file (if not input, the app will crash):
configs/env.props file (if not input, the app will crash):
17 more releases shipped before v5.3.0. They are part of the same lifetime-update license.