## Before
Partners fetch is showing stale data from a few months ago
## After
Partners fetch can be revalidated by tag. The revalidation will be
triggered by a DB function when the partners table is changed.
# Before
Crawlers pages that used MDX components with defined attributes errored.
Example: /docs/reference/kotlin/installing
# After
The pages do not error.
* Bump all versions of postcss to 8.5.3.
* Run next/codemod on the docs app.
* Move two experimental flags into stable. Add next-mdx-remote as a transpiled package.
* Add extra folders to the clean command in docs.
* Fix type errors in docs test.
* Run prettier on the new files.
* remove turbopack, fix fetch revalidation, fix metadata awaits
Couple of minor fixes:
- Turbopack doesn't work in dev because of known MDX loader limitations
(cannot load functions in MDX plugin config)
- Fetches not cached by default anymore in Next 15 so need to manually
cache the ones we need
- Missing a few awaits for metadata generation with page params
* Bump the graphiql version because headlessui/react is not building with Next 15.
---------
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
* feat(content api): add client library api reference search results
Allow searchDocs results to also return function references from the
client library APIs
* fix(content api): refine language enum handling
Add a top-level field to search docs globally. Right now this only
returns Markdown guides (not references, GitHub discussions, or partner
pages.
The full GraphQL schema at this point:
```
schema {
query: RootQueryType
}
type RootQueryType {
"""Get the GraphQL schema for this endpoint"""
schema: String!
"""Search the Supabase docs for content matching a query string"""
searchDocs(query: String!, limit: Int): SearchResultCollection
}
"""A collection of search results containing content from Supabase docs"""
type SearchResultCollection {
"""A list of edges containing nodes in this collection"""
edges: [SearchResultEdge!]!
"""The nodes in this collection, directly accessible"""
nodes: [SearchResult!]!
"""The total count of items available in this collection"""
totalCount: Int!
}
"""An edge in a collection of SearchResults"""
type SearchResultEdge {
"""The SearchResult at the end of the edge"""
node: SearchResult!
}
"""Document that matches a search query"""
interface SearchResult {
"""The title of the matching result"""
title: String
"""The URL of the matching result"""
href: String
"""The full content of the matching result"""
content: String
}
```
Towards DOCS-214
* feat (content api): add top-level schema query
Adds a top-level schema query that returns the stringified GraphQL
schema for this endpoint. Useful for LLMs to access the stringified
schema for prompting and tool calls.
Query shape:
```
query Search {
schema
}
```
Query response:
```
{
"data": {
"schema": "schema {\n query: RootQueryType\n}\n\ntype RootQueryType
{\n \"\"\"Get the GraphQL schema for this endpoint\"\"\"\n schema:
String\n}"
}
}
```
Towards DOCS-214
* test (content api): add schema snapshot
Add schema snapshot test to prevent unintentional changes to public API
for this endpoint
* fixup! feat (content api): add top-level schema query
* fix (content api): local dev introspection
The validation rules that are used for security in production are
preventing GraphiQL from introspecting the schema in dev. Since this DX
feature is incredibly useful, I'm turning off the complexity and depth
validations for dev GraphiQL only. Local curls, etc., will still have
production-standard validation so it can be tested locally.
GraphQL errors were occasionally returned as normal HTTP status code
errors, switched to using only GraphQL-spec compliant errors for the
/docs/api/graphql endpoint.
Continue building out the docs/api/graphql endpoint by adding more
validation:
-A query depth limiter
- A query complexity limiter
Also added dummy (empty) root resolver and schema, plus a dev-only
GraphiQL page for better DX.
Endpoint should still return a 404 for now as there is no resolver.
The first PR in a series to build out the Content API. Adds a dummy
GraphQL route with some tests: for now all this does is validate the
request body and return a 404.
An experiment in lowering docs preview build times. Build times have gotten quite long again (~12 minutes) because we are generating types on code blocks during prerendering. This wastes compute time building a lot of pages on preview branches that never get viewed, and slows down iteration speed.
Instead, let's only prerender on prod, and build on-demand for preview sites.
Limiting to realtime section for now to monitor the effects of changes.
Before:
Revalidation was turned off entirely for wrappers pages, and done daily for GraphQL pages.
After:
Revalidation is via tag. There is an /api/revalidate endpoint that is used by GitHub Actions on the federated repos to trigger the revalidation. This decreases the number of unnecessary page generations by Vercel, and gives the maintainers of federated repos more fine-grained control over when to reploy their docs (see the docs deployment playbook for more info).
Before:
There was a bug with middleware rewrites for reference pages without
crawler versions (basically all references except the client SDKs).
There was a branch that was not handled (the requesting user agent is a
a bot, but the reference is not a client SDK), so it failed through to
the base case of NextResponse.next(), which 404s as that page does not
exist for a path like /reference/api/v1-deploy-a-function
After:
Fixed the branch. If all of the following are true:
- Is a reference page
- Requesting user agent is a bot
- Reference is not a client SDK
Then it should follow the same path as a non-bot request, because there
is no bot-specific version. That means it should be rewritten to teh
slugless page: /reference/api/v1-deploya-function => /reference/api
Partials are currently defined via MDX includes. This PR switches to pre-compile-time partials, which have a new syntax:
```
<$Partial path="path/to/file.mdx" />
```
## Rationale
This produces two improvements:
1. Partial substitution can occur in pipelines that don't use MDX compilation. For example, we can now do partial substitution before building the search index, so partial content will also be indexed.
2. After the App Router migration, the MDXProviders should've been deprecated, but were kept around for the sole reason of making partials work, and leading to us shipping unnecessary client-side code. We get a minor decrease in overall client bundle size (5.74 MB to 5.6 MB) by getting rid of the Providers.
## Breaking changes
Besides the change to partial syntax, the arguments are also less powerful than before because we are doing string substitution and don't have the full power of JS. Defining string variables is still possible (documented in the Contributing guide), and since that's all we actually do in practice, this shouldn't be too cumbersome. There is always the escape hatch of making a custom component for more complex content reuse cases.
* feat: add SOC 2 page to docs
* feat: more linking
* fix: make linters happy
* fix: prettier
* chore: make security page available
* typo: sp
* publish security
* chore: publish new security section
* change mobile menu to show Security on Security section
---------
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
* docs InfoPopUp
* docs InfoTooltip
* Add mobile sheet for InfoTooltip
* add InfoTooltip to Info Tooltip contributing guide
* keyboard and screen reader behavior
* remove example
* remove hover trigger on mobile
---------
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
* remove displaying heading for the AI prompts
* remove the prompt note for test
* revert the change for not displaying the heading for the menu
* Add back the title for each prompt
* allow putting frontmatter before heading
---------
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
* docs: split telemetry and troubleshooting sections
* docs: update telemetry copy
Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com>
* fix(ui): fix troubleshooting view in mobile
* format
* fix: troubleshooting search
Troubleshooting previews are displayed using a grid now, and hidden
doesn't work (overriden by grid behavior). Instead, applying
display:none when filtered out.
* sync to db
---------
Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com>
Split guide layouts by section, so that nav data fetches can be pushed down to thesection where they're actually used. Limits blast radius of any data fetch problems, and also lets us push down client components in the future, since layouts now have context on the request path and we don't need a high-level usePathname.
The examples folder needs to be explicitly included in the Vercel Serverless bundle. Because it's at the root of the monorepo rather than being within the `app/docs` folder, we copy it over pre-build (and pre-dev).
Test the examples/prompts fix by re-enabling revalidations on graphql pages. Added a temp version of the fetch function so we can gradually reenable and monitor Vercel error rates over time.
* Overhaul of Migrate within Supabase
* Added sub menus for overhaul of Migrate within supabase
* Re-structuring of content and pages
* Re-organize flow of the guide
* Prettier fix and small additions to dashboard restore guide
* update CLI guide to have dummy data for now
* Add structure for Windows specific instructions
* Add Postgres installation as partial
* Full first draft
* fix headings in main page
* Fix vale issues
* Proofread #1
* Small fixes
* Editing pass
* More edits after first tests.
* Final editting pass after testing
* Add common issues I ran into while testing and fixed installation instructions for MacOS
* Editing pass after more testing and proofreading
* Grammar fixes
* attempt at vale fixes
* Add tip for windows installation
* edits
* Fix dashboard restore hyperlink
---------
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
* lw13:d4
* www queues page (#30907)
* new products menu
* set up cron page
* set up cron page
* placeholder sections
* set up queues page
* update meta
* update Supabase Queues landing page content
* Updated the text to exclude queue creation/management from the API management section
* queues www page
---------
Co-authored-by: Wen Bo Xie <wenbo.xie3@gmail.com>
Co-authored-by: Greg Papas <gregpapas@Gregs-MacBook-Pro.local>
* feat: add queue module (#30853)
* feat: postgres integrations
Create a new global navigation and homepage menu section for the Postgres Integrations category.
reorg: move cron docs into postgres integrations
feat: postgres integrations
Create a new global navigation and homepage menu section for the Postgres Integrations category.
reorg: move cron docs into postgres integrations
docs homepage layout
feat: postgres integrations
Create a new global navigation and homepage menu section for the Postgres Integrations category.
reorg: move cron docs into postgres integrations
feat: postgres integrations
Create a new global navigation and homepage menu section for the Postgres Integrations category.
reorg: move cron docs into postgres integrations
docs homepage layout
feat: postgres integrations
Create a new global navigation and homepage menu section for the Postgres Integrations category.
reorg: move cron docs into postgres integrations
feat: postgres integrations
Create a new global navigation and homepage menu section for the Postgres Integrations category.
reorg: move cron docs into postgres integrations
docs homepage layout
* fix: add pg_cron back to extensions sidebar
* update Supabase Cron docs
* feat: add queues module
feat: add queues module
* remove staging url from screenshots
* remove outdated cron files
* typo
* queues description update
---------
Co-authored-by: Francesco Sansalvadore <f.sansalvadore@gmail.com>
Co-authored-by: Wen Bo Xie <wenbo.xie3@gmail.com>
Co-authored-by: Oliver Rice <github@oliverrice.com>
* visibility timeout to window
* queues landing page sql example
* capitalize Dashboard
* cron blog post citus data callout update
* added draft of queues feature
* updated features bulleting
* pluralize queues
* fix Queues features page
* Inital bp
* queues docs updates
* format queues docs
* queues blog post updates
* edits
* Update the images for role in the docs quickstart for queues.
* updated images
* update images
* update more images
* Update 2024-12-05-supabase-queues.mdx
* fix breaks
* punchier title
* better ul
* clean up
* Retake screenshots
* grammar
* whitelines
* video + images
* update docs
* blog updates
* blog update
* api snippet
* api snippet fix
* queues features yt video
* api snippet fix
* update docs
* blog update
* api snippet fix and vale
* format
* vale off
* vale off
* blog update
---------
Co-authored-by: Francesco Sansalvadore <f.sansalvadore@gmail.com>
Co-authored-by: Greg Papas <gregpapas@Gregs-MacBook-Pro.local>
Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
Co-authored-by: Oliver Rice <github@oliverrice.com>
Co-authored-by: Terry Sutton <saltcod@gmail.com>
Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com>
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
Co-authored-by: Jonathan Summers-Muir <MildTomato@users.noreply.github.com>
Generate the troubleshooting slugs from the filepaths, not the titles. This will help with the automatic migration, since we don't have to worry about duplicate titles.
We allow fetching external data in CodeSamples into a MDX environment, so we have to be careful about preventing code execution.
Current checks:
- External data is inserted as a code block (via the AST, not direct string manipulation), so it is escaped.
Added two new layers of checks:
- Allow-list of organizations, currently set to Supabase-only
- Only allow immutable commit references
When a troubleshooting entry is created or updated in this repo, sync it to GitHub. This creates a new troubleshooting discussion if one does not exist, and updates the content on an existing troubleshooting discussion if it has changed.
To preserve the connections between GitHub discussions and Markdown files, record the discussion ID and URL to the database. The database ID is then written to the Markdown file, and a new PR is generated to commit the new Markdown with ID.
There is currently no mechanism to delete outdated discussions. That will be a follow-up.
* docs: Update auth self-host docs to the latest info
* update description of URI_ALLOW_LIST
* update the variable name
* Add more description about how to configure auth on self-hosted environment
* minor styling fix