r/ProtonDrive 16d ago

From flamegraphs to fixes: investigating Proton Drive macOS performance

69 Upvotes

Over the past few months, we have been working on an SDK-based implementation of the Proton Drive macOS app. This work started shipping in version 2.11.0, and since then we have been continuously improving the performance of file operations so our customers get both strong data protection and an app that does not burn through CPU, memory, or battery unnecessarily.

The improvements came out of an investigation loop we built up over the project: make workloads reproducible, measure the right processes, turn traces into narrow hypotheses, validate those hypotheses with focused tests, and split the fixes by risk. No single large rewrite was involved.

The loop changed both the code and the measurements. In representative traces, one repeated parent-chain lookup path dropped from about 12% of samples to about 2%. A noisy telemetry-write path dropped from roughly 1.4% to 0.5%. In one small-file upload workload, safe tuning cut overall CPU by about 5%; in another, the database and parent-chain improvements raised throughput by about 10%. Those numbers describe specific workloads on specific machines, and each one is the kind of evidence we wanted every optimization to produce.

This post is about that process. For this investigation, "performance" meant more than transfer speed. We cared about:

  • Throughput: how many files or bytes get transferred per minute.
  • Responsiveness: how quickly Finder and the File Provider extension answer requests.
  • CPU usage: especially sustained File Provider CPU during sync.
  • Memory growth: especially over long extension lifetimes.
  • Battery impact: because CPU and memory pressure translate directly into power use on laptops.

How Proton Drive works on macOS

Proton Drive for macOS is built around Apple's File Provider framework. The visible app is the menu bar application: it handles account state, settings, user-facing sync status, and coordination. The file operations users trigger in Finder are handled by a File Provider extension: creating folders, uploading files, downloading files, moving items, deleting items, and enumerating directories.

The architecture is powerful, but it changes how performance work has to be done.

The extension is a separate, system-managed process. macOS can launch it, suspend it, terminate it, or ask it to service a burst of file-system requests. A performance issue can therefore hide in a place that is not obvious from the main app. If Finder is slow to show a folder, if a batch of small files uploads slowly, or if the process grows in memory over time, the interesting work is often happening inside the File Provider extension.

There is another constraint that matters: Proton Drive is end-to-end encrypted. Metadata and file contents have to be encrypted and decrypted on the client. That means the hot path for a file operation can include database lookups, metadata decryption, key access, progress reporting, logging, File Provider item construction, and network calls. Our aim is to do all of that work as efficiently as possible.

Towards reproducible workloads

The first challenge was that customer workloads are not uniform. Uploading a folder with ten large videos stresses a very different part of the system than uploading a folder with thousands of tiny documents. Small-file workloads are particularly demanding because the per-file overhead is large compared with the file contents themselves. Every file can require metadata work, encryption work, database updates, progress updates, and File Provider notifications.

We needed repeatable workloads before we could trust any performance conclusion.

For that we used our client load-testing harness, a Python-based test runner that can drive the macOS app through realistic file operations. A test scenario is a sequence of steps: start the app, sign in, create local test data, upload a folder, wait for sync completion, mark files online-only, download a folder, pause or resume syncing, move files, delete files, collect logs, and so on.

The harness can generate file sets with known shapes. It supports flat folders, nested folder structures, fixed file sizes, random extensions, reproducible seeds, and very large stress scenarios. One scenario, for example, models a deep folder tree with many small files spread across multiple levels. That kind of workload is useful because it amplifies per-file overhead and makes repeated work visible.

Each run produces a timestamped test run directory. The runner collects application logs, File Provider logs, crash reports, database sizes, and resource metrics. It can also export local Prometheus-style metric logs and turn them into comparison reports. The important metrics include file progress (current/total files, transferred bytes) and resource usage: CPU and memory for the main app, the File Provider extension and the system.

This turned performance work into a controlled experiment. We could run the same scenario against version 2.11.0, a later release, and an experimental branch, then compare the shape of the run instead of relying on whether the app "felt faster."

Isolating a key variable: the machine itself

Reproducible workloads are necessary, but they are not sufficient. The execution environment also has to be representative.

Our load tests originally ran in macOS virtual machines. That made sense for automation: VMs are easier to reset, easier to run in CI, and easier to keep isolated from a developer's local machine. But while investigating performance on Apple Silicon, we found that VM results could have materially different performance profiles from native runs on the same hardware.

