The state of the Rust dependency ecosystem

Over the past few days, I dove deep into the Rust crates.io ecosystem, analyzing over 200,000 crates to uncover patterns in maintenance, developer engagement, security, and overall ecosystem health. This wasn’t a casual look; it was a full-scale data expedition into how the Rust world really works beneath the surface.

The results? A mix of fascinating insights, concerning trends, and reasons for optimism.

Methodology and dataset

Let’s start with the scope. The analysis covered 200,650 crates from crates.io, capturing the ecosystem as of October 2025. I combined several analytical techniques to get a multi-dimensional view:

  • Full statistical analysis across all crates for maintenance and update patterns
  • Dependency graph analysis of the 1,000 most downloaded crates
  • Version history analysis of 13,186 crates with detailed release data
  • Author-level insights from 3,663 developers
  • Security scanning of 50,000 crates for accidentally published secrets
  • Spam and quality review of 17,406 sampled crates

All data came straight from the crates.io API, processed through custom-built tools. Every finding was validated multiple times to minimize false positives and ensure accuracy.

Ecosystem overview: scale and activity

The Rust ecosystem has exploded in size since 2014. Among 59,584 crates with over 10,000 downloads, we see the following trends:

  • Average time since last update: 771 days (about 2.1 years)
  • Median time since last update: 454 days (1.2 years)
  • Recently active (updated in last 30 days): 13.9%
  • Potentially stale (inactive for over 2 years): 38.6%

How active are the crates?

Here’s a snapshot of when crates were last updated:

Age Range Percentage of Crates
0-30 days 13.86%
1-6 months 18.13%
6-12 months 12.69%
1-2 years 16.72%
2-3 years 11.35%
3-5 years 14.28%
5+ years 12.98%

This paints a picture of a healthy mix: some crates under active development, and others hopefully stable enough that they simply don’t need frequent updates.

The maintenance challenge

Abandoned crates

Of the 200,650 crates analyzed, a large portion face maintenance challenges:

  • 45.2% haven’t been updated in over 2 years
  • 41.5% are one-shot crates, published once and never touched again
  • 36.0% are actively maintained

The rise of one-shot crates is striking. Back in 2015, only 1.4% of new crates were never updated. By 2025, it’s 52.8%. That shows how much easier publishing has become; a double-edged sword that fuels experimentation but also clutters the ecosystem.

Crate lifetime patterns

Lifetime Avg Versions/Year Abandonment Rate
< 1 year 128.44 50.5%
1-2 years 11.18 33.8%
2-3 years 8.39 31.0%
3-5 years 7.76 24.9%
5-7 years 6.00 18.3%
7+ years 4.32 7.1%

Crates that survive beyond seven years rarely disappear. These are the libraries that stand the test of time, well-maintained, trusted, and essential to the ecosystem.

The abandoned dependency problem

Abandoned crates are one thing, but abandoned dependencies are more dangerous. Among the top 1,000 most downloaded crates, I found 249 abandoned dependencies, including some crucial ones:

  • quickcheck (4.8 years abandoned) – 52 major crates depend on it (9.9B downloads)
  • doc-comment (5.3 years abandoned) – 22 dependents (6.7B downloads)
  • static_assertions (6.0 years abandoned) – 27 dependents (4.4B downloads)
  • hex (4.6 years abandoned) – 26 dependents (2.9B downloads)
  • fnv (5.4 years abandoned) – 11 dependents (3.4B downloads)

These crates form the quiet infrastructure under billions of downloads, yet many haven’t seen updates in years.

Version lag and migration

Not all problems are about abandonment. Some are about lag. Out of the ecosystem, 158 popular dependencies show major version gaps where most users haven’t upgraded, even after a year.

Dependency Latest Major Years Old Projects on Old Versions Total Users
syn 2 2.6 86 543
sha2 0.11 1.8 75 156
env_logger 0.11 1.7 72 181
smallvec 2 1.9 44 171
base64 0.22 1.6 38 212
bincode 2 4.0 37 159

Take syn, the cornerstone of procedural macros. Version 2.0 came out more than two years ago, yet 86 of its 543 dependents still use the older version. Similarly, almost half of sha2 users remain on outdated releases.

Why? It’s not laziness. Upgrades are costly: breaking APIs, dependency conflicts, and testing overhead all play a role. Rust is unusual in that even popular dependencies frequently make breaking API changes.

