diff --git a/scripts/sync-sched/schedule-2025.json b/scripts/sync-sched/schedule-2025.json index c24a7f2dcf..89e3ce7fc3 100644 --- a/scripts/sync-sched/schedule-2025.json +++ b/scripts/sync-sched/schedule-2025.json @@ -113,7 +113,7 @@ "event_start": "2025-09-08 09:00", "event_end": "2025-09-08 09:05", "event_type": "Keynote Sessions", - "goers": "19", + "goers": "18", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -159,7 +159,7 @@ "event_start": "2025-09-08 09:05", "event_end": "2025-09-08 09:15", "event_type": "Keynote Sessions", - "goers": "19", + "goers": "18", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -206,7 +206,7 @@ "event_end": "2025-09-08 09:35", "event_type": "Keynote Sessions", "description": "Even ten years in, GraphQL continues to evolve—not just in code, but in connection. This year the Foundation has doubled down on transparency, support, and shared leadership: board minutes are now public, Subject Matter Experts have helped shape the conference agenda, and we'll be launching a new program live on stage! There are also updates on our existing initiatives including community grants and GraphQL Locals.\n\nThis talk is a thank you to the people behind the progress and a celebration of our growing constellation of contributors. It's also an invitation to step forward and get involved—one of the best ways to do that is by joining our new Community Working Group, giving passionate community members a voice in shaping the Foundation's directions and initiatives for the next ten years of GraphQL.", - "goers": "18", + "goers": "17", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -266,7 +266,7 @@ "event_end": "2025-09-08 09:45", "event_type": "Keynote Sessions", "description": "Meet the new developer journey: Ask AI → Generate code → Iterate → Ship. This fundamental shift in how developers work demands we rethink every touchpoint of our GraphQL APIs. This talk focuses on the developer experience layer—how to design schemas that are self-explanatory, structure documentation so AI gives accurate answers about your API, and build tools that feel like pair programming with a senior engineer.", - "goers": "17", + "goers": "16", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -319,7 +319,7 @@ "event_end": "2025-09-08 10:00", "event_type": "Keynote Sessions", "description": "A peek behind the curtain revealing how GraphQL is used at Meta. We will explore how everything from culture, development process, client and server implementations, schema patterns and conventions, advanced tooling and more work together to allow GraphQL to enable great user and developer experiences at Meta.", - "goers": "18", + "goers": "17", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -372,7 +372,7 @@ "event_end": "2025-09-08 10:15", "event_type": "Keynote Sessions", "description": "As developers build with AI agents, we face a challenge: how do we provide these agents with reliable, flexible access to our distributed data? GraphQL's graph-based approach makes it the ideal language for AI. Join Matt DeBergalis, CEO and Co-founder of Apollo GraphQL, to explore how \"thinking in graphs\" fundamentally transforms API orchestration from procedural code to declarative queries – creating the composable data layer that AI-driven applications require.", - "goers": "18", + "goers": "17", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -417,7 +417,7 @@ "event_start": "2025-09-08 10:15", "event_end": "2025-09-08 10:20", "event_type": "Keynote Sessions", - "goers": "17", + "goers": "16", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -463,7 +463,7 @@ "event_start": "2025-09-08 10:20", "event_end": "2025-09-08 10:45", "event_type": "Breaks / Networking / Special Events", - "goers": "9", + "goers": "8", "seats": "0", "invite_only": "N", "venue": "Foyer Grote Zaal - 2nd Floor", @@ -589,7 +589,7 @@ "event_end": "2025-09-08 11:15", "event_type": "GraphQL in Production", "description": "At Booking.com, we’re applying AI to uncover data blind spots in our GraphQL schema, specifically gaps between what’s exposed today and what still lives in our legacy Perl systems. As we continue modernizing our frontend architecture, one major challenge is identifying what data is already available, what’s duplicated, and what’s missing entirely from the graph. Using AI, we’ve begun introspecting legacy domains to map their data structures against the schema, surface PII fields for tagging and tracking, and inform where schema design can be improved. In this talk, we’ll share how we’re using AI to support schema modernization at scale, streamline developer experience, and bring more consistency to a graph that continues to grow and change across teams.", - "goers": "7", + "goers": "6", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -982,7 +982,7 @@ "event_end": "2025-09-08 12:35", "event_type": "GraphQL in Production", "description": "@defer allows you to specify which parts of your operation are urgent, and which can be delayed. However, there is still a contract with @defer: all your data will always be returned, at some later point.\n\nThis poses a problem for certain classes of product: if only 10% of your operation will ever be on consumed, but you don't know exactly which 10% that will be, defer can introduce substantial hidden costs. To improve performance and reduce compute costs, Meta created @async to ensure products only ask for data when it's needed.", - "goers": "7", + "goers": "6", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -1035,7 +1035,7 @@ "event_end": "2025-09-08 12:35", "event_type": "GraphQL in Production", "description": "The most natural way to understand fragments is as a reusable part of a query. We at Meta know that this isn't true and can lead to a world of pain when it comes to making sure the data you fetch matches the code that uses that data (no over-fetching).\n\nThe worst part is both the GraphQL spec and the educational materials mention re-use for fragments as part of their value:\n\"Fragments allow for the reuse of common repeated selections of fields, reducing duplicated text in the document.\"\n\nThis talk will explain what we've learned is the best way to use fragments (as subcomponents you convert to in order to pass to the logic that is tied to that fragment).\n\nWe will use Relay's per-file graphql co-location as a demonstration of this philosophy in action", - "goers": "14", + "goers": "16", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -1124,7 +1124,7 @@ "event_end": "2025-09-08 14:15", "event_type": "Developer Experience", "description": "Great documentation has always been the gold standard of API developer experience, and always a real challenge for GraphQL APIs. With the rise of AI and interactive API playgrounds, developer expectations have evolved. Static docs can be slow, confusing, and outdated, while an AI-powered assistant and API playground offer a dynamic, conversational, and instantly actionable experience. In this session, we’ll explore how we at monday.com leveraged AI and interactive tools to replace traditional documentation for our public GraphQL API, reducing friction and accelerating adoption.", - "goers": "3", + "goers": "2", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -1237,7 +1237,7 @@ "event_end": "2025-09-08 14:15", "event_type": "GraphQL in Production", "description": "GraphQL Subscriptions over WebSockets is an extremely popular way to notify the caller that something happened on the back end. While a high level of Quality of Service is possible in other protocols such as STOMP or MQTT, there is no actual guarantee of delivery with GraphQL Subscriptions: any acknowledgment mechanism should be built in userland.\n \nWebSockets can be interrupted at any time with both graceful and ungraceful disconnections, and the lack of acknowledgment in the subscription protocol affects reliability, making GraphQL Subscription over WebSocket connections susceptible to disconnections, as any protocol failures will result in messages being lost. In other words, Subscriptions are stateful. In this talk, we will investigate a mitigation technique to make them resumable so that the connection can be destroyed and recreated without any message loss.", - "goers": "9", + "goers": "7", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -1283,7 +1283,7 @@ "event_end": "2025-09-08 14:55", "event_type": "Developer Experience", "description": "GraphQL federation has changed how we think about data and it's time to adopt that thinking to how we build UIs and component systems. In this talk, Gabe will share his deep experience from building design systems at Apple, Netflix and now StubHub to help you design yours.\n\nWhat are the advantages GraphQL brings to a traditional React component system? How can fragments optimize the composability of your components? How to reduce duplication while reducing the time you need to ship new features?\n\nWe will provide guidance on how to build and leverage a federated component system along-side your design system.\n\nFinally, we will cover how we've leveraged AI to speedup the creation of our design system and federated components at StuHub. Join to learn more!", - "goers": "12", + "goers": "11", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -1321,7 +1321,7 @@ "end_time": "14:55:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/7d/GraphQL Conf 2025.pdf", + "path": "https://static.sched.com/hosted_files/graphqlconf2025/76/GraphQL Conf 2025.pdf", "name": "GraphQL Conf 2025.pdf" } ], @@ -1494,7 +1494,7 @@ "event_end": "2025-09-08 15:35", "event_type": "GraphQL in Production", "description": "The Member Experience Core Systems team at Netflix is entrusted with orchestrating every facet of the member experience. From the intricacies of the profiles screen to the dynamic homepage and the seamless search for your favorite shows, our robust API layer is the backbone that supports it all.\n\nOperating at an astronomical scale, our two principal Subgraph Services collectively manage over a million GraphQL queries per second. This immense scale, coupled with the diverse queries our systems accommodate, ensures that even the most minute edge cases are brought to light.\n\nIn this presentation, we will delve into two significant production bugs that emerged at scale. The first involved a federation-based solution at the query planning layer, which culminated in a 20% reduction in requests per second and yielded substantial cost savings amounting to hundreds of thousands of dollars. The second, a subgraph service specific enhancement, remarkably doubled the efficiency of our entire fleet.\n\nBy sharing our journey of identifying and resolving these issues, we aspire to provide insights that will directly enhance your day-to-day endeavors using GraphQL.", - "goers": "11", + "goers": "12", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -1634,7 +1634,7 @@ "event_end": "2025-09-08 16:25", "event_type": "Developer Experience", "description": "Over the past few years, GraphQL has fallen out of favor for developers looking to build full-stack typescript applications. With projects like TRPC and NextJS, many people have started to pigeonhole GraphQL into an enterprise-shaped box. But this doesn't have to be the case! In this talk, Alec will give a practical introduction with live coding to Houdini, a GraphQL-first application framework and demonstrate how to rapidly move from idea to creation with a state-of-the-art developer experience that brings GraphQL back as a contender for the best choice for smaller applications.", - "goers": "6", + "goers": "5", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -1686,7 +1686,7 @@ "event_end": "2025-09-08 16:05", "event_type": "GraphQL in Production", "description": "Subscriptions are not like queries and mutations. They require specific thinking and care in any implementation strategy.\nFederation adds a layer of infrastructure that can complicate subscriptions in two ways:\n\n- scaling, because the federation gateway may have to resolve many subscription streams at the same time,\n- translation, because each subgraph has the protocols it supports, and they may not overlap with the protocol used by the clients.\n\nThis lightning talk dives into the challenges of translation we encountered in concrete scenarios:\n\n- How websocket init payloads map, or not, to http headers\n- How to translate SSE requests to websocket requests\n- Alternatives like multipart streams\n- Websocket subprotocols", - "goers": "4", + "goers": "3", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -1723,7 +1723,7 @@ "end_time": "16:05:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/ea/federated-graphql-subscriptions.pdf", + "path": "https://static.sched.com/hosted_files/graphqlconf2025/0a/federated-graphql-subscriptions.pdf", "name": "federated-graphql-subscriptions.pdf" } ], @@ -1738,7 +1738,7 @@ "event_end": "2025-09-08 16:25", "event_type": "GraphQL in Production", "description": "Turning a private GraphQL API into a public one comes with unexpected challenges. We’ll share how we approached this transition—starting from an existing internal schema that wasn’t shaped for external consumers—and the steps we took to expose only what was ready. Using Apollo Federation Contracts, we filtered out unstable or sensitive parts of the graph. Along the way, we defined best practices for the public schema, like cursor-based pagination, using oneOf for inputs and results.\nWe’ll also touch on how we serve the schema through Hive Gateway with a supergraph setup, and the security measures we added, like depth limiting and complexity analysis. To keep things evolving safely, we rely on GraphQL Hive to track usage and guide deprecations.\n \nIf you’re thinking about exposing a GraphQL API—or just want ideas for keeping one clean and manageable—this talk will share what worked for us, what didn’t, and what we learned.", - "goers": "11", + "goers": "12", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -1790,7 +1790,7 @@ "event_end": "2025-09-08 16:25", "event_type": "GraphQL in Production", "description": "Adopting GraphQL federation creates a convenient place in your infrastructure to make authorization decisions:\n\n- It comes early in the request lifecycle, before any subgraph.\n- It has access to the whole client request, as well as the entirety of the federated graph.\n- Authorization can still be the responsibility of the subgraph teams, or a cross cutting concern.\n\nThis talk is about leveraging the special position of the federation gateway for authorization.\n\nWe'll cover the directives federation offers for authorization out of the box: `@authenticated`, `@requiresScopes`, `@policy`. To cover a more advanced use case, we'll explore how to implement fine-grained authorization taking advantage of data from your federated graph by leveraging extensions in the open source Grafbase Gateway.", - "goers": "5", + "goers": "3", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -1827,7 +1827,7 @@ "end_time": "16:25:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/88/authorization-in-federated-graphql.pdf", + "path": "https://static.sched.com/hosted_files/graphqlconf2025/7f/authorization-in-federated-graphql.pdf", "name": "authorization-in-federated-graphql.pdf" } ], @@ -1841,12 +1841,13 @@ "event_start": "2025-09-08 16:35", "event_end": "2025-09-08 17:05", "event_type": "Developer Experience", - "description": "Jetpack Compose is a declarative UI framework for Kotlin and Android. Jetpack Compose makes it easy to describe your UI graph and build composable UIs.\n \nOn the other hand, GraphQL is a declarative language for your Data. GraphQL makes it easy to describe and query your Data Graph.\n \nSounds like a perfect match! \n \nIn this presentation, we'll take a look at the current mobile architectures and how they differ from web architectures. \n \nWe will dive into cache, offline mode and error handling and investigate how GraphQL can help mobile developers build more reactive and robust UIs.\n \nUsing real life examples from the GraphQL conf 2025 app, we well discuss patterns such as colocated fragments, optimistic updates, subscriptions and see how they fit in the mobile app development cycle.\n \nWhile it will use some Kotlin, most of the examples can be applied to iOS and/or any other mobile platform. \n \nIf you're a web developer, I'm hoping to give you some talking point to start the discussion with your mobile teams. Let's unite frontend developers!", - "goers": "2", + "description": "Jetpack Compose is a declarative UI framework for Kotlin and Android. Jetpack Compose makes it easy to describe your UI graph and build composable UIs.\n\nOn the other hand, GraphQL is a declarative language for your Data. GraphQL makes it easy to describe and query your Data Graph.\n\nSounds like a perfect match!\n\nIn this presentation, we'll take a look at the current mobile architectures and how they differ from web architectures.\n\nWe will dive into cache, offline mode and error handling and investigate how GraphQL can help mobile developers build more reactive and robust UIs.\n\nUsing real life examples from the GraphQL conf 2025 app, we well discuss patterns such as colocated fragments, optimistic updates, subscriptions and see how they fit in the mobile app development cycle.\n\nWhile it will use some Kotlin, most of the examples can be applied to iOS and/or any other mobile platform.\n\nIf you're a web developer, I'm hoping to give you some talking point to start the discussion with your mobile teams. Let's unite frontend developers!", + "goers": "3", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", "audience": "Intermediate", + "geo_area": "Yes", "id": "33ba3777057f6b5d6e17b0e6fe86e7d9", "venue_id": "2152809", "speakers": [ @@ -1894,7 +1895,7 @@ "event_end": "2025-09-08 17:05", "event_type": "GraphQL in Production", "description": "A talk covering the journey of The Guild building our new Rust router and query planner.\n\nWe are going to share our years-long journey through learnings, insights and real-life examples on why and how we’ve built our open-source Federation Router and query planner.\n\nIn this talk, we’ll cover:", - "goers": "6", + "goers": "7", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -1953,7 +1954,7 @@ "event_end": "2025-09-08 17:05", "event_type": "GraphQL in Production", "description": "alt title: Surviving Change Without Breaking Everything\n \nWhen we launched our new GraphQL API at Netflix, it felt perfect—destined to power hundreds of millions of devices. Yet, change is inevitable. Even if your schema seems flawless today (which it isn't), requirements will shift, new features will emerge, and regrets will follow.\n \nGraphQL promises evolvability, allowing us to move forward without multiple API versions. But how does this hold up in practice? We mark fields as @deprecated, but what happens next? How can we embrace experimentation without entombing technical debt in the API? Does federation complicate things? Evolving your schema without breaking clients is easy, right? Right??\n \nDrawing from experience with the Netflix API, this talk explores techniques for evolving your schema safely and painlessly. We'll cover the schema lifecycle—from experimentation to design, deprecation, and deletion.\n \nAttendees will leave with:\n- Schema design principles that facilitate change\n- Practical techniques for evolving GraphQL schemas\n- Strategies for managing a deprecation workflow\n \nJoin us as we learn to face the inevitability of change with confidence and serenity.", - "goers": "13", + "goers": "12", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -1999,11 +2000,12 @@ "event_end": "2025-09-08 17:45", "event_type": "GraphQL in Production", "description": "Over the past six years, Viaduct has grown from Airbnb’s unified data access layer into a central platform for hosting business logic — now supporting over 1 million lines of code, 500+ monthly contributors, and 100+ teams.\n\nThat scale has brought a familiar risk: the slow creep toward monolith. Viaduct was never meant to be a microservices system, but we’ve had to make deliberate choices to preserve team autonomy, performance, and codebase sanity.\n\nThis talk shares the strategies we’re using — and actively evolving — to make that possible, including:\n\n* Tenant modules that define slices of the GraphQL schema alongside their implementation logic;\n* Relying on GraphQL fragments instead of service calls for inter-module communication;\n* Building ownership and attribution into the platform so teams can trace metrics and errors back to themselves.\n\nWe haven’t fully solved these challenges — but we’ve learned a lot about what works, what breaks, and what to watch for.", - "goers": "12", + "goers": "11", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", "audience": "Intermediate", + "geo_area": "Yes", "id": "eb8343e5935fbfccaaacf983ef84ab49", "venue_id": "2152809", "speakers": [ @@ -2050,12 +2052,13 @@ "event_start": "2025-09-08 17:15", "event_end": "2025-09-08 17:45", "event_type": "GraphQL in Production", - "description": "In this talk, we'll explore the design and implementation of a distributed GraphQL router built with Kotlin, leveraging graphql-java and Spring Boot. \nBy using Kotlin’s powerful scripting and DSLs, we can create a highly configurable and scalable solution that simplifies the complexity of managing distributed GraphQL APIs.", + "description": "In this talk, we'll explore the design and implementation of a distributed GraphQL router built with Kotlin, leveraging graphql-java and Spring Boot.\nBy using Kotlin’s powerful scripting and DSLs, we can create a highly configurable and scalable solution that simplifies the complexity of managing distributed GraphQL APIs.", "goers": "4", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", "audience": "Intermediate", + "geo_area": "Yes", "id": "cb0e7d61d4055d199e7b9040617c2f88", "venue_id": "2152806", "speakers": [ @@ -2088,7 +2091,7 @@ "end_time": "17:45:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/66/GraphQLConf-KotlinRouter.pdf", + "path": "https://static.sched.com/hosted_files/graphqlconf2025/2c/GraphQLConf-KotlinRouter.pdf", "name": "GraphQLConf-KotlinRouter.pdf" } ], @@ -2103,11 +2106,12 @@ "event_end": "2025-09-08 17:45", "event_type": "GraphQL in Production", "description": "Relay, Meta’s advanced GraphQL client for React, has many innovative capabilities not available in other clients. We will explore these capabilities, what they are, how they work, and the fundamental problems they solve: \n \n- Ensure data consistency with a normalized cache \n- Bound memory usage with user-land garbage collection \n- Avoid append-only queries by statically detecting unused fields \n- Bound JavaScript bundle size with Data Driven Dependencies \n- Build snappy, robust, mutations with rebasing optimistic updates \n- Preload code and data for any surface in just one network roundtrip with Entrypoints \n- Enable optimal data fetching without sacrificing local reasoning with Relay’s compiler \n \nAnd more!", - "goers": "3", + "goers": "5", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", "audience": "Intermediate", + "geo_area": "Yes", "id": "5d34138a7177e8a59443455e36ac1f8c", "venue_id": "2152800", "speakers": [ @@ -2191,7 +2195,7 @@ "event_end": "2025-09-09 18:00", "event_type": "Breaks / Networking / Special Events", "description": "SECURITY NOTICE\nPlease keep all personal belongings in your possession during the conference. GraphQL, The Linux Foundation nor the Pakhuis de Zwijger are responsible for lost or stolen items. If something is misplaced, check in with an Event Staff member at the registration desk.", - "goers": "3", + "goers": "2", "seats": "0", "invite_only": "N", "venue": "K Floor - Underground Floor", @@ -2298,7 +2302,7 @@ "event_start": "2025-09-09 09:00", "event_end": "2025-09-09 17:30", "event_type": "Solutions Showcase", - "goers": "2", + "goers": "1", "seats": "0", "invite_only": "N", "venue": "Workspace - 2nd Floor", @@ -2335,7 +2339,7 @@ "event_end": "2025-09-09 10:30", "event_type": "Workshops", "description": "Join us for an intensive hands-on workshop where you'll build a complete e-commerce application stack, from GraphQL API to AI integration. We'll start by creating a robust GraphQL API using Apollo Router, covering schema design and federation best practices.\n\nThen we'll extend your GraphQL API with a Model Context Protocol (MCP) server, enabling structured AI data access and tool-based interactions. This allows AI assistants to query your products, manage inventory, and process orders directly through your API.This workshop emphasizes exceptional developer experience with hot-reloading capabilities across your entire stack for rapid iteration. You'll learn real-world patterns for connecting GraphQL APIs with MCP servers, handling data flow between layers, and maintaining type safety from your database to your AI tools.\n\nPrerequisites: Familiarity with GraphQL basics. Bring a laptop with Node.js installed.\n\nBy the end of this workshop, you'll be able to:", - "goers": "2", + "goers": "3", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -2426,7 +2430,7 @@ "event_start": "2025-09-09 10:30", "event_end": "2025-09-09 10:45", "event_type": "Breaks / Networking / Special Events", - "goers": "6", + "goers": "9", "seats": "0", "invite_only": "N", "venue": "Foyer Grote Zaal - 2nd Floor", @@ -2463,7 +2467,7 @@ "event_end": "2025-09-09 11:25", "event_type": "Developer Experience", "description": "GraphQL error handling sucks. There, I said it.\n\nEver hunted through the errors list to figure out if a null was legit or caused by an error? If you're like me, you gave up and now treat nulls as \"maybe errored, maybe absent, maybe both.\"\n\nAnd nullability. Schema designers make anything that might fail nullable, producing partial responses when errors occur. But since anything can fail, now everything is nullable—\nand we're drowning in null checks. We recklessly cast to non-null or fall back to the empty string out of desperation. And we still don't know what's truly nullable.\n\nNo more.\n\nThis talk introduces a new, pragmatic approach, born from years of work by the Nullability WG. We propose a future where schemas reflect the true nullability of business entities, and error handling is where it belongs: in your code, not your data. Use your language's built-in tools to handle errors ergonomically; and drop the unnecessary null checks. When you read a null, it should mean one thing: the absence of data.\n\nThis isn't some distant ideal on the horizon of GraphQL's future; with just 512 bytes added to your GraphQL client, you can start adopting this today. Come see how.", - "goers": "11", + "goers": "13", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -2504,12 +2508,12 @@ "event_key": "26", "active": "Y", "pinned": "N", - "name": "Unconference", + "name": "Unconference: Lightning Talks", "event_start": "2025-09-09 10:45", "event_end": "2025-09-09 12:15", "event_type": "Unconference", - "description": "\"Unconference\" starts with U! Do you have a demo to share, an itch to scratch, lightning talk to workshop, or proposal you want to brainstorm? There's ample opportunity to bring your thoughts to the unconference table and seek or share feedback.\n\nThe unconference agenda will be created onsite - stay tuned for more info about how you can add your topics.", - "goers": "1", + "description": "Lightning Talks: Lightning Talk submissions & discussion thread\n\n***\n\"Unconference\" starts with U! Do you have a demo to share, an itch to scratch, lightning talk to workshop, or proposal you want to brainstorm? There's ample opportunity to bring your thoughts to the unconference table and seek or share feedback.\n\nThe unconference agenda will be created onsite - stay tuned for more info about how you can add your topics.", + "goers": "0", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -2546,7 +2550,7 @@ "event_end": "2025-09-09 12:15", "event_type": "Workshops", "description": "In this workshop, we will look at different patterns to integrate various data sources in a federated graph using the Apollo Federation V2 spec, the Composite Schemas spec, WebAssembly with the recently released Component Model, and the Grafbase Gateway.\n\nGraphQL Federation is a fantastic pattern to combine APIs — called subgraphs — into a single schema while sharing types and declaratively depending from data from other subgraphs. In fact, it is too good to keep it to GraphQL subgraphs only — what if you could bring other kinds of APIs and data sources into your federated graph without having to write a dedicated GraphQL server in front of them?\n\nIn the course of the hands-on workshop, we will:\nThe result will be a functioning GraphQL federated graph without GraphQL subgraphs, demonstrating that federation as a mechanism is useful beyond just GraphQL subgraphs.", - "goers": "2", + "goers": "3", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -2590,7 +2594,7 @@ "end_time": "12:15:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/a0/workshop-extensions-composite-schemas.pdf", + "path": "https://static.sched.com/hosted_files/graphqlconf2025/a9/workshop-extensions-composite-schemas.pdf", "name": "workshop-extensions-composite-schemas.pdf" } ], @@ -2605,7 +2609,7 @@ "event_end": "2025-09-09 12:15", "event_type": "GraphQL Working Group", "description": "Although the topic of namespacing has been brought up repeatedly in the GraphQL community over the last decade, there is an understandable worry that it would lead to anti-patterns in schema design. If namespacing is used as an excuse to avoid coordination between teams, this can result in a fragmented GraphQL schema that reflects current team boundaries as opposed to domain or client concerns.\n\nGraphQL Federation offers an alternative architecture: when coordination is enforced and consistency guaranteed, a large number of teams can contribute to a single, coherent GraphQL schema without the danger of stepping on each other's toes.\n\nEven with that architecture in place however, I believe there are still legitimate use cases for namespacing. In this talk, I will go over some of those use cases, and formulate a set of design principles that could guide the introduction of namespacing in GraphQL.", - "goers": "11", + "goers": "14", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -2651,7 +2655,7 @@ "event_end": "2025-09-09 14:15", "event_type": "Breaks / Networking / Special Events", "description": "Use this lunch time to go outside, visit local restaurants, and hang with your new GraphQL friends.\n\nOption 1 - Lunch restaurant guide\nOption 2 - A limited number of bag lunches will be available at the venue for you to take and either eat in the building or take outside.", - "goers": "8", + "goers": "10", "seats": "0", "invite_only": "N", "id": "c792d79fcbf90eafe5aeccec4e753e2a", @@ -2685,7 +2689,7 @@ "event_end": "2025-09-09 14:55", "event_type": "GraphQL Working Group", "description": "The GraphQL community has come together to standardize how people can build distributed systems with GraphQL as an orchestrator. In this talk I will explain the general idea that we have for GraphQL as an Orchestrator in this space and how the new specification is tackling this. We will look at the progress we have made since last GraphQL Conf in the GraphQL composite schema working group and also get some sneak peaks at our early RFCs and prototypes. I will outline how this new specification is taking the best ideas of existing solutions in the market to make the next big leap towards mainstream adoption. This will allow anyone to build tooling by implementing the spec or parts of the spec that seamlessly integrate with other vendors.", - "goers": "7", + "goers": "8", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -2828,7 +2832,7 @@ "event_end": "2025-09-09 15:45", "event_type": "GraphQL Working Group", "description": "Curious about how observability is evolving in the GraphQL ecosystem? This session explores the current state of OpenTelemetry and its integration with GraphQL. We'll cover the fundamentals of OpenTelemetry, introduce the OpenTelemetry working group (https://github.com/graphql/otel-wg), and dive into tracing, logging, and metrics - all essential pillars of observability. You'll also learn how OpenTelemetry is being applied in distributed GraphQL architectures to improve performance monitoring and troubleshooting across services. Whether you're new to observability or looking to level up your GraphQL stack, this talk will bring you up to speed on where the community is heading.", - "goers": "11", + "goers": "12", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -2873,7 +2877,7 @@ "event_start": "2025-09-09 15:45", "event_end": "2025-09-09 16:00", "event_type": "Breaks / Networking / Special Events", - "goers": "7", + "goers": "8", "seats": "0", "invite_only": "N", "venue": "Foyer Grote Zaal - 2nd Floor", @@ -2910,7 +2914,7 @@ "event_end": "2025-09-09 16:40", "event_type": "GraphQL Working Group", "description": "Learn how to lower latency in your applications by streaming your GraphQL responses using the @defer and @stream directives. Learn the trade-offs of when to use these new directives and how they differ from GraphQL Subscriptions.\n\n@defer and @stream have been in development for some time now and have gone through many iterations. Learn about the motivation behind these changes and how they will lead to scalable GraphQL servers and efficient clients.", - "goers": "8", + "goers": "9", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -2962,7 +2966,7 @@ "event_end": "2025-09-09 17:30", "event_type": "Unconference", "description": "\"Unconference\" starts with U! Do you have a demo to share, an itch to scratch, lightning talk to workshop, or proposal you want to brainstorm? There's ample opportunity to bring your thoughts to the unconference table and seek or share feedback.\n\nThe unconference agenda will be created onsite - stay tuned for more info about how you can add your topics.", - "goers": "0", + "goers": "1", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -3045,7 +3049,7 @@ "event_end": "2025-09-09 17:30", "event_type": "GraphQL Working Group", "description": "This session is an opportunity for working group members to discuss the topics raised in the working group talks earlier in the day, and brainstorm ideas for moving forward.", - "goers": "5", + "goers": "6", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -3265,7 +3269,7 @@ "event_end": "2025-09-10 09:30", "event_type": "GraphQL in Production", "description": "Hacking the Federation Query Planner Federation allows concurrent execution across services - but there’s an edge case! And when it occurs, it’s a big performance problem and potentially very hard to solve.\n\nThis talk showcases an edge case we ran into at Yelp, how we solved it in the short term, and the what the long term spec changes are (specifically within the Composite Schemas spec).", - "goers": "4", + "goers": "5", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -3353,7 +3357,7 @@ "event_end": "2025-09-10 09:30", "event_type": "Developer Experience", "description": "What if your GraphQL schema could do more than provide data? What if it could help your app be more accessible from the start? In this lightning talk, we'll explore an innovative idea of embedding accessibility metadata directly into GraphQL schemas. Inspired by using Kotlin semantics in Jetpack Compose, imagine annotating fields with labels, roles, or screen reader hints that can be used to support screen readers, improve navigation, and even power automated accessibility testing. By adding custom accessibility annotations, tools could generate more accessible UI components, which enhances both the developer experience and the user experience. This is a call to rethink the developer experience and treat accessibility as a first-class concern. Let's reimagine GraphQL not just as a data layer, but as an inclusive design enabler.", - "goers": "8", + "goers": "9", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -3457,7 +3461,7 @@ "event_end": "2025-09-10 10:10", "event_type": "Developer Experience", "description": "Managing separate API definitions for REST and GraphQL APIs that serve the same underlying data can be inefficient and lead to duplicated efforts. At Pinterest, we are streamlining our API definitions and unifying our data models with TypeSpec. TypeSpec allows us to define our API shapes once and generate API schemas in multiple forms such as OpenAPI, Protobuf, and now GraphQL!\n \nWe’ve developed an open-source TypeSpec GraphQL Emitter which generates valid GraphQL schemas directly from TypeSpec definitions.\n \nJoin us for an overview of how TypeSpec and the GraphQL Emitter can streamline your API workflow. We'll explore:\n \n* How TypeSpec's unified definition approach accelerates development across multiple API specs\n* The inner workings of our open-source GraphQL Emitter\n* Our wins and lessons learned while building the GraphQL Emitter\n \nThis talk will be perfect for anyone interested in GraphQL schema generation, unified API definitions, and vague Lord of the Rings references! See you there!", - "goers": "10", + "goers": "9", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -3509,7 +3513,7 @@ "event_end": "2025-09-10 10:10", "event_type": "GraphQL in Production", "description": "Have you ever wondered how GraphQL clients like Relay keep local data consistent across surfaces, ensuring that changes made within a session are seamlessly reflected across an application? In this talk, I'll delve into the concept of Local Data Consistency and explore how GraphQL clients at Meta, such as Relay, efficiently track and update changing GraphQL data locally, without introducing additional networking dependencies, and the UX benefits and features this unlocks.\n\nSpecifically, I’ll cover:\n- What even is Local Data Consistency, and why is it valuable to product developers?\n- How do you implement a data consistency engine from scratch?\n- How are advanced client-side features like offline mutation updates, asynchronous GraphQL request fetching, and more all made possible using a Local Data Consistency?", - "goers": "3", + "goers": "4", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -3761,8 +3765,8 @@ "end_time": "10:50:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/ae/Intro_To_Caching_GraphQLConf_2025.pdf", - "name": "Intro_To_Caching_GraphQLConf_2025.pdf" + "path": "https://static.sched.com/hosted_files/graphqlconf2025/80/IntroToCaching_Graphql2025.pdf", + "name": "IntroToCaching_Graphql2025.pdf" } ], "event_subtype": "Scaling" @@ -3775,7 +3779,7 @@ "event_start": "2025-09-10 10:50", "event_end": "2025-09-10 11:15", "event_type": "Breaks / Networking / Special Events", - "goers": "8", + "goers": "9", "seats": "0", "invite_only": "N", "venue": "Foyer Grote Zaal - 2nd Floor", @@ -3812,7 +3816,7 @@ "event_end": "2025-09-10 11:45", "event_type": "Developer Experience", "description": "There are many aspects to consider when building a GraphQL API: Authentication, authorization, performance, schema design, and team workflow to name a few. Each aspect encompasses considerations, practices, and tools (or lack thereof). One aspect, documentation, can be easily neglected. This year at The Guild I spent time exploring that domain and prototyping an open source tool we’re calling Polen.\n\nI will present our thoughts on what characteristics and features we’d like to have from GraphQL documentation tooling and finish with a demo of how Polen tackled some of those things. I hope this session stimulates your own thinking about what documentation tools should include and tangible technical steps we might take to get there.", - "goers": "3", + "goers": "4", "seats": "0", "invite_only": "N", "venue": "Grote Zaal - 2nd Floor", @@ -3864,7 +3868,7 @@ "event_end": "2025-09-10 11:45", "event_type": "GraphQL in Production", "description": "Traditional GraphQL servers execute queries field by field with a depth-first algorithm as defined in the GraphQL specification. In contrast, GraphQL federation gateways need to partition the query and retrieve chunks of data from external data sources, creating new challenges. We'll present how we solved those challenges with a focus on performance.\n \nThe first, query planning, is to find the best possible plan with the multiple possibilities federation offers to unify your data and the various data sources with their requirements. We express this problem as a graph of possibilities and solve it as a Steiner Tree problem. The second challenge is performant execution. As we need to read and write overlapping chunks of the response in parallel, it's hard to be as efficient as a traditional GraphQL server writing a response iteratively with independent fields. We build an execution DAG with field dependencies, parallelizing work as much as possible without any lock on the response. We also pre-compute the expected data shape to ingest and validate incoming data into the response without any intermediate memory allocation.", - "goers": "4", + "goers": "3", "seats": "0", "invite_only": "N", "venue": "Studio - 5th Floor", @@ -4065,12 +4069,13 @@ "event_start": "2025-09-10 11:55", "event_end": "2025-09-10 12:25", "event_type": "GraphQL in Production", - "description": "Caching is one of the most powerful tools for improving API performance—but in a federated GraphQL architecture, stale data can quickly become a serious challenge. In this session, we will dive into how event-driven patterns can enable precise cache invalidation at the subgraph level, keeping your data fresh without sacrificing speed.\n \nYou will learn key design principles, practical integration strategies for GraphQL subgraphs, and the business impact of a smarter caching approach. We will also explore real-world use cases and demonstrate how CloudEvents can standardize event-based workflows across your architecture. Whether you are optimizing an existing caching layer or just beginning your caching journey, this talk will equip you with practical strategies to reduce latency, lower infrastructure costs, and deliver more reliable experiences to your users.", + "description": "Caching is one of the most powerful tools for improving API performance—but in a federated GraphQL architecture, stale data can quickly become a serious challenge. In this session, we will dive into how event-driven patterns can enable precise cache invalidation at the subgraph level, keeping your data fresh without sacrificing speed.\n\nYou will learn key design principles, practical integration strategies for GraphQL subgraphs, and the business impact of a smarter caching approach. We will also explore real-world use cases and demonstrate how CloudEvents can standardize event-based workflows across your architecture. Whether you are optimizing an existing caching layer or just beginning your caching journey, this talk will equip you with practical strategies to reduce latency, lower infrastructure costs, and deliver more reliable experiences to your users.", "goers": "2", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", "audience": "Any", + "geo_area": "Yes", "id": "aa21698ac3efc45ee1e7a9cbbaf830fe", "venue_id": "2152806", "speakers": [ @@ -4101,6 +4106,12 @@ "start_time_ts": 1757498100, "end_date": "2025-09-10", "end_time": "12:25:00", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2025/a9/GraphQLConf 2025 - JCBD - Smarter Caching With Events_ Targeted Invalidation in Federated Graphs .pdf", + "name": "GraphQLConf 2025 - JCBD - Smarter Caching With Events_ Targeted Invalidation in Federated Graphs .pdf" + } + ], "event_subtype": "Scaling" }, { @@ -4111,7 +4122,7 @@ "event_start": "2025-09-10 12:25", "event_end": "2025-09-10 13:40", "event_type": "Breaks / Networking / Special Events", - "goers": "7", + "goers": "8", "seats": "0", "invite_only": "N", "venue": "Foyer Grote Zaal - 2nd Floor", @@ -4549,7 +4560,7 @@ "event_end": "2025-09-10 15:30", "event_type": "GraphQL in Production", "description": "\"There are only two hard things in Computer Science: cache invalidation and naming things\".\n\nGraphQL provides many benefits over other query languages. Federation builds on top of this foundation to provide even more flexibility and power. But even with all that GraphQL has to offer, the problem of naming remains.\n\nIn this talk, Jeff Dolle, from The Guild, will share what he's learned about schema design: proven design philosophies, designing for forward compatibility, exposing errors through types, and tips for how to avoid ambiguous or misleading type names.\n\nTogether, we will then go through an example product design meeting: taking user stories and building a complete GraphQL schema.", - "goers": "10", + "goers": "11", "seats": "0", "invite_only": "N", "venue": "IJzaal - 5th Floor", @@ -4600,7 +4611,7 @@ "event_start": "2025-09-10 15:30", "event_end": "2025-09-10 15:50", "event_type": "Breaks / Networking / Special Events", - "goers": "8", + "goers": "9", "seats": "0", "invite_only": "N", "venue": "Foyer Grote Zaal - 2nd Floor", @@ -4727,8 +4738,8 @@ "end_time": "16:20:00", "files": [ { - "path": "https://static.sched.com/hosted_files/graphqlconf2025/8b/Mauricio Montalvo - GraphQL Conf 2025 - v2.pdf", - "name": "Mauricio Montalvo - GraphQL Conf 2025 - v2.pdf" + "path": "https://static.sched.com/hosted_files/graphqlconf2025/29/Mauricio Montalvo - GraphQL Conf 2025 - v3.pdf", + "name": "Mauricio Montalvo - GraphQL Conf 2025 - v3.pdf" } ], "event_subtype": "Case studies" diff --git a/scripts/sync-sched/speakers.json b/scripts/sync-sched/speakers.json index 9e2646dce6..f45034d5f1 100644 --- a/scripts/sync-sched/speakers.json +++ b/scripts/sync-sched/speakers.json @@ -2366,7 +2366,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491534 }, { "username": "michael.bleigh", @@ -2405,7 +2405,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491534 }, { "username": "omribruchim", @@ -2623,7 +2623,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491535 }, { "username": "rickbijkerk54", @@ -2638,7 +2638,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491534 }, { "username": "robert.balicki", @@ -2726,7 +2726,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491534 }, { "username": "saihajpreet.singh", @@ -2765,7 +2765,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491534 }, { "username": "sanvertarmur", @@ -2780,7 +2780,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491534 }, { "username": "sasanders26", @@ -3046,7 +3046,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491535 }, { "username": "suresh_muthu", @@ -3153,7 +3153,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904601333 + "~syncedDetailsAt": 1757406491535 }, { "username": "tim.hall.engr", @@ -3358,7 +3358,7 @@ "_years": [ 2025 ], - "~syncedDetailsAt": 1756904606430 + "~syncedDetailsAt": 1757406491535 }, { "username": "yaacovcr",