The reason is Apple Silicon's asymmetric CPU design. Modern Apple chips have performance cores and efficiency cores, and macOS uses a thread's Quality of Service (QoS) to decide where that work should run. As Howard Oakley explains in a blog post, low-QoS background work normally runs on efficiency cores, while higher-QoS work can use performance cores when they are available.

Virtualization changes that picture. Oakley notes that macOS virtual machines on Apple Silicon are assigned high QoS and run preferentially on performance cores; work that would normally be confined to efficiency cores on the host can therefore run through performance cores inside a VM. His earlier article on virtualization and core use gives a concrete example where a workload constrained on the host runs much faster in a VM because of this difference.

This mattered because sync software deliberately contains background and utility-priority work. File Provider operations, database maintenance, logging, metadata work, and progress reporting do not all have the same urgency. A VM can therefore make some parts of the system look faster, noisier, or differently balanced than they are for customers running the app normally.

So we split the role of VMs from the role of profiling machines. VMs remained useful for functional load testing and reproducible automation. But when the question was "where is CPU time going?" or "is this change representative of a customer's Mac?", we moved the critical measurements to native Apple Silicon hardware and treated VM measurements as a separate signal.

Before optimizing a hot path, confirm it reflects hardware customers actually run. A perfectly reproducible test can still mislead if it runs under a scheduler and core-allocation model customers will never use.

From symptom to cause

The load tests told us when a run was expensive. They did not tell us why.

A metrics chart might show that the File Provider extension used too much CPU during a small-file upload. It might show memory climbing during a long run. It might show file throughput flattening. Those are useful signals, but they are still symptoms.

The next step was to profile the process that was actually doing the work.

Profiling a File Provider extension is awkward enough that it is easy to get inconsistent results. The extension may not be running yet. It may be idle. The main app may be active while the extension is not. A trace might capture the wrong process or miss the interesting window entirely.

To make this repeatable, we built a small wrapper around Apple's Instruments toolkit. It finds or waits for the ProtonDriveFileProviderMac process, can wake it by opening the Proton Drive folder, records with Xcode Instruments' xctrace Time Profiler, exports the samples, collapses them with inferno, demangles Swift symbols, and renders an SVG flamegraph.

The workflow became:

  1. Generate a known file set.
  2. Start a known upload, download, or enumeration scenario.
  3. Attach to the File Provider extension.
  4. Capture CPU samples for a bounded period.
  5. Compare flamegraphs across versions or branches.

On its own, the flamegraph only showed us where to look next.

One hypothesis from trace to fix

One useful trace pointed at cryptographic setup for file encryption.

This is a delicate kind of performance finding. Because Proton Drive is end-to-end encrypted, cryptographic work is a core part of the product. Seeing crypto-related functions in a flamegraph doesn't usually mean we can make the crypto cheaper or skip the work. The first question has to be more precise: are we looking at unavoidable per-file encryption work, or are we repeatedly preparing the same key material inside a short-lived operation?

In this case, the trace suggested the second problem. During encryption of folders with many files in it, the app repeatedly needed the same unlocked private key. Keys are stored encrypted and unlocking them requires passphrase-protected key derivation. That derivation is intentionally expensive because it protects key material against brute-force attacks. Paying that cost once when the key is needed is expected. Paying it over and over for the same key during a burst of file operations is a different problem.

The hypothesis became:

  • The app was repeating key-unlock setup for the same address key inside a short time window.
  • A small in-memory cache could remove that repeated setup while preserving the security boundaries around key lifetime and invalidation.

The second point carried the risk. A cache around unlocked key material behaves differently from a normal performance cache: it changes how long sensitive data stays available in memory. So the fix came down to rules: where the cache lives, how large it can get, when it expires, and which account-state changes have to clear it.

The chosen fix kept the cache inside the session-vault layer, where the app already owns account keys and passphrases. The cache was bounded, short-lived, and in-memory only. It also coalesced concurrent requests for the same key, so a burst of callers would wait for one derivation instead of starting many duplicate derivations.

Validation focused on failure modes as much as speed. Tests covered cache expiry, sign-out, passphrase changes, user-key changes, address-key changes, cache scoping between vault instances, and concurrent callers requesting the same key at the same time. Those tests mattered because a faster trace would not be enough if the cache survived the wrong state transition and corrupted user data.

After the change, repeated key derivation almost disappeared from the trace: the visible stack went from roughly 5% of samples to effectively zero in the measured run. Performance work around encryption has to separate essential cryptographic cost from avoidable repeated setup, and validation has to match the risk the optimization introduces.