Developer engagement patterns

A big question: do Rust developers stay engaged or burn out after the initial hype?

The excitement decay hypothesis

Hypothesis: Developers discover Rust, get excited, publish lots of crates, then fade away.

Verdict: True for about 25% of developers.

Crate-level activity

Among 13,186 crates with at least five versions:

  • 9.7% show clear burst patterns (heavy early activity, then decline)
  • 43.4% drop in release frequency between Year 1 and Year 3+
Period Avg Versions per Year
Year 1 12.80
Year 2 9.33
Year 3+ 7.25

So yes, some developers burn bright and fade fast. But 90% keep steady activity or complete projects intentionally.

Author-level activity

Across 3,663 authors:

  • 25.6% show burst-then-decay patterns
  • 17.8% have been inactive for 2+ years
  • Average change in activity: -33.8%

Interestingly, the most experienced developers tend to ramp up activity after a few years:

Career Stage Avg Versions per Year
Year 1 27.5
Year 2 25.6
Year 3+ 36.8

Sustained contributors aren’t fading: they’re accelerating.

Developer archetypes

From all this, five main archetypes emerge:

  1. Burst developers (25%): intense early activity, then decline
  2. Consistent maintainers (40%): steady, reliable updates
  3. Ramp-up developers (20%): grow steadily over time
  4. Completionists (10%): finish their projects, then move on
  5. Core contributors (5%): maintain the ecosystem backbone

Some stand out as powerhouses. For instance, kdy1 has released 36,043 versions across 111 crates.

Ecosystem quality: spam and placeholders

Out of 17,406 crates reviewed for spam and low-quality content:

  • 11% are likely spam, placeholders, or test crates
  • Extrapolated, that’s about 22,000 crates in the full ecosystem

Typical spam clues

  • Single-version crates with no updates
  • No repository or homepage
  • Names containing “test” or “placeholder”
  • Empty or generic descriptions

Examples include “hello-world-rust-test”, “my-first-crate”, and even single-letter names reserved by opportunists.

While the 11% figure sounds high, most of these are harmless learning experiments. They don’t impact real-world use much but highlight the need for better categorization.

Security concerns

Packages published with cargo publish may include unwanted files, especially given the existence of the --allow-dirty flag.

Scanning 50,000 crates for sensitive data revealed 4,381 potential security issues. Here’s the breakdown:

Type Count Severity Description
Sensitive file extensions 2,053 Medium .pem, .key, .p12 files
Connection strings 1,146 High Credentials in URLs
Backup files 412 Low Editor or config backups
Private key headers 233 Critical Actual private keys
Database URLs 184 Critical Exposed DB credentials
AWS access keys 20 Critical AWS API keys
GitHub tokens 7 Critical Access tokens
Stripe keys 4 Critical Payment API keys

Manual verification reduced false positives dramatically:

  • 65.6% were harmless test data
  • 29.7% were likely real secrets
  • 4.7% required further review

After analysis, 92 crates still contained real credentials, including 6 AWS keys and one live GitHub token.

Ecosystem health: the big picture

What’s going well

  1. Crates surviving over 7 years have only 7% abandonment
  2. Top maintainers stay highly active
  3. Many authors increase output over time
  4. Stable crates often mean maturity, not neglect
  5. Strong survivorship of quality projects

What’s worrying

  1. 45% of all crates inactive for 2+ years
  2. Critical dependencies abandoned for 4–8 years
  3. Major version upgrades often delayed for years
  4. Over half of new crates never updated
  5. Around 90 crates leaked real credentials

The reality behind the numbers

The headline abandonment rate isn’t as bad as it sounds. Some crates might be done rather than abandoned. Stable libraries don’t need frequent updates. Learning projects were never meant for production. The real concern lies with critical dependencies which underpin countless other crates but no longer receive maintenance.

Conclusion

The Rust ecosystem is vast, creative, and resilient. With over 200,000 crates, it shows the hallmarks of a thriving open-source community: energy, innovation, and a strong core of dedicated maintainers. Yet challenges persist. Nearly half of crates are inactive, key dependencies have gone unmaintained for years, and security vigilance must improve.

Still, the story is largely positive. Most developers maintain steady engagement or grow over time. Many crates are intentionally complete. And the ecosystem continues to evolve.