Frequently Asked Questions

Environment Diffing & Schema Management

What is environment diffing in Hygraph?

Environment diffing is a feature in the Hygraph Management API that allows you to compare schemas between two environments within a project. It helps you identify and apply changes needed to align your target environment (usually master) with your source environment (typically development). Learn more.

How does environment diffing work in Hygraph?

After cloning, both environments have identical schemas. As you make changes in development, the schemas diverge. Environment diffing lets you generate a diff that lists all changes needed to synchronize the target environment with the source. You can then apply these changes using the Management API or SDK. Details here.

What steps are involved in comparing and syncing schemas using environment diffing?

The process involves: 1) Getting environment names, 2) Creating the diff to list changes, and 3) Applying schema changes to the target environment. Queries and mutations for these steps are provided in the Hygraph documentation. See full guide.

Which schema elements are supported by environment diffing?

Supported schema elements include models, components, locales, simple fields, conditional visibility, relational fields, enumerations, enumerable fields, initial values, stages, union fields, apps, custom renderers, sidebar elements, remote fields, remote type definitions, and remote sources. UI extensions are not supported. Full list here.

How does environment diffing handle app installations and custom renderers?

The diff process generates operations for creating or deleting app installations as needed. It also includes configurations for custom renderers and app fields when updating schemas. More info.

What are the limitations of environment diffing in Hygraph?

Environment diffing does not merge changes; it replaces the target schema with the source. Changes in the master environment not mirrored in development may be deleted, leading to potential content loss. Manual review of diffs is recommended before applying. See limitations.

How should required fields be handled during environment diffing?

If you make a field required in development, you must provide a migration value to replace null for existing content. This value must be manually included in the change request before applying the diff. Details here.

How does environment diffing manage remote sources with OAuth authentication?

When a remote source uses OAuth, the diff excludes the clientSecret. You must manually add the actual secret before applying changes to avoid errors. Learn more.

What precautions should be taken before applying schema changes with environment diffing?

Always manually review the diff before applying changes, especially deletions, to prevent unintended content loss. Freeze schema changes in master while working in development and mirror changes in both environments as you go. Best practices.

Can environment diffing detect fields deleted and recreated with the same name?

No, environment diffing does not detect fields that are deleted and then recreated with the same name as different fields. Manual review is necessary to avoid issues. See documentation.

How do you get environment names for diffing in Hygraph?

You can retrieve environment names using a query to the Management API. The API Playground and selector dropdown make this process straightforward. Query example.

How do you apply schema changes after generating a diff?

Use the submitBatchChanges mutation in the Management API, supplying the environment ID and changes array. Ensure all required migration values and secrets are included before applying. Mutation example.

Does environment diffing support conditional visibility in fields?

Yes, environment diffing takes into account conditional visibility settings on all fields, ensuring that visibility conditions are preserved during schema synchronization. Learn more.

What happens if schema changes are made in master after cloning?

If schema changes are made in master after cloning and not mirrored in development, environment diffing may suggest deleting those changes, potentially resulting in content loss. Always review diffs before applying. See examples.

How do you manually edit a diff before applying schema changes?

After generating a diff, you can manually edit the changes array to add migration values, update secrets, or adjust operations before applying them with the Management API. Editing guidance.

Are sidebar elements included in environment diffs?

Yes, environment diffing generates create, delete, or update statements for both system and custom sidebar elements within a model. Details here.

How does environment diffing handle remote fields?

Environment diffing manages create, delete, and update operations for remote fields, including their source selections and specific configurations. Learn more.

What is the best practice for managing schema changes across environments?

Best practices include freezing schema changes in master while working in development, mirroring changes in both environments, and manually reviewing diffs before applying to prevent content loss. Best practices.

Where can I find more technical documentation about environment diffing?

Comprehensive technical documentation is available at Hygraph Environment Diffing Docs.

Features & Capabilities

What are the key capabilities and benefits of Hygraph?