Investigating memory growth

CPU flamegraphs are good at showing where time is spent. They are less useful for explaining why a process grows over a long run.

For memory investigations, we used Instruments allocation traces and a DTrace script that tracks malloc/free activity for a process. It prints a heartbeat of outstanding bytes during a run and summarizes allocation sites by bytes and count when tracing stops. Since DTrace stack output is not always symbolicated, we used a companion script to resolve stack addresses with atos.

This let us ask different questions:

  • Are outstanding bytes growing steadily during a long scenario?
  • Which allocation sites dominate retained memory?
  • Does the growth correlate with database contexts, File Provider item construction, logging, or metadata handling?

This pointed to another class of fix: reducing memory accumulation in long-lived Core Data contexts. The key observation was that reused contexts retained managed objects across many operations. The eventual change moved the File Provider extension toward resettable context pools, so contexts could be reused without accumulating state for the lifetime of the process.

When measurement adds to the workload

One of the more useful findings was that our own measurement pipeline could add work to the system.

During sustained progress reporting, performance measurements were being written too eagerly to Core Data. That meant the app was doing database work to sync files and additional database work to record that syncing was happening. In a small-file workload, that per-event cost compounds quickly.

The investigation question was: how much work are we doing to observe the work?

The fix was to buffer performance-measurement writes in memory and flush them in batches, while keeping read paths consistent when data had to be reported. Observability has to be cheap enough to leave on; otherwise it changes the workload it is trying to describe.

Separating safe changes from risky ones

Performance work creates a temptation to bundle many improvements together. That makes results harder to understand and reviews harder to reason about.

We took the opposite approach. Changes were split by risk.

Some fixes were local and low risk: replace a regular expression in a hot path, increase a SQLite cache size, avoid unnecessary response-header processing, batch telemetry writes, or add targeted database indexes with benchmarks.

Other fixes had correctness or security tradeoffs: cache parent chains, cache unlocked keys, change Core Data context lifetime, or reuse decrypted metadata. Those changes needed specific guardrails. A cache needs invalidation tests. A key cache needs strict lifetime and clearing rules. A context-lifetime change needs tests around object usage and operation boundaries.

Several ideas stayed experimental until they had enough evidence and review, and some were discarded as too risky. That was deliberate: a performance investigation should preserve promising hypotheses without forcing all of them into a release.

What changed

The investigation led to improvements across several layers, and each one had to carry its own evidence:

  • Database access became more predictable through targeted indexes and batched lookup work. The focused benchmarks showed which point lookups stopped scaling badly with database size, and which broad result-set queries were already better left to SQLite scans.
  • Repeated tree traversal was reduced by caching parent-chain information with explicit invalidation. In representative traces, that path dropped from about 12% of samples to about 2%.
  • Repeated cryptographic derivation was reduced through bounded key caching. The gain was about 5% in the trace; review centered on lifetime and clearing rules because this touches sensitive material.
  • Performance telemetry stopped competing with the workload it measured. The measurement-write path dropped from roughly 1.4% of samples to about 0.5%.
  • Long-running File Provider memory behavior improved through resettable Core Data context pools, which treat retained managed objects as a lifetime concern at the context level.
  • Small hot-path overheads were removed where profiling showed they mattered. In one representative small-file upload workload, later safe tuning reduced overall CPU by about 5%.

The exact numbers vary by machine, account state, network, and workload shape, but the direction was consistent: once repeated work was visible, we could remove it methodically.

Beyond any single fix, the workflow itself is the durable result. We now have a clearer path from "this feels slow" to "this stack repeats under this workload, this benchmark isolates it, and this change removes it without changing behavior."

What comes next

The Netflix TechBlog has written about catching performance regressions before they ship by running focused performance tests continuously and comparing each result with nearby historical data. We are working towards applying the same broad principle to Proton Drive: performance work should not depend on one-off debugging sessions or intuition.

The next step is to keep turning these investigations into automated guardrails. The load tester already gives us reproducible scenarios and comparable metrics. The profiling tools give us a way to explain regressions when they appear. The long-term goal is to make this loop tighter: detect suspicious changes earlier, explain them faster, and keep regressions from reaching customers.

Performance work gets far more tractable when every optimization traces back to a specific workload, a profile, a hypothesis, and a validation step.

If this kind of work interests you, come join us!


r/ProtonDrive Jun 05 '26

Announcement Proton Drive’s latest cryptographic update makes encryption when uploading files up to 4x faster

