Server Assisted Accessibility (Part 2): Enforcing Consistent Semantics via GraphQL + CI
In my apidays Paris session last year, I introduced a “shift left” pattern for accessibility: attach accessibility metadata to GraphQL fields using lightweight directives, expose it through code generation, and let Android (Jetpack Compose), iOS (SwiftUI), and web clients map it into native accessibility semantics for consistent defaults.
This follow-up, Part 2, focuses on the next problem teams hit in production: keeping that metadata accurate as the schema changes. We’ll walk through a practical, low friction approach adding CI friendly validation that catches common contract regressions before changes ship: missing required metadata, invalid values, and template drift.
This approach standardizes the repeatable, high leverage semantics (labels, roles, states, templated summaries) so clients can focus on the platform specific work that truly belongs in the UI (complex interactions, focus order, and behavior).
You’ll leave with schema examples you can adapt, a realistic enforcement blueprint that fits into pull requests and CI, and rollout patterns for introducing rules gradually without breaking existing clients. A public repo with working examples will be provided.
Key takeaways:
• A practical pattern for shipping accessibility semantics alongside data in GraphQL
• CI friendly validation to prevent metadata regressions
• Mapping principles for Compose/SwiftUI consumers
