This article is written by Charise Walraven
The Advantages of Using OutSystems as a back end with Flutter for UI.
If an internal app is all you need, OutSystems is usually the way to go. But, it’s a better idea to use OutSystems to handle back end tasks, and Flutter for your app's UX/UI, than solely using OutSystems.
OutSystems' strength lies in easily building complex back ends that compile into secure, performant code, but when it comes to creating a cross platform UI, it falls short. That’s because it only supports Web and Mobile, and Mobile OutSystems apps are, at best, minimally supported, considering what you could make using the underlying open source platform that OutSystems Mobile is built on. In case you didn’t know, OutSystems Mobile apps are built using Cordova, which is actually declining in usage and popularity. Plus, because OutSystems is not open source, if you have an issue with your Mobile app, your developers cannot see the code that generates your app. They can only see the generated code if they specifically request it from the OutSystems support team, which can take days.
Flutter is currently the only true option for developing cross platform apps. If your developers want to see what the code looks like under the hood, all they have to do is open a file that is already on their computer, or find it in the public repository online.
Flutter also lets you develop for more platforms than just Mobile and Web. You can use it to develop for Windows, Mac, Linux and embedded devices such as smartwatches, smart fridges, the media/navigation systems in cars, and much, much more.
What are the advantages of using OutSystems as a back end?
First, building server side apps with OutSystems can be a smooth experience for developers. The platform automates many repetitive tasks for developers, like deployment, configuring REST or SOAP API settings, bootstrapping data, and more.
Second, the OutSystems platform handles a lot of optimization for you - provided you use the platform and its tools correctly - so you don’t have to worry much about keeping your apps fast. There’s also a nice dashboard where you can monitor your applications’ performance and as such can help you decide how and where to make improvements. Plus, there are all sorts of other little tools built in to help you develop better apps, like logging and suggestions for optimizations and improvements while you’re building apps.
Third, OutSystems takes care of a lot of common security issues for you, so you don’t have to worry that you’ve misimplemented the security of your app in case you don’t have a security expert on your team.
Furthermore, OutSystems is easy to scale, so you can build almost anything - from tiny proof of concepts to giant many user apps. There is also fantastic support for developers, with high quality training, certifications, a support team and centre, extensive documentation, and an active, knowledgeable community. So, overall OutSystems offers many compelling features for developing server side applications.
So why can’t I use OutSystems for Mobile as well as back end development??
It is trickier to develop Mobile applications with OutSystems. I’m not going to go into too much detail here, suffice it to say the combination of OutSystems as a proprietary platform, the lack of officially supported plugins, plus the lack of support from plugin developers outside of OutSystems (sometimes you have to use off platform plugins to implement functionality not yet officially supported by the OutSystems team) makes for a complicated, frankly insufficient development environment for anything but simple Mobile apps.
How to solve this? Write your server side and possibly your Internal User Facing applications using OutSystems, then use another, more robust, Open Source framework to write your cross platform front end or front ends. There are plenty of frameworks to choose from, such as Vue, React, or Angular for Web, and Cordova, Ionic or ReactNative for Mobile.
However, here at B-Synergy we have found that Flutter works best for our needs and we recommend our clients use it as well.
If you don’t know, ‘Flutter is an open-source UI software development kit created by Google. It is used to develop cross platform applications for Android, iOS, Linux, macOS, Windows, Google Fuchsia, and the web from a single codebase’. And it’s not only used by Google: other big companies like BMW and Alibaba use Flutter as well. You can find more information on the Flutter Showcase page.
Flutter SDK is a Framework written in a language called Dart. Flutter apps are written in Dart. But, where other cross platform frameworks rely on WebViews and essentially creating Mobile apps by showing the user lots of web pages as screens, Flutter uses real, native components that can be found in the platforms. This means that users’ operating systems can handle things like accessibility, animations and more much better, since it doesn’t have to interpret a website to do so.
It is also great for developers since the Dart code they write is compiled into native, platform specific code. Their resulting app is therefore more performant and consistent than if they were using a Cordova/WebView based framework or platform such as OutSystems. Oh, and did I mention that you can also develop Windows, Mac, and Linux with Flutter, as well as for embedded devices, such as smart watches and car navigation consoles? How’s that for cross platform!
The cherry on top: Flutter code is not hidden and is fully accessible with thorough debug options during development. No more waiting days for OutSystems support to supply a resolution to a support ticket; you already have all you need.
You may be thinking, “Yes, Charise (that’s me), that does sound good. But what if it’s a problem my team can’t solve. Like some bug in the framework’s code, or a plugin’s code. What about support then?” Well, my dear manager-friend, that’s a very good question. With OutSystems, you have a very efficient support team to answer all your questions, and a dedicated team to fix issues with the underlying code. Except if you’re using non standard plugins.
Which means the OutSystems Supported Mobile Plugins available on the OutSystems forge. Of which there are a whopping 29. Want to play your users some audio that runs reliably when the screen is turned off, and lets you pause and play from the lock screen? No go - there is no OutSystems Supported plugin for that. You could use a non supported plugin, of course, but if that doesn’t work well, don’t expect help from the Support team.
Which, in all fairness, makes sense. OutSystems cannot support all possible plugins, especially since they didn’t write them, and many aren’t even written with OutSystems compatibility in mind. In practice, though, what this means is that if your developers want to write anything that is even a little more innovative than the current list of supported plugins can handle, they’re on their own. And if they have to go out on a limb anyway, why not give them the tools they need to make their work as simple and enjoyable as possible? That way they can develop better and faster, and they may even (gasp!) end up liking their job’s tech stack.
So, in this case, that OutSystems support team isn’t as useful as it initially seemed. But, what is Flutter’s support like? Let’s say your developers get an error they don’t understand. Flutter has 127.812-and-counting questions tagged on StackOverflow.
That means, more than likely, someone else has come up against the same error before and can tell your developers how to fix it.
What about plugin specific errors or bugs? No worries! Every plugin published on Pub.dev, the Official package repository for Dart and Flutter apps, has a link to a Github repository, with questions and answers about the plugin, bug reports, bug fixes, and information about the maintainer. And if all that doesn’t work, you can always try another plugin. There are 25.795 of them, so it shouldn’t be too hard to find one that meets your needs.
Alternatively, you can also edit the code and make the plugin work yourself.
Ok, so let’s say I’ve convinced you that Flutter is the best option for creating beautiful, stable cross-platform apps. You now want to create a Flutter front end for your OutSystems back end. How easy is this to achieve? Well, if you already have a REST API endpoint for the relevant OutSystems actions you’d like your users to be able to trigger, then it’s as easy as telling your apps you intend to use the internet, adding the http package as a dependency, and then calling your OutSystems REST API back end from your Dart code in your Flutter app. Say what? You don’t really understand all that? Well, basically, for a small feature that already exists in your back end, it would take probably only a day or so to execute the same action directly from the front end Flutter app. Easy, no?
What’s also easy with Flutter - much easier than with OutSystems - is automated testing. You can write unit tests, widget tests, and integration tests using the official Dart and Flutter testing packages. You can also implement Continuous Integration (CI), which runs all your tests every time you want to push some new code to the app and provides quick feedback on whether the new code has introduced any bugs or caused any old code to fall over. And, you can implement this using a bunch of different CI frameworks. Just choose the one you like most!
Also, you know how in OutSystems you have to be careful to not work in the same applications and modules because there’s no easy way to work in parallel on the same project? With Flutter, you can use Git, which allows you to work on the same files at the same time as your teammates and not end up with conflicts every time you try to run your code. Once you’re done, you can merge via your preferred remote repository storage service, like GitHub, GitLab or Bitbucket.
I hope I’ve managed to enlighten you as to why an OutSystems back end + Flutter front end is a great decision if you want to make cross platform applications. It combines the two platforms’ strengths and allows your developers to work with tools that support them on their quest to write good, stable applications quickly and easily.
Are you ready for easier to develop apps and happier developers? Do you need more information, or want to leave a suggestion or comment? Please feel free to reach out to us below, or atB-Synergy. We’re always happy to hear from you, and will probably be able to fix your app issues - what do you have to lose, right?