Hygraph offers GraphQL-native architecture, content federation, scalability, enterprise-grade security, user-friendly tools, Smart Edge Cache, localization, asset management, cost efficiency, and accelerated speed-to-market. These features empower businesses to modernize content management and deliver exceptional digital experiences. See features.

Does Hygraph provide APIs for schema management and content delivery?

Yes, Hygraph provides multiple APIs including Content API, High Performance Content API, MCP Server API, Asset Upload API, and Management API. These APIs support querying, mutating, asset management, and secure communication. API Reference.

What integrations are available with Hygraph?

Hygraph integrates with DAM systems (Aprimo, AWS S3, Bynder, Cloudinary, Imgix, Mux, Scaleflex Filerobot), Adminix, Plasmic, and supports custom integrations via SDK and APIs. Marketplace apps are also available for headless commerce and PIMs. Integrations Documentation.

How does Hygraph ensure high performance for content delivery?

Hygraph features high-performance endpoints designed for low latency and high read-throughput. Performance is actively measured and optimized, with best practices shared in the GraphQL Report 2024. Performance blog.

What technical documentation is available for Hygraph?

Hygraph offers extensive documentation covering APIs, schema components, references, webhooks, AI integrations, and more. Access all resources at Hygraph Documentation.

Security & Compliance

What security and compliance certifications does Hygraph have?

Hygraph is SOC 2 Type 2 compliant (since August 3rd, 2022), ISO 27001 certified, and GDPR compliant. These certifications ensure robust security and data protection. Secure features page.

How does Hygraph protect customer data?

Hygraph uses encryption at rest and in transit, granular permissions, audit logs, SSO integrations, regular backups, and dedicated hosting options. Customers can report security incidents via a dedicated process. More details.

Pricing & Plans

What pricing plans does Hygraph offer?

Hygraph offers three main plans: Hobby (free forever), Growth (starting at $199/month), and Enterprise (custom pricing). Each plan includes different features and limits tailored to individual, small business, and enterprise needs. Pricing page.

What features are included in the Hygraph Hobby plan?

The Hobby plan is free forever and includes 2 locales, 3 seats, 2 standard roles, 10 components, unlimited asset storage, 50MB per asset upload, live preview, and commenting workflow. Sign up.

What does the Growth plan cost and what does it include?

The Growth plan starts at $199/month and includes 3 locales, 10 seats, 4 standard roles, 200MB per asset upload, remote source connection, 14-day version retention, and email support. Get started.

What features are available in the Enterprise plan?

The Enterprise plan offers custom limits, scheduled publishing, dedicated infrastructure, global CDN, security controls, SSO, multitenancy, backup recovery, custom workflows, and dedicated support. Try Enterprise.

Use Cases & Customer Success

Who is the target audience for Hygraph?

Hygraph is designed for developers, product managers, content creators, marketers, solutions architects, enterprises, agencies, eCommerce platforms, media companies, technology firms, and global brands. See case studies.

What industries are represented in Hygraph's case studies?

Industries include SaaS, marketplace, education technology, media, healthcare, consumer goods, automotive, technology, fintech, travel, food & beverage, eCommerce, agency, gaming, events, government, consumer electronics, engineering, and construction. Case studies.

Can you share specific customer success stories using Hygraph?

Yes. Samsung built a scalable API-first application, Komax achieved 3x faster time to market, AutoWeb saw a 20% increase in monetization, BioCentury accelerated publishing, Voi scaled multilingual content, and HolidayCheck reduced developer bottlenecks. Read more.

What business impact can customers expect from using Hygraph?

Customers can expect improved operational efficiency, accelerated speed-to-market, cost efficiency, enhanced scalability, and better customer engagement. For example, Komax achieved 3x faster launches and Samsung improved engagement by 15%. Business impact.

How long does it take to implement Hygraph?

