際際滷

際際滷Share a Scribd company logo
tRPC - czy to koniec GraphQL?
since 2015
Our team of 100 people work
remotely and from of鍖ces
in Gliwice & Wroclaw
Our top clients:
Our best technologies:
Hall of fame:
tRPC - czy to koniec
GraphQL?
Angelika Jeziorska
JavaScript Full Stack Developer
Wrocaw, 20.04.2023
tRPC - czy to koniec GraphQL?
Co to tRPC?
 Biblioteka do budowania api z penym type-safety.
 Pod spodem HTTP GET i POST.
 Frontowy klient zbudowany na React (TanStack) Query.
 Wsparcie subskrypcji i WebSocket坦w.
 Nie wymaga generowania i/lub utrzymywania typ坦w  wystarczy walidator.
Skd front zna typy?
Walidacja input坦w
 yup
 superstruct
 zod/myzod
 wasny walidator
Do jakich rozwiza?
 TypeScript (front i back)
 React/Next.js
 Monorepo
Czemu nie REST lub GraphQL?
Podstawowe koncepcje
 Router.
 Procedury - ekwiwalent endpointu RESTowego lub lambdy.
 Context - informacje przydatne dla procedur.
 API Handler - backend, w kt坦rym 甜yje tRPC.
Aktualnie dostpne adaptery
 AWS Lambda/Serverless,
 Express,
 edge runtimes (Next.js),
 Fastify.
Jak ograniczy dostp do endpointu?
Prawa nadawane inkrementacyjnie  middleware uruchamiany przed procedur
Odrbne uprawnienia -> tRPC Shield.
const isAuthenticated = rule<Context>()(async (ctx, type, path, input, rawInput) => {
return ctx.user !== null
})
const isAdmin = rule<Context>()(async (ctx, type, path, input, rawInput) => {
return ctx.user.role === 'admin'
})
const isEditor = rule<Context>()(async (ctx, type, path, input, rawInput) => {
return ctx.user.role === 'editor'
})
const permissions = shield<Context>({
query: {
frontPage: not(isAuthenticated),
fruits: and(isAuthenticated, or(isAdmin, isEditor)),
customers: and(isAuthenticated, isAdmin),
},
});
To czemu wszyscy z niego nie korzystaj?
Wersja v10 (listopad 2022)
 Dodanie wielu funkcjonalnoci IDE (Go to Definition, Rename Symbol itd.).
 Middleware, reu甜ywalne i chainowalne procedury.
 Poprawiony syntax.
 Lepszy performance TypeScripta w du甜ych projektach.
Spor坦d du甜ych graczy wykorzystujcych tRPC jest Netflix i Pleo (cash back).
Potencjalne problemy
 CRONy
 Integrowanie narzdzi przez context
 brak konwencji
Kiedy warto wykorzysta?
 Majc fullstack坦w w projekcie.
 Chcc wykona wiele operacji, kt坦rych logika nie jest powizana lub mo甜e by
wsp坦dzielona.
 W aplikacjach real-time.
Materiay
 tRPC Docs: https://trpc.io/docs/
 T3 stack: https://create.t3.gg/
禽噛庄一顎逮!

More Related Content

Similar to tRPC - czy to koniec GraphQL? (20)

PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PROIDEA
react-pl.pdf
react-pl.pdfreact-pl.pdf
react-pl.pdf
ssuser65180a
Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?
Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?
Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?
The Software House
Programowanie R坦wnolegle - Parallel Extensions
Programowanie R坦wnolegle - Parallel ExtensionsProgramowanie R坦wnolegle - Parallel Extensions
Programowanie R坦wnolegle - Parallel Extensions
Wojciech Grzekowiak
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Polcode
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Luke Adamczewski
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
Rafa Filipek
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
3camp
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
Przemyslaw Wroblewski
RxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsRxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applications
allegro.tech
Krytyczne bdy konfiguracji
Krytyczne bdy konfiguracjiKrytyczne bdy konfiguracji
Krytyczne bdy konfiguracji
Logicaltrust pl
Jak podwoi warto kodu .NET?
Jak podwoi warto kodu .NET?Jak podwoi warto kodu .NET?
Jak podwoi warto kodu .NET?
javOnet
Thymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarka
Thymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarkaThymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarka
Thymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarka
Maciej Ziarko
Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014
Filip Rembialkowski
Micha Dec - Quality in Clouds
Micha Dec - Quality in CloudsMicha Dec - Quality in Clouds
Micha Dec - Quality in Clouds
kraqa
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz
Kopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVM
Kopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVMKopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVM
Kopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVM
Artur Skowroski
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
intive
Confitura 2018 - Sekretne 甜ycie job坦w Sparkowych
Confitura 2018 - Sekretne 甜ycie job坦w SparkowychConfitura 2018 - Sekretne 甜ycie job坦w Sparkowych
Confitura 2018 - Sekretne 甜ycie job坦w Sparkowych
Marcin Jasiski
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
Maciej Lasyk
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PROIDEA
Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?
Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?
Monitoring systemu. Dlaczego m坦j kardiolog jest bogatym czowiekiem?
The Software House
Programowanie R坦wnolegle - Parallel Extensions
Programowanie R坦wnolegle - Parallel ExtensionsProgramowanie R坦wnolegle - Parallel Extensions
Programowanie R坦wnolegle - Parallel Extensions
Wojciech Grzekowiak
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Polcode
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Luke Adamczewski
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
Rafa Filipek
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
3camp
RxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsRxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applications
allegro.tech
Krytyczne bdy konfiguracji
Krytyczne bdy konfiguracjiKrytyczne bdy konfiguracji
Krytyczne bdy konfiguracji
Logicaltrust pl
Jak podwoi warto kodu .NET?
Jak podwoi warto kodu .NET?Jak podwoi warto kodu .NET?
Jak podwoi warto kodu .NET?
javOnet
Thymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarka
Thymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarkaThymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarka
Thymeleaf - szablony, kt坦re bez przetworzenia zrozumie twoja przegldarka
Maciej Ziarko
Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014
Filip Rembialkowski
Micha Dec - Quality in Clouds
Micha Dec - Quality in CloudsMicha Dec - Quality in Clouds
Micha Dec - Quality in Clouds
kraqa
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz
Kopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVM
Kopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVMKopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVM
Kopic Trufle - Odkrywanie tajemnic najmniej zrozumiaego elementu GraalVM
Artur Skowroski
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
intive
Confitura 2018 - Sekretne 甜ycie job坦w Sparkowych
Confitura 2018 - Sekretne 甜ycie job坦w SparkowychConfitura 2018 - Sekretne 甜ycie job坦w Sparkowych
Confitura 2018 - Sekretne 甜ycie job坦w Sparkowych
Marcin Jasiski
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
Maciej Lasyk

More from Brainhub (20)

Czy jest alternatywa dla chmury?
Czy jest alternatywa dla chmury?Czy jest alternatywa dla chmury?
Czy jest alternatywa dla chmury?
Brainhub
Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...
Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...
Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...
Brainhub
AWS jak rozpocz przygod z chmur?
AWS  jak rozpocz przygod z chmur?AWS  jak rozpocz przygod z chmur?
AWS jak rozpocz przygod z chmur?
Brainhub
Konfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstawKonfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstaw
Brainhub
Solid.js - nastpca Reacta?
Solid.js - nastpca Reacta?Solid.js - nastpca Reacta?
Solid.js - nastpca Reacta?
Brainhub
Struktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcie
Brainhub
WebAssembly - czy dzisiaj mi si to przyda do pracy?
WebAssembly - czy dzisiaj mi si to przyda do pracy?WebAssembly - czy dzisiaj mi si to przyda do pracy?
WebAssembly - czy dzisiaj mi si to przyda do pracy?
Brainhub
Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!
Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!
Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!
Brainhub
Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!
Brainhub
How I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesHow I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokes
Brainhub
The hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivity
Brainhub
TDD in the wild
TDD in the wildTDD in the wild
TDD in the wild
Brainhub
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
Brainhub
React performance
React performanceReact performance
React performance
Brainhub
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
Brainhub
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
Brainhub
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Brainhub
Technologia, a Startup - Brainhub
Technologia, a Startup - BrainhubTechnologia, a Startup - Brainhub
Technologia, a Startup - Brainhub
Brainhub
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
Brainhub
How should you React to Redux
How should you React to ReduxHow should you React to Redux
How should you React to Redux
Brainhub
Czy jest alternatywa dla chmury?
Czy jest alternatywa dla chmury?Czy jest alternatywa dla chmury?
Czy jest alternatywa dla chmury?
Brainhub
Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...
Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...
Jak zosta Dev w DevOps? O zwikszaniu niezale甜noci zespo坦w developerskich ...
Brainhub
AWS jak rozpocz przygod z chmur?
AWS  jak rozpocz przygod z chmur?AWS  jak rozpocz przygod z chmur?
AWS jak rozpocz przygod z chmur?
Brainhub
Konfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstawKonfiguracja GitLab CI/CD pipelines od podstaw
Konfiguracja GitLab CI/CD pipelines od podstaw
Brainhub
Solid.js - nastpca Reacta?
Solid.js - nastpca Reacta?Solid.js - nastpca Reacta?
Solid.js - nastpca Reacta?
Brainhub
Struktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcieStruktury algebraiczne w JavaScripcie
Struktury algebraiczne w JavaScripcie
Brainhub
WebAssembly - czy dzisiaj mi si to przyda do pracy?
WebAssembly - czy dzisiaj mi si to przyda do pracy?WebAssembly - czy dzisiaj mi si to przyda do pracy?
WebAssembly - czy dzisiaj mi si to przyda do pracy?
Brainhub
Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!
Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!
Ewoluowanie neuronowych mozgow w JavaScript, wielowa岬tkowo!
Brainhub
Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!Go home TypeScript, you're drunk!
Go home TypeScript, you're drunk!
Brainhub
How I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokesHow I taught the messenger to tell lame jokes
How I taught the messenger to tell lame jokes
Brainhub
The hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivityThe hunt of the unicorn, to capture productivity
The hunt of the unicorn, to capture productivity
Brainhub
TDD in the wild
TDD in the wildTDD in the wild
TDD in the wild
Brainhub
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
Brainhub
React performance
React performanceReact performance
React performance
Brainhub
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
Brainhub
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
Brainhub
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Ant Colony Optimization (Heuristic algorithms & Swarm intelligence)
Brainhub
Technologia, a Startup - Brainhub
Technologia, a Startup - BrainhubTechnologia, a Startup - Brainhub
Technologia, a Startup - Brainhub
Brainhub
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
Brainhub
How should you React to Redux
How should you React to ReduxHow should you React to Redux
How should you React to Redux
Brainhub

