diff --git a/apps/docs/content/guides/realtime/settings.mdx b/apps/docs/content/guides/realtime/settings.mdx index 9675d92b5bb21..5ea09ac002877 100644 --- a/apps/docs/content/guides/realtime/settings.mdx +++ b/apps/docs/content/guides/realtime/settings.mdx @@ -27,3 +27,4 @@ You can set the following settings using the Realtime Settings screen in your Da - Database connection pool size: Determines the number of connections used for Realtime Authorization RLS checking {/* supa-mdx-lint-disable-next-line Rule004ExcludeWords */} - Max concurrent clients: Determines the maximum number of clients that can be connected +- Max events per second: Determines the maximum number of events per second that can be sent diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 8226944743a8d..665fe64bb68ed 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -19,6 +19,7 @@ Barco Fourie Beng Eu Bo Lu Bobbie Soedirgo +Brendan Stephens Brent Newson Carel de Waal Cameron Blackwood @@ -151,6 +152,7 @@ Wen Bo Xie Yorvi Arias Yuliya Marinova Yuri Santana +Zsolt Pazmandy ____________ JOBS diff --git a/apps/docs/public/img/guides/platform/realtime/realtime-settings--dark.png b/apps/docs/public/img/guides/platform/realtime/realtime-settings--dark.png index b9ee8747b559b..8d3d73e420bcd 100644 Binary files a/apps/docs/public/img/guides/platform/realtime/realtime-settings--dark.png and b/apps/docs/public/img/guides/platform/realtime/realtime-settings--dark.png differ diff --git a/apps/docs/public/img/guides/platform/realtime/realtime-settings--light.png b/apps/docs/public/img/guides/platform/realtime/realtime-settings--light.png index 3587df9ebd2c2..fbb18d0301305 100644 Binary files a/apps/docs/public/img/guides/platform/realtime/realtime-settings--light.png and b/apps/docs/public/img/guides/platform/realtime/realtime-settings--light.png differ diff --git a/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx b/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx index 606d9df09105d..26071ec4cd8a1 100644 --- a/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx +++ b/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx @@ -86,8 +86,8 @@ export const RealtimeSettings = () => { .min(1) .max(maxConn?.maxConnections ?? 100), max_concurrent_users: z.coerce.number().min(1).max(50000), + max_events_per_second: z.coerce.number().min(1).max(10000), // [Joshen] These fields are temporarily hidden from the UI - // max_events_per_second: z.coerce.number().min(1).max(50000), // max_bytes_per_second: z.coerce.number().min(1).max(10000000), // max_channels_per_client: z.coerce.number().min(1).max(10000), // max_joins_per_second: z.coerce.number().min(1).max(5000), @@ -117,6 +117,7 @@ export const RealtimeSettings = () => { private_only: !data.allow_public, connection_pool: data.connection_pool, max_concurrent_users: data.max_concurrent_users, + max_events_per_second: data.max_events_per_second, }) } @@ -245,6 +246,36 @@ export const RealtimeSettings = () => { Max concurrent clients } + > + + + + + + + + )} + /> + + + ( + + Sets maximum number of events per second that can be sent to your + Realtime service +

+ } + > + Max events per second + + } > @@ -270,7 +301,7 @@ export const RealtimeSettings = () => {

- {false ? ( + {isFreePlan ? ( ) : ( @@ -287,46 +318,11 @@ export const RealtimeSettings = () => { {/* [Joshen] The following fields are hidden from the UI temporarily while we figure out what settings to expose to the users - - Max events per second - Max bytes per second - Max channels per client - Max joins per second */} - {/* - ( - - Sets maximum number of events per second rate per channel limit -

- } - > - Max events per second - - } - > - - - - - - -
- )} - /> -
*/} {/* { )} /> */} +
{isPermissionsLoaded && !canUpdateConfig && ( diff --git a/apps/studio/components/interfaces/SignIn/SessionTimeoutModal.tsx b/apps/studio/components/interfaces/SignIn/SessionTimeoutModal.tsx index 82ed566f169fa..c4e05cf8bd51b 100644 --- a/apps/studio/components/interfaces/SignIn/SessionTimeoutModal.tsx +++ b/apps/studio/components/interfaces/SignIn/SessionTimeoutModal.tsx @@ -3,6 +3,7 @@ import { useEffect } from 'react' import { InlineLink } from 'components/ui/InlineLink' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' +import { toast } from 'sonner' interface SessionTimeoutModalProps { visible: boolean @@ -35,13 +36,43 @@ export const SessionTimeoutModal = ({ 'Please try signing in again. If you are not able to sign in again, please contact Support.', }} > -

- Consider{' '} - - generating a HAR file - {' '} - from your session to help Support pinpoint the issue. -

+
+
    +
  • Try with a different browser
  • +
  • Disable browser extensions that block network requests
  • +
  • + +
  • +
+

+ If none of these steps work, please{' '} + + Contact support + + . +

+

+ Consider{' '} + + generating a HAR file + {' '} + from your session to help Support pinpoint the issue. +

+
) } diff --git a/apps/studio/pages/project/[ref]/realtime/settings.tsx b/apps/studio/pages/project/[ref]/realtime/settings.tsx index 664d64d0376fe..5cffb3785b0d8 100644 --- a/apps/studio/pages/project/[ref]/realtime/settings.tsx +++ b/apps/studio/pages/project/[ref]/realtime/settings.tsx @@ -9,11 +9,7 @@ import { DocsButton } from 'components/ui/DocsButton' import { DOCS_URL } from 'lib/constants' const RealtimePoliciesPage: NextPageWithLayout = () => { - return ( - - - - ) + return } RealtimePoliciesPage.getLayout = (page) => ( @@ -22,10 +18,9 @@ RealtimePoliciesPage.getLayout = (page) => ( } + primaryActions={} > - {page} + {page} diff --git a/apps/www/_blog/2025-10-08-triplit-joins-supabase.mdx b/apps/www/_blog/2025-10-08-triplit-joins-supabase.mdx new file mode 100644 index 0000000000000..2159ab2fbeb42 --- /dev/null +++ b/apps/www/_blog/2025-10-08-triplit-joins-supabase.mdx @@ -0,0 +1,26 @@ +--- +title: 'Triplit joins Supabase' +description: 'Matt Linkous is joining Supabase to expand third-party integrations and offline-first capabilities.' +author: paul_copplestone +image: triplit-joins-supabase/thumb.png +thumb: triplit-joins-supabase/thumb.png +date: '2025-10-08:10:00:00' +toc_depth: 2 +--- + +We're excited to welcome Matt Linkous, co-founder of [Triplit](https://www.triplit.dev/), to the Supabase team. + +With this acquisition, we're bringing Matt's deep expertise in the offline-first domain into our ecosystem. Our focus isn't to directly integrate Triplit into our platform. Instead, Matt will be working to expand third-party integrations at Supabase. Part of this effort will be making Supabase an excellent partner to other syncing systems such as [ElectricSQL](https://electric-sql.com/), [Zero](https://zero.rocicorp.dev/), and [PowerSync](https://www.powersync.com/). +Creating a great self-serve integration system is a growing priority at Supabase, so we're excited for Matt to bring his experience as Y Combinator founder and open-source maintainer to build an integration experience that's seamless for both developers using Supabase and third-party providers. + +### Offline mode when? + +We know, firsthand, that there is a lot of demand for better offline mode experience. However, solving offline mode in a way that works for everyone is a formidable challenge. And while Triplit exemplifies how rethinking the database from the ground up can create an admirable developer experience, this move is about Matt's expertise and collaboration, not about immediately using Triplit to solve offline needs at Supabase. We'll continue to explore the best paths forward for offline functionality and communicate transparently as those plans evolve. + +### What Happens With Triplit's Code + +Triplit is already largely open-source but as part of his onboarding, Matt will spend time further open-sourcing the Triplit codebase, documenting the patterns they used, and sharing lessons learned. We hope this knowledge sharing will help support the offline-first community and spark new ideas in the ecosystem. + +### Next Steps + +Stay tuned as we integrate Matt into our team and leverage his insights to enhance the Supabase developer experience. We're excited for what's to come and grateful for your support as we continue to grow. diff --git a/apps/www/public/images/blog/triplit-joins-supabase/thumb.png b/apps/www/public/images/blog/triplit-joins-supabase/thumb.png new file mode 100644 index 0000000000000..2bf403e45a53f Binary files /dev/null and b/apps/www/public/images/blog/triplit-joins-supabase/thumb.png differ