Alternatives to Swift logo

Alternatives to Swift

Objective-C, React Native, Kotlin, Go, and Java are the most popular alternatives and competitors to Swift.
5.3K
3.4K
+ 1
1.1K

What is Swift and what are its top alternatives?

Writing code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast. Swift is ready for your next iOS and OS X project — or for addition into your current app — because Swift code works side-by-side with Objective-C.
Swift is a tool in the Languages category of a tech stack.
Swift is an open source tool with 50K GitHub stars and 8.1K GitHub forks. Here’s a link to Swift's open source repository on GitHub

Swift alternatives & related posts

Objective-C logo

Objective-C

4.5K
2.3K
490
4.5K
2.3K
+ 1
490
The primary programming language you use when writing software for OS X and iOS
Objective-C logo
Objective-C
VS
Swift logo
Swift

related Objective-C posts

Jesus Dario Rivera Rubio
Jesus Dario Rivera Rubio
Telecomm Engineering at Netbeast · | 10 upvotes · 170.2K views
atNetbeastNetbeast
React Native
React Native
Android SDK
Android SDK
Objective-C
Objective-C
Travis CI
Travis CI
Bitrise
Bitrise
GitHub
GitHub
Firebase
Firebase
Amplitude
Amplitude
Intercom
Intercom
Mailjet
Mailjet
#SmartHome
#End2end

We are using React Native in #SmartHome to share the business logic between Android and iOS team and approach users with a unique brand experience. The drawback is that we require lots of native Android SDK and Objective-C modules, so a good part of the invested time is there. The gain for a app that relies less on native communication, sensors and OS tools should be even higher.

Also it helps us set different testing stages: we use Travis CI for the javascript (business logic), Bitrise to run build tests and @Detox for #end2end automated user tests.

We use a microservices structure on top of Zeit's @now that read from firebase. We use JWT auth to authenticate requests among services and from users, following GitHub philosophy of using the same infrastructure than its API consumers. Firebase is used mainly as a key-value store between services and as a backup database for users. We also use its authentication mechanisms.

You can be super locked-in if you also rely on it's analytics, but we use Amplitude for that, which offers us great insights. Intercom for communications with end-user and Mailjet for marketing.

See more
Conor Myhrvold
Conor Myhrvold
Tech Brand Mgr, Office of CTO at Uber · | 9 upvotes · 488.1K views
atUber TechnologiesUber Technologies
RIBs
RIBs
Objective-C
Objective-C
Swift
Swift

Excerpts from how we developed (and subsequently open sourced) Uber's cross-platform mobile architecture framework, RIBs , going from Objective-C to Swift in the process for iOS: https://github.com/uber/RIBs

Uber’s new application architecture (RIBs) extensively uses protocols to keep its various components decoupled and testable. We used this architecture for the first time in our new rider application and moved our primary language from Objective-C to Swift. Since Swift is a very static language, unit testing became problematic. Dynamic languages have good frameworks to build test mocks, stubs, or stand-ins by dynamically creating or modifying existing concrete classes.

Needless to say, we were not very excited about the additional complexity of manually writing and maintaining mock implementations for each of our thousands of protocols.

The information required to generate mock classes already exists in the Swift protocol. For Uber’s use case, we set out to create tooling that would let engineers automatically generate test mocks for any protocol they wanted by simply annotating them.

The iOS codebase for our rider application alone incorporates around 1,500 of these generated mocks. Without our code generation tool, all of these would have to be written and maintained by hand, which would have made testing much more time-intensive. Auto-generated mocks have contributed a lot to the unit test coverage that we have today.

We built these code generation tools ourselves for a number of reasons, including that there weren’t many open source tools available at the time we started our effort. Today, there are some great open source tools to generate resource accessors, like SwiftGen. And Sourcery can help you with generic code generation needs:

https://eng.uber.com/code-generation/ https://eng.uber.com/driver-app-ribs-architecture/

(GitHub : https://github.com/uber/RIBs )

See more

related React Native posts

Vaibhav Taunk
Vaibhav Taunk
Team Lead at Technovert · | 26 upvotes · 113.2K views
.NET Core
.NET Core
Angular CLI
Angular CLI
React
React
MongoDB
MongoDB
Flutter
Flutter
React Native
React Native
Postman
Postman
Markdown
Markdown
Visual Studio Code
Visual Studio Code

I am starting to become a full-stack developer, by choosing and learning .NET Core for API Development, Angular CLI / React for UI Development, MongoDB for database, as it a NoSQL DB and Flutter / React Native for Mobile App Development. Using Postman, Markdown and Visual Studio Code for development.

See more
Vishal Narkhede
Vishal Narkhede
Javascript Developer at getStream.io · | 19 upvotes · 107.4K views
atStreamStream
Stream
Stream
React Native
React Native
Chat by Stream
Chat by Stream
JavaScript
JavaScript
Expo
Expo
styled-components
styled-components
Babel
Babel

Recently, the team at Stream published a React Native SDK for our new Chat by Stream product. React Native brings the power of JavaScript to the world of mobile development, making it easy to develop apps for multiple platforms. We decided to publish two different endpoints for the SDK – Expo and React Native (non-expo), to avoid the hurdle and setup of using the Expo library in React Native only projects on the consumer side.

The capability of style customization is one a large deal breaker for frontend SDKs. To solve this, we decided to use styled-components in our SDK, which makes it easy to add support for themes on top of our existing components. This practice reduces the maintenance effort for stylings of custom components and keeps the overall codebase clean.

For module bundling, we decided to go with Rollup.js instead of Webpack due to its simplicity and performance in the area of library/module providers. We are using Babel for transpiling code, enabling our team to use JavaScript's next-generation features. Additionally, we are using the React Styleguidist component documentation, which makes documenting the React Native code a breeze.

See more

related Kotlin posts

StackShare Editors
StackShare Editors
Ruby
Ruby
Go
Go
gRPC
gRPC
Kotlin
Kotlin

As the WeWork footprint continued to expand, in mid-2018 the team began to explore the next generation of identity management to handle the global scale of the business.

The team decided to vet three languages for building microservices: Go, Kotlin, and Ruby. They compared the three by building a component of an identity system in each, and assessing the performance apples-to-apples.

After building out the systems and load testing each one, the team decided to implement the new system in Go for a few reasons. In addition to better performance under heavy loads, Go, according to the team, is a simpler language that will constrain developers to simpler code. Additionally, the development lifecycle is simpler with Go, since “there is little difference between running a service directly on a dev machine, to running it in a container, to running clustered instances of the service.”

In the implementation, they the Go grpc framework to handle various common infrastructure patterns, resulting in “in a clean common server pattern that we can reuse across our microservices.”

See more
StackShare Editors
StackShare Editors
Prometheus
Prometheus
Chef
Chef
Consul
Consul
Memcached
Memcached
Hack
Hack
Swift
Swift
Hadoop
Hadoop
Terraform
Terraform
Airflow