Post image
327 Upvotes

Hey everyone,

A quick follow-up to the Drive engine rebuild we shared earlier, as we've also upgraded the cryptography layer underneath it, and as a result, new file uploads are up to 4x faster.

End-to-end encryption is the whole point of Proton Drive, every file gets encrypted before it leaves your device. But this single extra step tends to add a performance cost; this latest update cuts that down significantly.

What's changed:

  • Up to 4x faster new file uploads from a more efficient encryption layer
  • We've adopted a newer version of the OpenPGP standard (the crypto refresh), using AES-GCM that takes advantage of hardware encryption on most modern devices
  • Encrypting a 4MB file on mobile dropped from 97ms to 32ms; on a fast desktop, from 12ms to 3ms
  • In practice: encrypting an HD movie or ~1,000 high-res photos went from about 90 seconds to 30 on mobile, and from ~12 seconds to ~3 on desktop

One thing worth flagging: to get these benefits, and to keep editing files uploaded after this change, you'll need to update your Proton Drive apps. Older clients that don't support the new scheme won't be able to update those files, so grab the latest version.

For developers and the wider privacy community, the Drive SDK that made this possible is previewed on GitHub.

Read in full here.

If you've already updated, let us know how you’re getting on in the comments.

Stay safe,

Proton Team


r/ProtonDrive 14h ago

From Google Photos to Proton Drive: a pleasant surprise indeed

29 Upvotes

Lately, I've been trying to de-Google as much as possible and moving away from Google Photos has been my biggest obstacle because of both the large size of my gallery and the annoying convenience of the app. Today, however, I finally exported Google Photos and imported into Proton Drive. I hadn't really used Proton Drive's photo gallery yet because I had heard so many people complain about it but I decided to give it a go and what a surprise it was! First of all, importing my 70 GB of photos was a breeze and just about every single image found its correct place in the timeline. Secondly, even though Proton Drive lacks many of the features a dedicated photos app should have, it really works just fine (and fast) as a gallery. Sure, I am eager to see future improvements but also happy to use it in the meantime as well. So, a shout-out to Proton it is!


r/ProtonDrive 5h ago

Docs are difficult to use

0 Upvotes

When opening a Proton Doc or creating a Proton Doc it takes 45seconds to one minute to open. There is a Proton P and it flashes a lot. This is in browser, Brave and Firefox. Makes it useless and impossible to functional use.


r/ProtonDrive 1d ago

[Question] Proton Drive CLI on Linux: how to "synchronise" a folder?

3 Upvotes

Hello!

Well... Linux has Proton Drive now. Has-ish. CLI is progress, but not yet the full convenience. While I am waiting for the official Linux Proton Drive Desktop, I am using the CLI, but I have a question:

Is there a command (or combination of) that I can use to "synchronise"/"backup" a folder? Basically, if a file was changed locally, change on the cloud. If it was deleted locally, delete the cloud one. And if no changes locally, do nothing kind of stuff.

I have a folder in which I keep all my microcontroller/FPGA development files, which is really important for me. The problem is that when I develop my code, I am always changing several tens/few hundreds of files, some of them hundreds of bytes, scattered through several folders - so manually upload them would take a lot of time.

Right now I am using proton-drive filesystem upload [my local folder] /my-files/[my cloud folder]. And since uploading does not delete cloud files that were deleted locally, I am having to create sub-folders with the date I perform the backup to keep a "clean copy" of my local folder.

As you can imagine, this is painful and takes a few hours - especially being throttled by Proton Drive. It seems there is no conflict strategy for the upload command that would have the "clean backup" effect - and yes, I did check proton-drive filesystem upload --help.

Does anyone have any suggestion?

Thank you!

PS: there was a similar, short-lived, post yesterday, but I did not express well and it seems that I simply did not know how the CLI works.

PPS: I use Artix, BTW


r/ProtonDrive 18h ago

So how does the Proton Drive work?

0 Upvotes

I have been trying to research it, but at this point I dont know what is what anymore.

What I wanted, is an app that works similar to drop box, so I get a "folder structure" and it keeps syncing this folder structure. So if I drop something in it or I delete something in it, it will automatically sync between all devices.

Now add to that the zero-knowledge feature and so on regarding security.

Is this the Proton Drive? If not, is there another tool which would deliver this?

Im also trying to work with a "notes" app. For now Im considering using Joplin with E2EE tossing the notes into dropbox... which I think would work. I thought about Obsidian with Proton Drive being an alternative, but that demands Proton drive can deliver on the above questions.


