We have good-actually, great-news for you!
Our Flutter UI is now fully compatible with the latest Flutter version (3.41). We've put in the work to ensure you have full access to all the newest features Flutter has to offer.
During this process, we noticed that json_dynamic_widget is no longer being actively maintained. (We completely understand the developers' reasons, but as you know us: "Impossible" isn't in our vocabulary.)
That's why we've pivoted our implementation to the officially Google-supported solution: Remote Flutter Widgets (rfw). This brings us much closer to the Flutter core, as widgets can now be used directly in the definition file. This makes everything significantly more readable. Furthermore, there's a massive performance boost to be gained by saving templates in binary format - which we already support! In a direct comparison, rfw wins by a landslide; even with large datasets, everything remains buttery smooth. The unexpected switch has already paid off!
Why didn't we use rfw from the start? Simply because not everything was production-ready when we first tested it, and json_dynamic_widget was performing exceptionally well at the time.
This new version isn't just a compatibility upgrade; it's packed with new features:
- Copy-to-clipboard button in editors (optional)
- Biometric/PIN security (per app, per screen, or per button press)
- Title bar styling (e.g., matching screen colors)
- Customizable icons
- Client-side data encryption
- Empty state info text for menus
- Geo-location access with alerts if location services are disabled
- Caching for small images
- Binary data types are now natively recognized
- Password input with quality indicators (optional)
- Toggle visibility for password inputs (optional)
- Multi-factor authentication fixes and a fresh new look
- Background images for masks or menus via API
- Safe Area color customizable via API
- Request reduction for better efficiency
- Full support for all FontAwesome and Material Icons (by name)
We'll be diving deeper into these features over the coming weeks, but for now: it's just awesome!
We've just shipped an absolutely fantastic new feature that many of you will love. Starting now, you can store values fully encrypted in your backend/database - transparently, securely, and without ever exposing plaintext on the server. All you need is a client-side token that lives exclusively in secure storage on the device. The backend and the database only ever see encrypted bytes. When the data is read, it's automatically decrypted on the client. In other words: your app never has to persist unencrypted data again.
This is a highly specialized capability, but incredibly powerful. If you're building something like a password manager that syncs credentials across devices, this feature is a game-changer. Passwords never appear in plaintext on the server - even if someone were to gain direct database access due to a security flaw, they'd only see encrypted blobs.
How does it work?
You simply mark the columns you want encrypted:
book.getRowDefinition().addColumnDefinition(
new ColumnDefinition("PASSWORD", new EncodedBinaryDataType())
);
The corresponding database column must use a binary data type (not text).
That's literally all the setup required.
When the user opens the screen in your app, they'll be prompted for a token. This token is stored securely on the device, never displayed, and used solely for encryption and decryption. Each application can use its own token. You can also delete the token to force re-entry whenever needed.
How it looks like?
 Enter token |
|
 Delete token
|
We were never truly satisfied with our code scanner in the VisionX app, so we took the opportunity to redesign it. The result of our efforts can be seen here:
 Old UI |
|
 New UI |
|
 New UI (multi-scan) |
The changes are already integrated in our Open Source project and will also be available in the stores with the next app update.
We're happy to announce that our native JVx' flutter client 3.3.0 is stable and available.
It's now flutter 3.35 compatible, supports Android' 16KB Page size and is ready for Android SDK 36.
We’ve invested a lot of time in improving stability and performance. Layout rendering should now operate somewhat faster than before. Additionally, we’ve implemented push and deep links in a way that allows the application to update its display using pure parameters. For example, it’s now possible to update individual fields or open entire screens and select specific data records within them.
How it works?

Deep link example
The app runs on a real device. It has a simple screen with a button which will send an email with two links in it. The first will open the app and sets an application parameter. This parameter will be shown as text of a text field. The second link will open a specific screen and scrolls to a specific record.
Our implementation of native push:

Native push
The app receives a push message while running and shows a local notification. If you tap the notification, the app will be opened as well. In this demo, we don't tap the notification.
The project, as always, can be found on github.
We’ll be updating our VisionX Previewer app in the next few days and releasing it in the stores.
We already support badges for standard components. So the next logical step is to support badges in the menu. And that's exactly what we've implemented. See for yourselves:

Menu badges
The badge will appear animated if you change the text.
The API is simple:
BadgeUtil.setBadge(this, UpAndDownloadWorkScreen.class, Integer.valueOf(1));
Pretty awesome, right? You don’t have to worry about the technical issues, just focus on building your app. We’ll take care of the technical details for you.
We officially support badges for every component. It's super easy to show a badge for e.g. a button, but first let's have a look:

Badge animated
The badge will appear animated if you change the value. The API is simple, because we use our style system, e.g.:
Style.addStyleNames(comp, "f_badge_1);
You have many options to customize the badge, e.g. color, border, position:
Style.addStyleNames(comp, "f_badge_color_#205090, f_badge_align_bottomLeft, f_badge_offset_20, f_badge_border_2_#FFFFFF");
Another example:

Badges
The app is not available in the app stores because it's still under development, but the feature is already available in our repository.
Also, the app is ready for latest flutter version: 3.35.0
Use all features of latest flutter and dart to create your custom application without limits.
It's truly incredible how quickly you can build database apps using our generic application. The unrestricted native access is unmatched, and the standard components with all included features already enable the creation of outstanding apps.
With next VisionX Previewer release we'll have a really useful feature. It's an automatic feedback in case of unexpected application errors.
It's entirely possible that the app can't handle all use cases equally well. This can lead to overflows or even unexpected display issues. Usually your users won't report such problems if they don't persist. For such cases, we have implemented an automated feedback handling. Any unexpected issues are reported automatically. The application will send the internal error message and stack trace to the backend and a Screenshot of the current application if possible.
Examples:
 Text overflow
|
|
 Exceptions
|
This will be reported to the backend e.g.
 Overflow feedback
|
|
 Exceptions feedback
|
No worries, it's just a demo screen. It doesn't look fancy. Just use VisionX to create your own cool screen.
Our feedback handling is not comparable with commercial products like Sentry.io which is the recommended system in the flutter docs. But it's simple, free and built-in. If you use our flutter client as base of your own application client it's also possible to use other reporting systems like Sentry.io without any limitations.
We always try to keep things simple for you!
We work hard on our VisionX Previewer app and have some really cool new features for you
You know that we use a table for data representation. It looks like following:

Standard table
We know that a table is not really cool on mobile devices. A table on mobile devices often looks like a list, like this one:
Our problem was the layout of the list elements. This is easy for a table but complex for a list. Anyway, we found a super flexible solution for the problem and now it's possible to show a table as list, like following:

Table as List
You don't need to change your application to show a table as list, just add a style information to your existing tables and everything will work. The list supports same features as the table. It's sortable, editable and you can delete records. The list has some additional style options like as Card, with + button, with border, with arrow:

Style options
This is the default layout implementation of the list. If you want another layout, you can use a template mechanism to create your own customized list. The template is a json file which defines the layout. It's not super easy but with a little patience it will work.
The new list feature will be available together with the next VisionX update in some weeks, because the template mechanism is new and not available in older VisionX versions.
Our VisionX Previewer App 3.2.0 is available. PLEASE read this article BEFORE updating the app.
It's a performance and feature release for flutter 3.24.
The new version fully supports table cell formatting (Cell profiles), fixed table cell size calculation, improved image loading and caching (no more flickering), supports full-screen content without safe are (optional), contains new date and time picker components and comes with updated dependencies.
With next version we will use flutter 3.27 and later.
A full changelog is available here and information about 3.2.0.
Our VisionX Previewer App 3.1.0 is available.
It's a small feature release for dark mode support.
Some impressions
 App overview black |
|
 Splash black |
|
 Menu black |
 Login black |
|
 Screen black |
|
 Menu black |
 Settings black |
|  Settings |
A full changelog is available here and information about the 3.1.0.