15 Frequently Asked Questions about Smartface

Here we present you the 15 most frequently asked questions about Smartface from our community and from our enterprise customers. You can find answers to business-related and technical questions.

 

  1. What kind of mobile applications can you develop with Smartface?
  2. Why should I choose Smartface?
  3. How do you handle operating system and device differences and fragmentation?
  4. How do you support new operating system versions?
  5. How does Smartface work? Could you provide more information on the architecture of Smartface? Is Smartface open source?
  6. Since Smartface is an interpreter framework, would it be possible to update the source code of the application on the fly by downloading it from an external source during runtime?
  7. Are there any performance differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?
  8. Are there any app size differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?
  9. What if a device/OS feature is not available in Smartface?
  10. Can I use different JavaScript libraries in Smartface?
  11. Can Smartface do everything a hybrid platform is capable of?
  12. There are many open-source resources for platform-based development. Is it possible to use these in Smartface?
  13. How secure is an application developed with Smartface?
  14. How do you provide the native experience with single codebase in Smartface?
  15. How is memory management handled in Smartface?

 


  1. What kind of mobile applications can you develop with Smartface?

Smartface is a flexible platform and you can develop almost any kind of general-purpose apps for any form factor for iOS and Android, including highly complex apps such as mobile banking or m-commerce.

There are two types of apps that Smartface is not suitable for: games requiring advanced processing and specific-purpose utility apps requiring system-level access such as memory optimizers or battery life managers.

 

  1. Why should I choose Smartface?

The main focus of Smartface is productivity. Cross-platform native development with Smartface is around 4 times more productive than platform-based native (Obj-C, Java) development. You can see even more reasons why to choose Smartface in our Why Smartface page.

 

  1. How do you handle operating system and device differences and fragmentation?

Smartface release cycle consists of 4 major version updates in a year as well as periodic minor updates. Besides introduction of new features in each release, necessary backward and forward compatibility changes are provided. (e.g. support for new CPU architectures such as iOS 64-bit or OS-level changes such as keyboard handling)

To minimize the impact of OS updates on developers, the change processes is handled by Smartface as much as possible. In case of changes that will affect the projects, the developers are informed with the release notes. (e.g. deprecated features)

Smartface closely tracks upcoming iOS and Android operating system updates and plans the major releases based on the release timings of GM or public release of new operating system versions.

For developers, it is sufficient to update their projects to the latest version of Smartface for their apps to support the latest operating system versions, reducing the operational costs required for operating system version migration.

 

  1. How do you support new operating system versions?

As soon as a new iOS or Android release is open for testing, Smartface updates the framework in accordance with these new releases. As one of the benefits of the Smartface enterprise license, Smartface beta releases are instantly accessible by Smartface enterprise customers.

When the new iOS or Android version is released publicly, new version of Smartface is released to the community in parallel.

 

  1. How does Smartface work? Could you provide more information on the architecture of Smartface? Is Smartface open source?

Smartface is an interpreter framework. The objects developed in design time are optimized and converted into native components during runtime. You can refer to the Smartface architecture document for more information.

Enterprises can request access to Smartface source code with specific agreements. With special training and agreements, enterprises can also develop native C++ plugins in our core.

 

  1. Since Smartface is an interpreter framework, would it be possible to update the source code of the application on the fly by downloading it from an external source during runtime?

As an interpreter framework, Smartface processes the code during runtime; therefore, it is not necessary to include all JavaScript codes in the project. Even the full native app can be downloaded from a server, which is something that cannot be done with the platform-based native frameworks (Obj-C, Java).

Technically, there is no limitation on this way of working and for B2B apps that are distributed with enterprise distribution, it is preferred. However due to App Store restrictions, the critical path of a B2C app must be coded inside the app and code updates are recommended to be done only up to a certain extent.

 

  1. Are there any performance differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?

Smartface core is developed in C++ for iOS and Android and the architecture is designed to minimize the performance loss. There might be a performance loss up to 3%. However, this performance difference is not noticeable unless milliseconds are critical for an app.

 

  1. Are there any app size differences between apps developed with Smartface and apps developed with Objective-C/Swift/Java?

The framework Smartface uses during runtime has a fixed overhead. Therefore, even if in a “Hello World” application, the app size cannot be smaller than the framework size. As the number of screens in an app does increase, with 20 screens or more, this difference is negligible; or with 40 screen or more, it uses less size compared to native apps, depending on the implementation.

 

  1. What if a device/OS feature is not available in Smartface?

Smartface supports most of the functionalities available in iOS and Android operating systems. If there is a specific functionality you would specifically like to check before starting your project, you can search it in the API docs or ask Smartface community on Stack Overflow.

If a feature is not yet available, you can check our roadmap for more information if it will be implemented. Regardless of the roadmap, enterprise customers can request additional features, which they can get as plugins or patches.

For the community developers, the recommended solution is to implement additional features as plugins. Any objective-C or Java code can be added as a plugin to Smartface and can be mapped to JavaScript commands to be used in your projects.

 

  1. Can I use different JavaScript libraries in Smartface?

Smartface supports JavaScript fully, however it is a native framework and it does not have DOM support. Therefore, any JavaScript library that does not contain a DOM implementation can be used within Smartface directly.

 

  1. Smartface is native but can it do everything a hybrid platform is capable of?

Although we recommend you to take advantage of quick and easy native development with Smartface; Smartface offers the flexibility of developing apps in a hybrid structure with the WebView component. You can refer to the WebView guide for more information and the differences between native Smartface and hybrid platforms.

 

  1. There are many open-source resources for platform-based development. Is it possible to use these in Smartface?

With the plugin support, any objective-C or Java code can be used in Smartface, but we recommend checking the Smartface API docs first. Among the hundreds of apps developed with Smartface, it is highly likely that a similar implementation has already been done.

You can also ask the Smartface community on Stack Overflow for detailed use cases. Moreover, Smartface plugin market will open soon, allowing developers to share their work.

 

  1. How secure is an application developed with Smartface?

We take security concerns seriously and implemented measures to protect the code as well as the application data with built-in security features. As a result, financial institutions feel comfortable in using our solution for developing apps like mobile banking and mobile authentication.

Core of the app is written in C++ and it cannot be decompiled and for JavaScript, code obfuscation is used to protect from decompiling. For advanced security features, Smartface supports Kobil and Vasco solutions out of the box. You may refer to our security guide for securing your app in Smartface.

 

  1. How do you provide the native experience with single codebase in Smartface?

The architecture of Smartface ensures the native experience as the objects developed in design time are optimized and converted into native components during runtime with the JavaScript wrappings for native UI and components for each platform. The engine itself uses shared native C++ code for iOS and Android with bridge architecture.

For differentiating features, we check each feature in iOS and Android and when a feature is only available in one platform, it is overridden if it doesn’t fit that platform or it is duplicated with a custom implementation, if it has the potential to affect the experience.

 

  1. How is memory management handled in Smartface?

Memory management and concurrency management is handled at the platform level, so you don’t need to worry about it during development. You can refer to the Memory Management in Smartface and Memory Management with Dynamic Objects articles detailing the memory management in Smartface:

 

If you have another question that is not answered here, you can contact us.

The community version of Smartface is free with all features. You can download Smartface now and try it yourself.