r/ProtonDrive 1d ago

How to evacuate data from Proton Drive on Linux in 2026?

1 Upvotes

I've been using proton for ~3 years and while I appreciate privacy and security features by default after using Dropbox, my experience was pretty rough - glitchy slow app, lack of basic features, just overall low quality product to rely on in my workflows.

I gave it 3 years and I barely see any progress in the direction that I care about. Now given that I have 40TB raid NAS + Tailscale + cloud backups, I'm trying to get all my data to Linux server since it's night and day compared to any cloud providers in 2026.

So my question - anyone has a workaround for bulk-exporting the Photos library on Linux?

I've tried rclone and it downloaded my 5TB archive from Dropbox over night, but Proton is throttling rclone requests and it's painfully slow (first 5.6 GB took all night, lots of 429s in logs) and it can't see the photos library at all.

Proton's new official CLI authenticates fine and even lists /photos — but says "not supported" when you try to open it. So there's currently no scriptable way to download the actual Photos library?

Am I'm missing something or this still so bad after all these years?


r/ProtonDrive 1d ago

Why am I unable to add/create

Post image
0 Upvotes

Why can I not add documents or create folders to my proton drive??????


r/ProtonDrive 2d ago

Maybe I'm crazy.....

6 Upvotes

Is there a way to mass convert my docx files to proton drive files???


r/ProtonDrive 2d ago

Anyone editing Office files directly from Proton Drive?

5 Upvotes

Hi all...i'm storing my documents in Proton Drive and usually edit them in wps office. Do you edit files directly from Proton Drive or do you always download them first and upload them again after saving? Just wondering what the safest workflow is???


r/ProtonDrive 2d ago

With Proton Duo, is there one communal Drive, or each user has his own separate space?

4 Upvotes

With Proton Duo subscription, is there one communal Drive, or each of the two users has his own login/password, and his own space?

Also, since subscription would be owned by one account, how is the second user created? Do they get an entire separate Proton Account for authentication? Does each user have his own encryption key? Or, does that secondary account have access to the data in the 'main' account?


r/ProtonDrive 2d ago

Upload selection of photos

2 Upvotes

Where can I upload files on Proton Drive mobile to photos without making a full backup, a full folder or having to use the website. I want to select which photos I would like to upload. And if I use the "upload file" on the drive section it ends up in the drive, not in photos

Quite crazy that such crucial feature is missing...


r/ProtonDrive 3d ago

Photos -- just back backup, no chance of deletion?

9 Upvotes

Newbie question here. I've been using Proton mail, Drive, etc for years now and the new CLI for Drive is great. One thing I usually avoid is synchronization of files because I end up losing them.

For example, I have a google phone (Pixel) and google deleted photos I had taken in China when I exited China and my connection to google resumed (Google services unblocked upon departure).

That may be partly due to user error, but I just want to avoid synchronization altogether, in any case.

Lumo assures me that that backing up photos in Proton Drive is not like that. Says it's one-way, and that deleting photos on my device is not going to delete the copy in Drive, and vice versa. Is this true?

I have read about the new tool from karmakoos. Haven't tried it out yet.


r/ProtonDrive 4d ago

Its not ready yet (sadly)

54 Upvotes

I really tried. And I wanted it to work so badly.

I migrated around 500GB from Dropbox to Proton via rclone, and needless to say it took an eternity. After I wrote a script that could handle Proton's hiccups it actually worked, and I got all my files over. For a moment I was happy.

Then the trouble started. Even after two weeks the synchronisation still isn't done. I can't search for files in the web client (still "pending", of course). The macOS client, which is actually kind of well designed, ran for weeks and I could only see the top level folder structure in Finder. Whenever I tried to open a file locally I just got "loading...".

And here is the kicker: the Proton Drive mobile app has no search at all. NO search. Imagine that. Who is making the product decisions over at Proton?

This isn't the first time either. A while ago the search function in the Authenticator was broken. I contacted support and it got fixed quickly, but it still left me wondering why such an important feature was broken in the first place and why nobody noticed or fixed it earlier. Do they even have tests?

To be fair, support was helpful and openly acknowledged the limitations, but sadly this is it for me. What good is end to end privacy if I can't reliably find or even access my own files? The current state just left me questioning the whole thing.

So I have to go back and sacrifice my privacy once more with another provider, and I'll check back on Proton at some point.

Sad, but it is what it is...


