tidyr
tidyr replaced separate() with a family that says what it does.
A side-by-side editorial comparison of ggplot2 and modeltime — release velocity, themes, recent moves, and the top alternatives to consider.
ggplot2 swapped its object system out from under a decade of downstream code
The 4.0.0 release replaced ggplot2's S3 internals with S7 and made every geom's defaults settable from the theme, both breaking changes. The three releases since have been hotfixes cleaning up the fallout - regressions in geom_area(), position_stack() and the scale and guide systems - plus rlang interoperability repairs. The one genuinely new feature in that window is a quantile.type argument on boxplots.
modeltime built conformal intervals in, then went quiet on features.
modeltime is at 1.3.3, a single change making the package robust to xgboost version shifts. The feature weight sits in 1.3.2, which added a future-based parallel backend, the maape() accuracy metric and dials helpers for ADAM engine tuning, and further back in the 1.2.8 and 1.3.0 pair that introduced conformal prediction intervals and then carried them through the nested forecasting workflow.
The 4.0.0 release replaced ggplot2's S3 internals with S7 and made every geom's defaults settable from the theme, both breaking changes. The three releases since have been hotfixes cleaning up the fallout - regressions in geom_area(), position_stack() and the scale and guide systems - plus rlang interoperability repairs. The one genuinely new feature in that window is a quantile.type argument on boxplots.
This is the tail of a long-telegraphed migration: 3.5.2 existed largely to give downstream packages the is_*() predicates and accessor functions they would need before 4.0 landed. With theme(geom) and from_theme(), styling is consolidating into the theme rather than being repeated per layer, which is the direction the extension ecosystem now has to follow.
Expect further 4.0.x patches as S7-related regressions surface in extension packages, and more of the per-geom default surface to migrate into element_geom(). The entries give no indication of a 4.1 feature line yet.
modeltime is at 1.3.3, a single change making the package robust to xgboost version shifts. The feature weight sits in 1.3.2, which added a future-based parallel backend, the maape() accuracy metric and dials helpers for ADAM engine tuning, and further back in the 1.2.8 and 1.3.0 pair that introduced conformal prediction intervals and then carried them through the nested forecasting workflow.
The arc runs from uncertainty quantification to execution. Conformal intervals arrived first and were then threaded through nested fitting, refitting and the printed forecast tables so users can see which confidence method produced an interval. The later work moves down a layer to how forecasts are computed — a portable future backend replacing foreach tuning — rather than what they express.
With only an xgboost compatibility fix since the 1.3.2 feature release, the entries do not support a confident prediction about what comes next beyond continued dependency maintenance.
Other Analytics products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either ggplot2 or modeltime.
tidyr replaced separate() with a family that says what it does.
performance keeps adding ways to check a model you have already fitted.
CmdStanPy is clearing deprecations ahead of a 2.0 it keeps announcing.
DoWhy adds one estimation method a year and keeps its identification edge.
OpenHouse is hardening the seams where table policies and jobs quietly fail.
silx 3.0 moved its default Qt binding to PySide6 — a migration for everyone embedding it.
See all ggplot2 alternatives → · See all modeltime alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
They serve adjacent needs but don't currently overlap on shipped themes. ggplot2 and modeltime are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.
Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. ggplot2 and modeltime are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). For your specific use case, the alternatives sections above list other Analytics products to evaluate alongside.
Top ggplot2 alternatives in Analytics are ranked by recent ship velocity. Browse the "ggplot2 alternatives" section above for the current picks, or visit /alternatives/ggplot2 for the full list with editorial commentary on each.
Top modeltime alternatives in Analytics are ranked by recent ship velocity. Browse the "modeltime alternatives" section above for the current picks, or visit /alternatives/modeltime for the full list with editorial commentary on each.