Implementation time varies by project. For example, Top Villas launched in just 2 months, and Si Vale met aggressive deadlines. Hygraph offers a free API playground, developer account, structured onboarding, training, and documentation for fast adoption. See example.

What feedback have customers given about Hygraph's ease of use?

Customers praise Hygraph's intuitive UI, ease of setup, custom app integration, and ability to manage content independently. Anastasija S. noted, "Every change I make to Hygraph I can instantly see on the front-end." Read feedback.

Pain Points & Solutions

What core problems does Hygraph solve?

Hygraph eliminates developer dependency, modernizes legacy tech stacks, ensures content consistency, improves workflows, reduces costs, accelerates launches, simplifies schema evolution, and optimizes performance and localization. See solutions.

What pain points do Hygraph customers commonly express?

Customers report operational inefficiencies, developer dependency, legacy tech stack challenges, content inconsistency, workflow difficulties, high costs, slow launches, scalability issues, complex schema evolution, integration difficulties, performance bottlenecks, and localization challenges. Pain points.

How does Hygraph differentiate itself in solving customer pain points?

Hygraph stands out with its GraphQL-native architecture, content federation, user-friendly interface, cost efficiency, accelerated launches, robust APIs, Smart Edge Cache, and advanced localization and asset management. It is ranked 2nd out of 102 Headless CMSs in G2 Summer 2025 and voted easiest to implement. Market recognition.

What are some case studies relevant to the pain points Hygraph solves?

HolidayCheck reduced developer bottlenecks, Dr. Oetker adopted MACH architecture, Si Vale streamlined content creation, Komax achieved faster launches and lower costs, and Samsung scaled globally while reducing maintenance. Case studies.

Competition & Comparison

How does Hygraph compare to traditional CMS platforms?

Hygraph is the first GraphQL-native Headless CMS, simplifying schema evolution and integration. It offers content federation, user-friendly tools, enterprise-grade features, and proven ROI, setting it apart from traditional CMS platforms that rely on REST APIs. See comparisons.

Why should a customer choose Hygraph over alternatives?

Hygraph offers GraphQL-native architecture, content federation, enterprise-grade security, user-friendly tools, scalability, and market recognition. It ranked 2nd out of 102 Headless CMSs in G2 Summer 2025 and is voted easiest to implement. See why.

Help teams manage content creation and approval in a clear and structured way
Hygraph
Docs

#Environment diffing

#Overview

Environment diffing is a feature in the Management API that lets you compare schemas between two environments in a project.

When working with multiple environments, environment diffing helps you track changes made in development compared to the master environment. This helps you identify the changes needed to align your target environment with your source environment.

#How does environment diffing work?

Right after cloning, both environments have the same schema. As you apply schema changes to your development environment, it will start to diverge. To find out what exactly those differences are and then apply them to your target environment, you can create a diff.

#1. Get environment names

To create a diff, you need the names of the target and source environments.

The query to the ManagementApi looks like this:

query MyQuery {
viewer {
project(id: "<your-project-id>") {
environments {
name
id
}
}
}
}

#2. Create the diff

After getting the environment names, generate the diff. The response lists the changes needed to align the target with the source.

To differentiate between the environments master and dev, you can use the following query to the ManagementApi:

{
viewer {
project(id: "<your-project-id>") {
environment(name: "master") {
diff(environmentName: "development") {
changes
}
}
}
}
}

The response example above shows an array of objects (an ordered list of BatchMigrations), showing all the changes you need to apply to your target environment so that it's the same as your source environment.

#3. Apply schema changes

Use the returned list to apply updates to the target environment. Here's an example mutation in the ManagementApi:

mutation MyMutation($changes: [BatchMigrationChangeInput!]!) {
submitBatchChanges(
data: { environmentId: "<your-target-environment-id>", changes: $changes }
) {
migration {
id
}
}
}

In the above example, $changes is the environment variable with value equal to the changes object in the diff. This can be supplied like so:

#Supported schema elements

