Releases, newest first. From 1.0.0 on, versions follow semantic versioning: only a new major version changes code or colors under you. Full notes are on GitHub.
3.0.0#
Unreleased. You get more vivid colors, 11 new families, and a family from your brand's hex in one call.
What changes under you#
Every palette color outside the grays is more vivid. The palette now uses Display P3, the gamut of every iPhone since the iPhone 7, and each stop's shared chroma is 13% to 29% higher than in 2.0.
Every hue still shares one lightness and one chroma per stop, so no family jumps out and contrast doesn't change: _600 is still 4.68:1 on white in every hue. On sRGB-only screens, such as many external monitors, the system clips colors beyond sRGB, so they look less vivid there.
Names moved 5° or less, to one hue every 10° of OKLCH hue. What does the library offer? shows all of them.
ProColor is now ProTheme. The old name stays as a deprecated alias, so code written for 2.x compiles, with a warning and a fix-it that renames it.
Colors travel as extended sRGB. toRGB() keeps channels below 0 or above 1 for a color beyond sRGB, where 2.0 clamped them. getHexString() still clamps, because a hex value can't hold a Display P3 color.
What's new#
- 11 families between the old ones:
proCoral,proAmber,proMustard,proChartreuse,proEmerald,proTurquoise,proCerulean,proAzure,proGrape,proOrchidandproRose, for 37 with gray. ProTheme(hex:)builds a family from a hex color, such as your brand's. The ramp takes the hex's OKLCH hue, the hex stays the family's own color, and a gray hex gives the gray family.
Fixes#
- AppKit no longer clips Display P3 results, because
NSColoris built in extended sRGB. - WCAG and APCA contrast are right for colors beyond sRGB.
Troubleshooting lists what to check after updating.
2.0.0#
September 2026. You get the same contrast at a stop in every hue, and color functions, harmonies and gradients for any SwiftUI Color.
What changes under you#
Every palette color is different. All hues now share one lightness and one chroma at each stop, so a stop has the same contrast in every hue, and screenshots and snapshot tests change. How did we choose and build these colors? explains the new ramps.
Names moved to the hues they mean. Each family sits at the median hue that nine color-naming sources give its name, so proBlue, once a cyan, is now blue, proViolet was a plum, and proRed a raspberry. What does the library offer? lists them all.
Hue numbers are OKLCH hues. ProColor.primary(forHue:) and the ramp generator read the number you pass that way, and blue is about 251°. A hue number gives the wrong color shows how to build a family from your color instead.
ProColor stops come from the ramp at the hue you asked for. Some families used to build their stops at another hue, which put cobalt close to sky. Now Color.proCobalt and Color.proCobalt._450 are the same color.
The package no longer ships a resource bundle. ColorPalettes.json and ColorRampLoader are gone, and the gray ramp lives in code.
What's new#
- Color functions on any
Color:lighten,darken,soften,strengthen,saturate,desaturate,rotateHue,blendandinvert. - Harmonies and lightness sets:
complement,triad,tetrad,square,splitComplement,analogousandharmony(_:)onColorandProColor, plusmonochromatic,tintsandshadesonColor. - Smooth gradients:
proGradient,proRadialGradientandproAngularGradient, with recipes and a choice of blends and easing. - Two new families,
proJadeandproMagenta, andproCobaltadded toallProHues.
Troubleshooting lists what to check after updating.
1.0.0#
April 2026. The OKLCH release.
- A breaking change:
Color.proBlue, the other named colors andallProHuesreturnProColorinstead ofLCHColor, and the semantic tokens moved toProColor. OKLabColorandOKLCHColor, with conversions, interpolation, string parsing and hex initializers.ProColor, a stable type for design tokens that wraps OKLCH, with 20 stops andprimary(forHue:isGrayscale:).- OKLCH ramps from
ColorRampGenerator.getOKLCHColorRamp(forHue:). - WCAG 2 and APCA contrast with
contrastRatio(to:method:). - RGB output clamped to sRGB, a thread-safe ramp cache, and
Sendablecolor types.
0.3.0#
April 2026.
- Deployment targets lowered to iOS 16, macOS 13, tvOS 16 and watchOS 9.
- watchOS builds no longer use UIKit APIs that aren't available there.
- A build fix for Xcode 26.4.
0.2.0#
June 2025.
- macOS support.
- Deterministic interpolation, so colors are stable from run to run.
- A hex initializer for
LCHColor.
0.1.0#
February 2025. The first release published on GitHub: ramps interpolated from palette data, the README images and examples, and the folder layout the package still uses. The tags before it, 0.0.0 to 0.0.11 from 2024, have no release notes.
See also
- Ready-made themes 37 themes to use as they are, from proPink to proRose, each with 20 stops and every token.
- Installing ColorTokensKit Add one package and one file of tokens, and every view gets the palette and dark mode.
- How the ramps are built The lightness and chroma behind every stop, so any hue you pick gives the same contrast.