tRPC - czy to koniec GraphQL?

  • 3. Our team of 100 people work remotely and from of鍖ces in Gliwice & Wroclaw
  • 4. Our top clients: Our best technologies:
  • 6. tRPC - czy to koniec GraphQL? Angelika Jeziorska JavaScript Full Stack Developer Wrocaw, 20.04.2023
  • 8. Co to tRPC? Biblioteka do budowania api z penym type-safety. Pod spodem HTTP GET i POST. Frontowy klient zbudowany na React (TanStack) Query. Wsparcie subskrypcji i WebSocket坦w. Nie wymaga generowania i/lub utrzymywania typ坦w wystarczy walidator.
  • 10. Walidacja input坦w yup superstruct zod/myzod wasny walidator
  • 11. Do jakich rozwiza? TypeScript (front i back) React/Next.js Monorepo
  • 12. Czemu nie REST lub GraphQL?
  • 13. Podstawowe koncepcje Router. Procedury - ekwiwalent endpointu RESTowego lub lambdy. Context - informacje przydatne dla procedur. API Handler - backend, w kt坦rym 甜yje tRPC.
  • 14. Aktualnie dostpne adaptery AWS Lambda/Serverless, Express, edge runtimes (Next.js), Fastify.
  • 15. Jak ograniczy dostp do endpointu? Prawa nadawane inkrementacyjnie middleware uruchamiany przed procedur Odrbne uprawnienia -> tRPC Shield.
  • 16. const isAuthenticated = rule<Context>()(async (ctx, type, path, input, rawInput) => { return ctx.user !== null }) const isAdmin = rule<Context>()(async (ctx, type, path, input, rawInput) => { return ctx.user.role === 'admin' }) const isEditor = rule<Context>()(async (ctx, type, path, input, rawInput) => { return ctx.user.role === 'editor' }) const permissions = shield<Context>({ query: { frontPage: not(isAuthenticated), fruits: and(isAuthenticated, or(isAdmin, isEditor)), customers: and(isAuthenticated, isAdmin), }, });
  • 17. To czemu wszyscy z niego nie korzystaj? Wersja v10 (listopad 2022) Dodanie wielu funkcjonalnoci IDE (Go to Definition, Rename Symbol itd.). Middleware, reu甜ywalne i chainowalne procedury. Poprawiony syntax. Lepszy performance TypeScripta w du甜ych projektach. Spor坦d du甜ych graczy wykorzystujcych tRPC jest Netflix i Pleo (cash back).
  • 18. Potencjalne problemy CRONy Integrowanie narzdzi przez context brak konwencji
  • 19. Kiedy warto wykorzysta? Majc fullstack坦w w projekcie. Chcc wykona wiele operacji, kt坦rych logika nie jest powizana lub mo甜e by wsp坦dzielona. W aplikacjach real-time.
  • 20. Materiay tRPC Docs: https://trpc.io/docs/ T3 stack: https://create.t3.gg/