Stellate Product Updates logo
Back to Homepage Subscribe to Updates

Product Updates

See the latest new features, improvements, and product updates

Labels

  • All Posts
  • Fix
  • Announcement
  • Improvement
  • graph api
  • feature

Jump to Month

  • December 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • January 2023
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
Improvement
2 years ago

🖥️ GraphiQL Enhancements

🚫 ESC Autocomplete Popup Control

We've stopped closing the GraphiQL dialog with the ESC key, allowing you to close the autocomplete popup without unintentionally closing the entire dialog.

📏 Resizable GraphiQL Interface

We've added the ability to resize the GraphiQL interface, giving you more control over your workspace.

📺 Full-Screen Mode on Smaller Screens

For improved usability on smaller screens, we now automatically open GraphiQL in full-screen mode.

💾 Persisted Headers & Variables

We've made it so that headers and variables in GraphiQL persist, ensuring they're still available when you return or refresh the browser.

🎯 Auto-Focus Query Editor

The query editor now auto-focuses upon opening the modal, streamlining your editing experience.

Avatar of authorTim Suchanek
Improvement
2 years ago

💻 Enhanced Config Editing Experience

🧠 Intelligent Diffing Algorithm

We've upgraded our diffing algorithm to better understand the reordering of config items. As a result, it won't show a diff for reordered items, making the editing process much smoother.

🔐 Unquoted JSON Keys

To prevent crashes in certain cases, we now unquote JSON keys in the config. This simple change will significantly improve the editor's stability.

📏 Responsive Config Editor

We've made the config editor responsive, ensuring it utilizes as much of your screen as possible. This improvement allows for a more comfortable and efficient editing experience.

🛡️ Enhanced TypeScript Validation

To guarantee high-quality configurations, we've tightened the rules to only allow correct TypeScript. This enhancement ensures that you won't accidentally store incorrect configs, providing peace of mind and a more reliable user experience.

⌨️ Submit Changes with CMD+Enter

For a more streamlined editing process, you can now submit your changes using CMD+Enter. This keyboard shortcut makes saving your work quicker and more convenient.

Avatar of authorTim Suchanek
Improvement
2 years ago

Dashboard performance & accessibility improvements

  • We improved the font-loading performance in the dashboard by pre-loading and removing some unused weights.
  • Additionally, we tuned a11y by adding alt-texts to all images, and buttons and added link names.
  • And as always, speeding up an app can be improved by fetching the data quicker!
  • We improved our fetching strategy from the metrics page as well!
Avatar of authorTim Suchanek
Improvement
2 years ago

Streamlined Purging View

Our team has worked hard to make cache purging more usable.

One-Click Cache Purging

  • We've introduced a "Purge Cache" button that allows you to easily clear the entire cache with a single click. No more tedious cache management - just click, and you're done!

Purging API Endpoint

  • To make our caching solution even more developer-friendly, we've added a purging API endpoint. This addition makes it more accessible and convenient for you to integrate cache purging into your stack.

Linked Affected Types in Purging View

  • To provide better context and make navigation easier, we now link the affected types in the purging view to the related page displaying the type. This enhancement will save you time and help you better understand your cache structure.

Direct Purge from Operations and Schema Pages

  • We've added "Purge" buttons to both the Operations and Schema pages, so you can directly access the purging view from these locations. This streamlined approach will make it even easier to manage your cache and keep your data fresh.
Avatar of authorTim Suchanek
Improvement
2 years ago

🎛️ Bring your own cache-control

We're excited to announce an improvement to the ignoreOriginCacheControl configuration option, giving you even more control over cache behavior customization!

Previously, when this option was set to false, it mainly prevented the deletion of the cache control received from your origin. However, it would still be overridden by the rules applied based on your results.

Now, setting this option to false treats the cache-control header from your origin as an additional cache rule. The system first calculates the cache-control from your stellate-config and then compares it to the cache-control header received from your origin. If your cache-control permits a shared cache, we consider the s-maxage, max-age, and stale-while-revalidate directives and choose the lowest value to optimize caching.

Furthermore, when non-cacheable directives like private, no-store, or no-cache are encountered, we will set the max-age to 0 and treat it as a cache pass.

Rest assured, if you have an undefined or truthy setting, there will be no changes.

This enhancement allows you to overwrite the cache-control header correctly, providing greater flexibility in customizing cache behavior. We hope you find this update helpful!

Avatar of authorTim Suchanek
2 years ago

🌪️ Introducing purging by scopes

We're excited to announce a new feature that enables purging by a specific scope value, designed for users who utilize Stellate in a multi-tenant fashion.

This feature allows for more granular cache purging while maintaining overall performance and ease of use.

It has been requested by a bunch of you on our Stellate Feedback board: https://stellate.co/app/feedback/p/purge-by-scope-value

Read more in the docs

We introduce two new mutations in the purging API to make this possible.

You can purge the cache for regular scopes as well as JWT-scopes every time we encounter a scope we'll create a surrogate key for it.

_purgeScope

To purge all queries that are cached with a certain scope, you can now use _purgeScope