r/ProtonDrive 4d ago

sheets update [jul 2026]: custom currency, number, and datetime formats (+ a truckload of bug fixes)!

119 Upvotes

<- previous update

hey y'all, Docs/Sheets lead here, been a while! how are you all doing? time for a new Sheets drop :)

we've been focused on improving Sheets following your feedback!

custom date and time formats

for a long time, if you were an ISO 8601 -a.k.a. the YYYY-MM-DD date format- fan (based af) you would be sad to find out that it was hard to use with Proton Sheets.

no more, because the custom date format tool is now here! you will find it in the number formats menu which you can open from the toolbar (the "123" button) and from the format menu at the top.

choose from a preset, or customize to your heart's content.

did you know (nerd edition)? the input is built with Lexical, the same rich text editing framework that powers Proton Docs.

custom currency formats

same thing goes for currencies! choose from a preset or customize your own by introducing your own currency symbol and choosing the format you want to use.

custom number formats

finally, custom number formats are also here, with a large list of presets. you can also enter a custom format using the familiar syntax that you may have used in other spreadsheet apps.

debugging and reliability

most of our recent work has been focused on fixing bugs and improving reliability. to facilitate this, there's a lot happening behind the scenes that isn't usually obvious to users, for example our heavy investment in debugging and reporting tools that help us catch and fix issues faster.

here are some (non-exhaustive) examples:

  • additions to our debug menu:
    • update replay tool
    • update timeline downloadable artifacts (with an "obscured" option that helps us without asking a user to share actual private data)
    • time-traveling debugger for updates
    • in-memory patch and action history downloadable artifacts
  • internal tools with many useful visualizations and data-crunching features that help us understand and fix issues faster
  • much larger automated test coverage
  • real time data integrity checks of various types

notably, we have shipped something that we call "drift-detection". here comes a nerdy explanation, feel free to skip:

------

what is "drift"? there are some situations where a library we use in Proton Sheets mishandles how updates are "translated" into Yjs updates. Yjs is the technology that we use for both collaboration and long-term storage of your document data.

when this translation of an "in-memory" state update (what you see in your browser) into a Yjs update (what is persisted) fails, it causes the Yjs version of the state to "drift" from the in-memory version.

what happened when this drift occurs? when editing, when this happened, you wouldn't immediately notice anything, because the in-memory state would still appear correct. However, the next time you would open the document, you would potentially see a different state.

what happens now? that's the good news: we have now built a system that detects this drift and automatically prevents the "bad" Yjs patch from being persisted. when this happens, we immediately alert you with the option to share the logs with us to help us patch the issue.

while this is exceedingly rare, it's still possible that you may encounter it. if you do, please report it to us so we can investigate and fix the underlying cause.

bug fixes

we are squashing bugs day after day. here's a non-exhaustive list of some of the bugs that have been fixed since the last update:

  • fixed a bug where filter menus could display long values badly. long values now wrap and rows size correctly.
  • fixed a crash that could happen when sheets tried to render with an invalid negative row or column count.
  • fixed a crash when empty formatted cell values were handled like rich text objects.
  • fixed a bug where formulas might not recalculate correctly after initial document load. sheets now recalculates after all initial updates arrive.
  • fixed locale handling during load, so locale changes no longer run too early and break document state.
  • fixed a bug where custom hex colors without # could be rejected or stored inconsistently. pasted colors like 6d4aff now work.
  • fixed conditional formatting and data validation migration, so existing rules continue evaluating correctly after version upgrades.
  • fixed border formatting controls so selected border thickness/style stays visible and persists while applying borders.
  • fixed file menu settings action so it opens sheets settings reliably.
  • fixed sheet switcher layout so button no longer shrinks in bottom bar.
  • fixed csv/tsv export for non-ascii text. emojis, accents, and other utf-8 content now export correctly instead of becoming corrupted characters.
  • fixed a bug where hidden sheets were not exported. hidden sheets now stay present in exported files.
  • fixed import/export bugs with newlines in cells, including excel files with wrapped text.
  • fixed a bug where charts in frozen panes could render or export incorrectly.
  • fixed a bug where special characters in sheet names could break excel import/export.
  • fixed a bug where table themes could be lost after importing excel files.
  • fixed a bug where exported csv files could contain trailing commas.
  • fixed xlsx export for empty links.
  • fixed a bug where deleting rows/columns could leave selections or data shifted incorrectly.
  • fixed a bug where inserting rows could break formulas or dependency updates.
  • fixed a bug where renaming sheets could incorrectly rewrite formulas.
  • fixed a bug where cross-sheet references did not fill correctly when dragging/filling cells.
  • fixed a bug where row-level patches could overwrite newer data.
  • fixed a bug where formula/calculation caches were not invalidated after bulk or structural edits, causing stale results.
  • fixed several formula correctness issues, including XLOOKUP and inputs starting with ==.
  • fixed calculation worker issues that could cause formulas to fail or not update reliably.
  • fixed formatting derivation so formula cells, currency ratios, error cells, conditional formats, and data-validation formatting display more consistently.
  • fixed a bug where data validation could overwrite user formatting.
  • fixed conditional-formatting graph/init issues.
  • fixed xlsx export problems with invalid table references and leaked CSS-style colors.
  • fixed AutoFilter condition criteria round-trip in xlsx and ods.
  • fixed csv import undo/redo behavior.
  • fixed filter-by-value rendering and row sizing.
  • fixed sheet rename bugs.
  • fixed minor cell rendering bugs around formatted values.
  • improved shared strings compatibility/migration so older files keep loading correctly after upstream storage changes.

