Relay 15.0.0가 릴리즈되었다. 엄청나게 큰 변경점이 있다기보단 breaking change가 있어서 (아마도 TS를 사용하는 일반 유저들은 큰 차이를 느끼지 못할 듯한) 메이저 버젼이 올라간 것 같고, 아직 정리된 announcement가 없어 어떤 변경점들이 있는지 눈에 띄는 것만 간단히 살펴보고자 한다.
기존 Relay에서 @arguments
directive로 표현하던 것이 표준으로 제안된 것으로 보인다.
# 이전
fragment TodoList_list on TodoList @argumentDefinitions(
count: {type: "Int", defaultValue: 10},
userID: {type: "ID"},
) {
title
todoItems(userID: $userID, first: $count) {
...TodoItem_item
}
}
query TodoListQuery($userID: ID) {
...TodoList_list @arguments(count: $count, userID: $userID)
}
공식 예제의 위 코드가 현재 제안된 표준대로 변경된다면,
# 예시
fragment TodoList_list(
count: Int = 10,
userID: ID,
) on TodoList {
title
todoItems(userID: $userID, first: $count) {
...TodoItem_item
}
}
query TodoListQuery($userID: ID) {
...TodoList_list(count: $count, userID: $userID)
}
위와 같이 사용할 수 있을 것으로 보인다.
Relay 컴파일러에 AST가 실험적으로 구현됐긴 하나, 서버 구현 등도 지원을 해야 하기에 당장 사용은 어려울 것으로 보인다.
업데이트: envelop 플러그인 등을 이용하면 사용이 가능하다고 한다. (thanks to 혜성님)
Relay Live Resolver 구현이 추가되었다고 하는데, Apollo의 local resolver와 비슷하면서 좀 더 강력한 기능인 것 같다. 구현과 (준)공식 예제가 있으니 살펴보면 좋을 것 같다.
Relay 컴파일러가 변경이 되어야 LSP에 반영이 되기 때문에 함께 추가된 것으로 보인다.
As we look forward to the future of Flight (server components), we don't believe it will be as tightly integrated into GraphQL/Relay, but rather integrated closer to SSR.
... 라고 한다.
일단은 이정도인 것 같다! 작년 하반기의 커밋도 포함되어 있을 정도로 Relay가 그다지 자주 릴리즈를 하는 편이 아니기 때문에, 현재는 버그픽스 등 위주로 판올림이 되며 메인터넌스 위주로, 기능상의 큰 변화는 없는 상태라고 봐도 무방할 듯 하다.
최근 Relay에 관련된 트윗들이 많이 올라오고 있는데, 위의 VS Code 익스텐션 관련 업데이트를 보면 문서 측면에서의 보강도 아주 조금...? 기대해볼 수 있을지도 모르겠다.