* Throwing 429 errors when ref manager responds with 429 * respecting the APIs retry-after first * Handle 429 on linked file refresh path Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Show rate-limited message on linked file refresh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Consolidate backoff helpers into ProviderBackoffStore Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix EX 0 crash, null guard, BackoffProvider type, test fixes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add unit tests for rate limiting implementation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * update ZoteroProviderTests for new signedGet return shape getCollections now returns { collections, backoff, retryAfter } instead of a bare array. getUsersItemsChanges reads backoff/retryAfter from the signedGet return tuple, not from response.headers (extraction moved to the transport layer in OAuth1Transport). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix tpr-webmodule unit test regressions ZoteroSyncClient: collectionsResponseSchema now requires backoff/retryAfter as number|null; stub responses were missing these fields causing ZodError. Assertions updated since getCollections returns CollectionsResult (object) not a bare array. ReferencesApiController: vi.doMock for @overleaf/fetch-utils was missing RequestFailedError; the three 429 propagation tests inline-import it from the mocked module. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * address PR review comments - ReferencesApiController: add fallback 500 status and optional-chain response in all catch blocks where err.response may be absent - OAuth1Transport: guard Number(header) with Number.isFinite to prevent NaN propagating as backoff/retryAfter when header value is non-numeric - ZoteroProvider: same Number.isFinite guard for lastModifiedVersion Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix prettier formatting in ZoteroSyncManager.test.mjs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * show rate-limited message in groups modal and Write & Cite use-provider-groups: detect 429/rateLimited response and set error to 'rate_limited' instead of generic 'loading_groups' file-tree-import-bibliography: add rate_limited key to all three providers' translation maps so the import modal renders the rate-limited message when groups loading is blocked reference-manager-source: add RateLimitedError, throw it on 429 from search, block further searches and show a toast notification toasts: add write-and-cite:rate-limited toast and showRateLimitedToast() Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fixup! fix tpr-webmodule unit test regressions * fixing CI failures --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> GitOrigin-RevId: 158c2b92c557caacef337b89f68c91c47569151f
An open-source online real-time collaborative LaTeX editor.
Wiki • Server Pro • Contributing • Mailing List • Authors • License
Figure 1: A screenshot of a project being edited in Overleaf Community Edition.
Community Edition
Overleaf is an open-source online real-time collaborative LaTeX editor. We run a hosted version at www.overleaf.com, but you can also run your own local version, and contribute to the development of Overleaf.
Caution
Overleaf Community Edition is intended for use in environments where all users are trusted. Community Edition is not appropriate for scenarios where isolation of users is required due to Sandbox Compiles not being available. When not using Sandboxed Compiles, users have full read and write access to the
sharelatexcontainer resources (filesystem, network, environment variables) when running LaTeX compiles.
For more information on Sandbox Compiles check out our documentation.
Enterprise
If you want help installing and maintaining Overleaf in your lab or workplace, we offer an officially supported version called Overleaf Server Pro. It also includes more features for security (SSO with LDAP or SAML), administration and collaboration (e.g. tracked changes). Find out more!
Keeping up to date
Sign up to the mailing list to get updates on Overleaf releases and development.
Installation
We have detailed installation instructions in the Overleaf Toolkit.
Upgrading
If you are upgrading from a previous version of Overleaf, please see the Release Notes section on the Wiki for all of the versions between your current version and the version you are upgrading to.
Overleaf Docker Image
This repo contains two dockerfiles, Dockerfile-base, which builds the
sharelatex/sharelatex-base image, and Dockerfile which builds the
sharelatex/sharelatex (or "community") image.
The Base image generally contains the basic dependencies like wget, plus texlive.
We split this out because it's a pretty heavy set of
dependencies, and it's nice to not have to rebuild all of that every time.
The sharelatex/sharelatex image extends the base image and adds the actual Overleaf code
and services.
Use make build-base and make build-community from server-ce/ to build these images.
We use the Phusion base-image
(which is extended by our base image) to provide us with a VM-like container
in which to run the Overleaf services. Baseimage uses the runit service
manager to manage services, and we add our init-scripts from the server-ce/runit
folder.
Contributing
Please see the CONTRIBUTING file for information on contributing to the development of Overleaf.
Authors
License
The code in this repository is released under the GNU AFFERO GENERAL PUBLIC LICENSE, version 3. A copy can be found in the LICENSE file.
Copyright (c) Overleaf, 2014-2025.
