Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Finding alternatives for GraphQL client for iOS
Yuki Yamamoto
March 24, 2022
Programming
0
1.7k
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
580
Implementing MVVM in 2019
redryerye
2
820
Implement P2P connection and stream your content
redryerye
0
420
Other Decks in Programming
See All in Programming
ゴーファーくんと辿るプログラミング言語の歴史/history-of-programming-languages-with-gopher
iwasiman
2
370
【Scrum Fest Osaka 2022】スクラムチームに放り込まれた若手エンジニアの皆さん、どのように技術のキャッチアップをしていくかイメージはついていますか?
miiiki
0
120
Imperative is dead, long live Declarative! | Appdevcon
prof18
0
110
UI Testing of Jetpack Compose Apps, AppDevCon
alexzhukovich
0
170
オブジェクト指向で挫折する初学者へ
deepoil
0
180
Independently together: better developer experience & App performance
bcinarli
0
180
設計の学び方:自分流のススメ
masuda220
PRO
10
7.3k
こそこそアジャイル導入しようぜ!
ichimichi
0
1.2k
Let's keep Commodore 64 alive for the next 40 years
mehowte
1
110
Jetpack Compose, 어디까지 알고 있을까?
jisungbin
0
120
io22 extended What's new in app performance
veronikapj
0
340
Chart実装が楽になりました。
keisukeyamagishi
0
120
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
229
9.4k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.6k
Git: the NoSQL Database
bkeepers
PRO
415
59k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
315
19k
Imperfection Machines: The Place of Print at Facebook
scottboms
253
12k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.4k
Clear Off the Table
cherdarchuk
79
280k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
920
Embracing the Ebb and Flow
colly
73
3.4k
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