* [github-sync] Surface "project too large" errors instead of hanging A GitHub sync of a project whose total editable text exceeds github-sync's 7MB request body limit would hang silently: the modal stayed on "Importing and merging changes in GitHub" and then closed with no error. Root cause was a chain of three issues: 1. github-sync's ErrorMiddleware did not recognise the body-parser PayloadTooLargeError, so it fell through to a generic 500. 2. web's _reportError rethrew any non-4xx error instead of responding, and several github-sync controller handlers were not wrapped in expressify. On Express 4 the rethrow became an unhandled rejection and no HTTP response was ever sent, so the browser request hung until the socket died. 3. the frontend read error.data.error without a null check, which threw a render-time TypeError when the fetch failed at the network level (as it did once the hung request was aborted). Fixes: - github-sync: add ProjectTooLargeError and map the body-parser 413 to it. - web: _reportError always responds (500 for unexpected errors) and every controller handler is expressified as a backstop. - frontend: null-safe error.data?.error, a friendly message for the too-large case, and a generic message for server errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * [github-sync] Refine project-too-large error copy per content guidance Apply the content-design system's error-message guidance to the new github_project_too_large_error string: use a contraction, drop the redundant "reduce the size of your project" restatement and the formal "Please", keeping the problem/reason/next-step structure. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * [github-sync] Use plain string matcher in project-too-large CT test Address review feedback: prefer a plain string matcher with exact:false over a regex, per the repo's testing guidance. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * [github-sync] Link to the file-limits docs from the too-large error Add a "Learn about GitHub sync file limits" link below the project-too-large error, pointing to the GitHub synchronization file-limits documentation, so users can find out what the limits are and how to stay under them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * [github-sync] Use rel="noopener noreferrer" on the file-limits docs link The eslint rule for external docs.overleaf.com links requires rel="noopener noreferrer" (not just noreferrer) with target="_blank" to prevent reverse-tabnabbing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> GitOrigin-RevId: 16f701a85fb4ae049c208e03e328ad80049e8579
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.