_purgeJWTScope

To purge all queries that are cached with a certain JWT scope, use _purgeJWTScope.

Check out the docs

Avatar of authorTim Suchanek
Improvement
2 years ago

📊 Metrics Improvements

Based on your awesome feedback, we did a bunch of improvements on our metrics page! These improvements are supporting a range of more use-cases, such as improved debugging of latency, cache hits and scopes!

🔢 Total count and cache hit rate on operations page

On the operations page, we’re now showing the total count per operation. This is useful to know what your most requested operations are, so you have a starting point what to optimize first.


👥 Distinct IPs

On the schema, operations, and users pages, we’re now showing the unique users.


🔍 Filtering by Scopes

So far, it was very hard to debug the cache hit rate for queries that are included by a certain scope. With the new Scopes filter, you're able to filter the entire metrics dashboard by that value.


↕️ Sorting by latency

To find your slowest requests, you can now sort by latency!

Avatar of authorTim Suchanek
FixImprovement
2 years ago

Stellate Config Improvements

💅  Service Config Formatting

  • We improved how your service config is shown in the dashboard. We’re now formatting it with singles quotes and trailing commas.


📚 Importing functions from the stellate package

You can now import functions from the stellate package in the UI, fully type safe 🎉 

More Fixes

  • The CLI is now printing a correct config for the stellate init command.
  • The dashboard now shows the billing portal for failed payments.
  • Links to individual Canny posts are fixed.
  • Our Slack integration authentication had a hick up, which we now fixed.
  • We fixed some edge cases in the configuration function serialization, which caused errors or bundled them into a faulty code.
  • The rules in the configuration now support null and undefined rules. This is particularly helpful if you want to calculate the rules programmatically.
  • Ensure that all responses are purgeable, even in cases where we run a pass-through (bail), with the origin setting a cache control header.
Avatar of authorTim Suchanek
AnnouncementImprovement
2 years ago

GraphQL Rate Limiting (Beta)

We've just added Rate Limiting for your GraphQL API. We are excited to announce the Beta release of our latest feature. With Rate Limiting we want to help you to protect your GraphQL API from bots, hackers, and SLA violations by rate limiting specific GraphQL operations. 

Through our conversations with hundreds of companies using GraphQL in production, we’ve learned about some common pain points:

  1. Bots spamming their addToCart mutation whenever they drop new limited edition products
  2. Hackers sending lots of requests to the login mutation, trying to crack their users’ passwords
  3. Consumers exceeding SLAs they’ve signed that limit the number of times they can request certain data

The solution for all of these is to rate limit the number of calls any single consumer can make. For example, only allowing two login or addToCart mutations from a single actor every ten seconds. 

Check out the docs and learn how to use Rate Limiting to protect your GraphQL API. While still in Beta, keep an eye on the limitations.

Join the channel #rate-limiting for feedback and support on our Discord server! 

Avatar of authorTim Suchanek
FixAnnouncementImprovementgraph api
2 years ago

Announcing Our Open GraphQL API: Integrate with the Stellate Platform

We are excited to announce that our GraphQL API is now open for anyone to use! 🎉

GraphQL gives a lot of power to developers through flexibility, which is why many of us love it. That flexibility has the downside of making it harder to open up GraphQL APIs, with authorization, schema evolution and security being non-trivial concerns.

However, opening up your API and enabling third-party developers to integrate with your systems is a powerful way to create business value. That’s why our current mission to make open GraphQL APIs ubiquitous, and our first step towards that is opening up our own GraphQL API to allow anyone to build an integration with our platform.

If your company is using GraphQL and you’re also thinking about opening up your GraphQL API, apply to be a part of our Open GraphQL API Pilot Program, where our GraphQL experts help companies successfully open up their GraphQL APIs.

Learn more in the announcement blog post and check out the docs to get started!

Team

  • Dominic Petrick, who previously worked on the Prisma Query Engine, has joined us as a full-time Rust developer

Changes

  • All Stellate endpoints now show the new GraphiQL v2 🎉 To see an example, visit graph.stellate.co 
    • If you're not seeing this at your Stellate service's endpoint, make sure to enable introspection and set enablePlayground: true
  • Changelog inception: the changelog has been embedded in the dashboard sidebar so you all can see this
  • We now allow overwriting enablePlayground within environments
  • We added two new mutations to our open API:
    • applyForJob - apply to a job at Stellate through a GraphQL mutation 🤯
    • submitApiFeedback - GraphQL inception: making it possible to give feedback for our new API through our API 😍

Fixes

  • Fixed a rare infinite loop when closing modals, which sometimes triggered an infinite toast popup loop
  • Incorrect variables are now handled gracefully in GraphiQL
  • Fixed Intercom authentication so we know it's you reaching out with questions
  • Fixed an issue with upgrading to the business plan
  • Fixed showing empty cards in the service history
  • Fixed the error query and country not showing
  • Ensured the cache state & response timing is always visible in GraphiQL
  • Fixed the Purging IDE button and shared metrics layout
Avatar of authorTim Suchanek