Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Finding alternatives for GraphQL client for iOS
Search
Yuki Yamamoto
March 24, 2022
Programming
0
3k
Finding alternatives for GraphQL client for iOS
Yuki Yamamoto
March 24, 2022
Tweet
Share
More Decks by Yuki Yamamoto
See All by Yuki Yamamoto
tvOSにちょっと注目してみる
redryerye
0
930
Implementing MVVM in 2019
redryerye
2
1.2k
Implement P2P connection and stream your content
redryerye
0
710
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
140
Amazon Verified Permissions実践入門 〜Cedar活用とAppSync導入事例/Practical Introduction to Amazon Verified Permissions
fossamagna
2
100
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
980
エンジニアインターン「Treasure」とHonoの2年、そして未来へ / Our Journey with Hono Two Years at Treasure and Beyond
carta_engineering
0
440
Software Architecture
hschwentner
6
2.3k
Cursorハンズオン実践!
eltociear
2
1.2k
Six and a half ridiculous things to do with Quarkus
hollycummins
0
220
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
110
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.2k
CSC305 Lecture 08
javiergs
PRO
0
280
Devvox Belgium - Agentic AI Patterns
kdubois
1
150
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
91
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Embracing the Ebb and Flow
colly
88
4.9k
Practical Orchestrator
shlominoach
190
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Done Done
chrislema
185
16k
The Language of Interfaces
destraynor
162
25k
Producing Creativity
orderedlist
PRO
347
40k
Automating Front-end Workflow
addyosmani
1371
200k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
@redryerye ࠷దͳiOSͷ GraphQLΫϥΠΞϯτΛٻΊͯ Finding alternatives for GraphQL client for iOS
Yuki Yamamoto @redryerye iOS Engineer @
Last year, my team decided to use GraphQL for our
new feature 🏃
A new co-working space has opened in Shimokitazawa GraphQL is
used in the new seat reservation featur e (Both iOS/Android)
GraphQL is used
GraphQL is used with apollo-ios
GraphQL is used with apollo-ios
About apollo-ios • The most popular open-sourced GraphQL client library
for iOS
About apollo-ios • The most popular open-sourced GraphQL client library
for iOS • Used in production by many companies around the world Github uses Apollo client potatotips #61
Apollo is great!
But it can be a hassle 🧐
• Explaining the hurdle I had in using Apollo Today,
I will be..
Today, I will be.. • Explaining the hurdle I had
in using Apollo • Looking at other alternatives
Today, I will be.. • Explaining the hurdle I had
in using Apollo • Looking at other alternatives New to GraphQL? The details of GraphQL will not be covered here. However, you will probably able to understand this talk since I will be explaining about the implementation one by one 😉
Apollo iOS: Things I like about it
Apollo iOS: Things I like about it 1. Strong community
2. Guarantees compile time type safety
Apollo iOS: Things I like about it 1. Strong community
2. Guarantees compile time type safety
Apollo iOS has a strong community • Actively maintained by
Apollo, which is a GraphQL focused company
• Actively maintained by Apollo, which is a GraphQL focused
company Had seen an amazing work done in the community by the team, especially by Ellen 😭 Apollo iOS has a strong community
• Actively maintained by Apollo, which is a GraphQL focused
company • Easy to fi nd resources about the library Apollo iOS has a strong community
Apollo iOS: Things I like about it 1. Strong community
2. Guarantees compile time type safety
Apollo iOS: Things I like about it 1. Strong community
2. Guarantees compile time type safety
What does this mean? 🤔
None
None
None
Queries are fl exible
None
None
Query-speci fi c nested structs will be generated ✅ Compile
time safety
Queries are fl exible
Queries are fl exible name name name PersonCell CharacterList Tie
a query to a view = View : Query or Fragment (Works well with SwiftUI)
name name name PersonCell CharacterList But this did not suit
our case
name name name PersonCell CharacterList 👆 Check this out for
the details
What’s the struggle? 🤔
• Dealing with nested structs can be a hassle especially
when passing it to your domain layer Apollo iOS: The Struggle
Generated structs are nested based on a query Apollo iOS:
The Struggle
Generated structs are nested based on a query The more
query gets complicated, so does the structs. Apollo iOS: The Struggle
Generated structs are nested based on a query Generated structs
does not conform to the Equatable protocol Apollo iOS: The Struggle 👆
I wish I could easily map to domain objects a
little more…
It’s always an option • Not to use a client
library and write your own client • Utilize Fragment
Any alternative?
Yes. graphql.org/code
Yes. Graphaello will not be covered here since it focuses
on SwiftUI graphql.org/code 👉
Let’s look at SwiftGraphQL graphql.org/code 👉
Apollo iOS
Apollo iOS
Apollo iOS
SwiftGraphQL
SwiftGraphQL
SwiftGraphQL
SwiftGraphQL
SwiftGraphQL
Looks good for mapping to models!
Comparing apollo-ios and SwiftGraphQL
Comparing apollo-ios and SwiftGraphQL
Comparing apollo-ios and SwiftGraphQL
Summary • Mapping generated structs to domain objects can be
a hassle • Other GraphQL clients can be your solution depending on your situation
developers.kankak.com I will post my update on the blog
Thank you!
Resources • https://www.apollographql.com/docs/ios/ • https://www.apollographql.com/blog/community/bringing-graphql-to-ios- fc46423befa1/#generating-native-result-types • https://miyashi.app/post/graphql-impressions/ • https://speakerdeck.com/sonatard/swiftui-graphql
• https://www.the-guild.dev/blog/swift-graphql? utm_content=175727619&utm_medium=social&utm_source=twitter&hss_cha nnel=tw-1141026790653059072