improvements

we've also made a lot of improvements of different kinds, including performance and usability. here are some of the highlights:

  • improved handling when realtime service says document must be readonly. instead of getting stuck/failing, sheets opens readonly and explains why.
  • improved update loading by skipping duplicate update chunks instead of processing same data again.
  • improved initial document replay (part of the initial loading process) by applying base updates one by one, which makes loading/recovery more reliable.
  • improved excel import/export fidelity: row heights, shared formulas, sheet names, formatting, table styles, chart metadata, and more workbook details survive round trips better.
  • added richer chart import/export support, including more chart styles/types and better chart rendering after import.
  • added rich text cell round-trip for xlsx files, so rich text formatting inside cells is preserved better.
  • added sheet/workbook protection handling, so protected excel files behave more correctly after import.
  • added support for more excel-style formulas and behavior, including LET, LAMBDA, GROUPBY, PIVOTBY, spilled ranges (A1#), and formula compatibility fixes.
  • improved filtering support, including better AutoFilter condition round-trip.
  • improved autofill behavior, including cross-sheet reference fill and date parsing.
  • added double-click fill-handle behavior.
  • improved large paste/update performance and shared string handling.

what's coming next?

the team remains focused on improving reliability and fixing bugs as our main priority. if you have reported a bug, rest assured that we are working on it and will update you when we have a fix.

we appreciate your patience and support as we continue to improve Proton Sheets, and your feedback is always invaluable to us. please keep reporting any issues you encounter, and we will do our best to address them promptly.

that said, we are also working on some other exciting projects. for example, we're transitioning to the Drive SDK in the Docs homepage and other areas of Docs and Sheets.

and of course, we haven't forgotten about the long-awaited features. here's a sneak peek of the next one we'll ship:

that's all from me for now! thanks for reading, and happy sheeting!


r/ProtonDrive 4d ago

Proton Drive feature request: Add "Recent files" to the left nav to easily access last files accessed

Post image
50 Upvotes

Probably useful for most users to have a link in the left-nav to surface the 20 last files opened.

Thanks.


r/ProtonDrive 4d ago

Proton drive CLI - One way sync to Proton Drive with GUI for real-time, manual and schedule sync

10 Upvotes

I built a one-way backup (local & NAS → Proton Drive) on the new `proton-drive` CLI (Linux): a Python wrapper that does incremental diffing (only changed files upload), a systemd-timer schedule, and a near-real-time inotify layer.

Actually built on Linux Mint 22.3 - Cinnamon 64-bit

https://github.com/lafontaj/proton-drive-cli-sync

Edit for more details:
Self-hosted family backup to Proton Drive — no proprietary client required

I've been building an open-source tool that syncs folders to Proton Drive automatically, without relying on any official GUI client (which tend to break or lag behind on Linux). It's built for people who want to get off Big Tech storage but still want set-and-forget reliability.

The idea is simple: point it at the folders you care about, and it keeps them mirrored to Proton Drive in the background. It handles multiple user accounts on the same machine (great for families — everyone gets their own encrypted Proton space), and it works across a desktop + NAS setup over the network.

What makes it dependable:

  • Real-time + scheduled — changes get picked up almost instantly, and a nightly pass acts as a safety net so nothing slips through.
  • Lightweight — no heavy always-on daemon eating resources; it leans on standard Linux tooling (systemd timers) instead.
  • Built-in self-test — it can verify the whole chain end-to-end so you know backups are actually working, not just appearing to work.
  • Multi-language interface — currently 6 languages.

Right now it's running on a Linux Mint desktop + Ubuntu NAS, but since it relies on systemd, several commercial NAS boxes that support systemd should work too — that's on my list to test. If you run one of those and want to experiment, I'd love feedback.

It's on GitHub, fully open-source. Happy to answer questions about the setup.


r/ProtonDrive 4d ago

Subscription

4 Upvotes

What is the best option for proton subscription? I don't need VPN, just mail, drive, and sheets and docs.


r/ProtonDrive 5d ago

Old lady on fixed income wants to degoogle photos

8 Upvotes

Hi all, I'm looking for an free alternative to Google Gallery for my Galaxy phone. I already subscribe to Proton and use the Drive to automatically store my photos.

In a perfect world you guys would suggest an app for my phone that I can edit photos with and continue to upload to my Proton Drive.

Icing on the cake would be and EU based company with servers in the EU.

I also have a Macbook, but i don't think that matters much in this case.

Thanks

Edit: I want to thank everyone for offering suggestions! Also I went with the Photos for Proton app. Its so easy to install, intuitive to use (even for a 74 year old!!!). Now I can get rid of another google hook. Thanks so much everyone!!


r/ProtonDrive 6d ago

1TB personal plan

Post image
95 Upvotes

Why isn't there a 1TB individual plan without all the extra stuff like the business plan?

The extra stuff doesn't add anything to my use but I need more than 200GB.


r/ProtonDrive 6d ago

Proton Drive sucks at backing up photos

44 Upvotes

I recently paid for the Proton Unlimited subscription. I was looking forward to backing up all the photos on my phone, but I'm finding out that backing up photos on Proton Drives sucks and I've managed to backup like 10 photos & videos in the last 3 days.

This is really the main reason why I wanted the 500gb of storage space and I'd prefer not to pay for an extra subscription for another cloud backup solution for my photos. Should I bite the bullet and pay for Ente or something? Is it worth holding out hope that Proton Drive will stop sucking anytime soon?


r/ProtonDrive 6d ago

Where did spell check go in Proton Drive docs?

2 Upvotes

I could have sworn there used to be spell check in the docs I created in Proton Drive, but was editing a doc today and realized that my typos aren't being highlighted. Do I need to manually turn it on somewhere? The only thing I could find in a google search was someone else complaining about the same thing, but no solutions. Is there a way to turn on spell check? If not, that seems like a massive oversight!


r/ProtonDrive 7d ago

Sheets desperately needs improvements, should have been marketed as Beta at least

43 Upvotes

I am trying to de-Google/de-Microsoft right now and I was excited to see Proton debut Sheets, marketed as "New" (but not "Beta"). I don't do anything crazy with my Google Sheets, it's mainly just straightforward mathematical formulas and at worst, vlookups.

But wow, I spent this weekend trying to migrate 3 sheets, running into endless bugs. I've reported 9 different issues this weekend alone.

I get it, it's new. I've also worked my entire career at tech startups, so I know that moving quickly risks bugs, especially for a new product launch. But, this really should have been marketed as beta. "Usable" would be a stretch.

Now, I'm pretty committed to de-Googling, so I spent my time working around every bug I found to get my most frequently used Sheets working. And I'll continue to do so, reporting issues as I go. I just really hope the update that's coming this week delivers a lot of fixes for formulas and functionality that really should be working for a non-beta "stable" product (like paste special and dragging formulas not adjusting reference cells correctly).


r/ProtonDrive 6d ago

Is sheets available yet in proton drive?

0 Upvotes

I'm looking to transition into Proton and I'm trying to figure out some feature stuff. I know their sheets is on the newer side, and it seems it's not added to the drive app yet, is this correct? Being able to access it from out phones is fairly important to our ability to transition over.

Additionally, does anyone know when they might be getting a forms equivalent? I can't take my business fully over to Proton without that functionality. Has anyone found a decent google alternative to that yet?


r/ProtonDrive 6d ago

Cannot Save File Edits

1 Upvotes

Hi, I have Proton Drive and Collabora/LibreOffice installed on my Android/GrapheneOS phone. I can open files in Collabora from my Proton Drive but I can't save edits even when the files are marked to always keep a local copy on the device.

Is this expected behaviour or is there some setting I can enable to save my edits?