AI Content Chat (Beta) logo

Languages and Frameworks Thoughtworks Technology Radar 72. SwiftUI Adopt When Apple introduced SwiftUI a few years ago, it was a big step forward for implementing user interfaces on all kinds of devices made by Apple. From the beginning, we liked the declarative, code- centric approach and the reactive programming model provided by Combine. We did notice, though, that writing a lot of view tests, which you still need with a model—view—viewmodel (MVVM) pattern, was not really sensible with the XCUITest automation framework provided by Apple. This gap has been closed by ViewInspector. A final hurdle was the minimum OS version required. At the time of release, only the very latest versions of iOS and macOS could run applications written with SwiftUI, but because of Apple’s regular cadence of updates, SwiftUI apps can now run on practically all versions of macOS and iOS that receive security updates. 73. Testcontainers Adopt We’ve had enough experience with Testcontainers that we think it’s a useful default option for creating a reliable environment for running tests. It’s a library, ported to multiple languages, that Dockerizes common test dependencies — including various types of databases, queuing technologies, cloud services and UI testing dependencies like web browsers — with the ability to run custom Dockerfiles when needed. It works well with test frameworks like JUnit, is flexible enough to let users manage the container lifecycle and advanced networking and quickly sets up an integrated test environment. Our teams have consistently found this library of programmable, lightweight and disposable containers to make functional tests more reliable. 74. Bob Trial When building an app with React Native you sometimes find yourself having to create your own modules. For example, we’ve encountered this need when building a UI component library for a React Native app. Creating such a module project isn’t straightforward, and our teams report success using Bob to automate this task. Bob provides a CLI to create the scaffolding for different targets. The scaffolding is not limited to core functionality but, optionally, can include example code, linters, build pipeline configuration and other features. 75. Flutter-Unity widget Trial Flutter is increasingly popular for building cross-platform mobile apps, and Unity is great for building AR/VR experiences. A key piece in the puzzle for integrating Unity and Flutter is the Flutter-Unity widget, which allows embedding Unity apps inside Flutter widgets. One of the key capabilities the widget offers is bi-directional communication between Flutter and Unity. We’ve found its performance to be pretty good as well, and we’re looking forward to leveraging Unity in more Flutter apps. 76. Kotest Trial Kotest (previously KotlinTest) is a stand-alone testing tool for the Kotlin ecosystem that is continuing to gain traction within our teams across various Kotlin implementations — native, JVM or JavaScript. Key advantages are that it offers a variety of testing styles in order to structure the © Thoughtworks, Inc. All Rights Reserved. 34

Vol 26 | Technology Radar - Page 34 Vol 26 | Technology Radar Page 33 Page 35