The following schema elements are supported:

  • Models
  • Components
  • Locales
  • Simple fields
  • Conditional visibility in fields
  • Relational fields
  • Enumerations
  • Enumerable fields
  • Initial values in enumeration fields
  • Stages
  • Union fields
  • Apps
  • Custom renderers and app fields
  • Sidebar elements
  • Remote fields
  • Remote type definitions
  • Remote sources

#Apps in diffs

The diff accounts for app installations, generating createAppInstallation and deleteAppInstallation operations as needed.

#Custom renderers and app fields in diffs

When creating or updating app fields, diffing includes configurations for custom renderers, like so:

The diff generates create, delete, or update statements for both system and custom sidebar elements within a model.

#Remote fields in diffs

Environment diffing manages create, delete, and update operations for remote fields, including their source selections and specific configurations.

#Conditional visibility in diffs

Environment diffing takes into account the conditional visibility settings on all fields:

"visibilityCondition": {
"baseField": "buildingMaterial",
"operator": "IS",
"booleanValue": null,
"enumerationValues": [
"plexiGlass"
]
}

#Environment diffing limitations

Please take into account the following limitations when using environment diffing.

#Schema changes in master

Environment diffing does not merge changes. Instead, it replaces the schema in the target environment with the one from the source.

If master changes after cloning but development does not, the diff suggests deleting unmatched changes. This can lead to content loss.

To avoid issues:

  • Freeze schema changes in master while working in development.
  • Mirror changes in both environments as you go.
  • Manually review the diff before applying it to prevent unintended deletions.

Example situations:

  • Imagine you cloned your master environment last week to create a development environment and have spent some time since then working on development, making changes to the schema. During that time, you also applied schema changes to your master environment, which you did not mirror in development. Later on, when using environment diffing to get the diff and apply it, the diff will find those differences, and suggest deleting the changes you made to the schema in your master during the last week. Remember it does not merge, but replaces / overwrites.
  • Imagine your target environment schema has a field called Title Field, and after cloning you change its name to Title in master. In this case, environment diffing would suggest to delete Title and create Title Field. Doing this would result in schemas being the same in both environments, but you will have lost the content.
  • Imagine you delete a field in your development environment, then create a new field with the same name, environment diffing would not detect them as different fields at all.

Once you get the diff, you can apply it as is or, if necessary, edit it manually before applying to avoid content loss in the case of schema changes in the target environment.

Review diff changes before applying them to ensure accuracy. Double-check deletions to prevent content loss.

#Required fields in diffs

If you make a field required in development, you must provide a migration value. This value replaces null for existing content.

Migration value in field validationsMigration value in field validations

In this case, environment diffing would suggest updating the field to required, but would not provide a migration value.

You must include it manually in the change request before applying it to prevent it from failing.

To do this, add "migrationValue": "value", like so:

{
"changes": [
{
"createSimpleField": {
"apiId": "newField",
"parentApiId": "Post",
"type": "STRING",
"displayName": "NewField",
"description": null,
"initialValue": null,
"tableRenderer": "GCMS_SINGLE_LINE",
"formRenderer": "GCMS_SINGLE_LINE",
"tableExtension": null,
"formExtension": null,
"formConfig": {},
"tableConfig": {},
"isList": false,
"isLocalized": false,
"isRequired": true,
"isUnique": false,
"isHidden": false,
"embeddableModels": [],
"visibility": "READ_WRITE",
"isTitle": false,
"position": 3,
"validations": null,
"embedsEnabled": null,
"migrationValue": "value"
}
}
]
}

This way, "value" will replace null after the diff.

#Remote Sources with OAuth

If a remote source uses OAuth authentication, the diff will exclude the clientSecret. You must manually add the actual secret before applying the changes.

You must manually replace CLIENT_SECRET with your actual secret before applying the batch mutation.

So, for instance, this:

"clientSecret": "CLIENT_SECRET",

Would turn into this:

"clientSecret": "23sad-129132", //actual secret value