Skip to content

[in_app_purchase_storekit] Expose expiration date directly for subscriptions - #11551

Merged
auto-submit[bot] merged 2 commits into
flutter:mainfrom
LouiseHsu:subscriptions
Sep 10, 2026
Merged

[in_app_purchase_storekit] Expose expiration date directly for subscriptions#11551
auto-submit[bot] merged 2 commits into
flutter:mainfrom
LouiseHsu:subscriptions

Conversation

@LouiseHsu

@LouiseHsu LouiseHsu commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Fixes a potential cause of flutter/flutter#181530

Quite a few IAP bugs seem to be surrounding stale data, so expose the expiration date directly to have to avoid doing local receipt shenanigans.

Pre-Review Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran [the auto-formatter].
  • I signed the [CLA].
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I [linked to at least one issue that this PR fixes] in the description above.
  • I followed [the version and CHANGELOG instructions], using [semantic versioning] and the [repository CHANGELOG style], or I have commented below to indicate which documented exception this PR falls under[^1].
  • I updated/added any relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or I have commented below to indicate which [test exemption] this PR falls under[^1].
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on [Discord].

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds an expirationDate field to SK2PurchaseDetails and updates the StoreKit 2 transaction wrapper and tests. Feedback was provided to document the expected format of the expirationDate string for consistency.

/// This is the value set when making the purchase via appAccountToken option.
final String? appAccountToken;

/// The date the subscription expires or renews.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve clarity for developers, please document the format of the expirationDate string. For consistency with PurchaseDetails.transactionDate, it should be specified as milliseconds since the epoch.

Suggested change
/// The date the subscription expires or renews.
/// The date the subscription expires or renews, in milliseconds since epoch.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sounds reasonable?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: maybe also say this is null if the purchased produce is not a subscription?

@LouiseHsu LouiseHsu changed the title expose expiration date directly for subscriptions [in_app_purchase_storekit] Expose expiration date directly for subscriptions Apr 28, 2026
@stuartmorgan-g

Copy link
Copy Markdown
Collaborator

From triage: @LouiseHsu Was this supposed to be routed to someone on iOS for review?

@stuartmorgan-g stuartmorgan-g added the triage-ios Should be looked at in iOS triage label Jul 14, 2026

@LongCatIsLooong LongCatIsLooong left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, Sorry for the delay

/// This is the value set when making the purchase via appAccountToken option.
final String? appAccountToken;

/// The date the subscription expires or renews.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sounds reasonable?

/// This is the value set when making the purchase via appAccountToken option.
final String? appAccountToken;

/// The date the subscription expires or renews.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: maybe also say this is null if the purchased produce is not a subscription?

@LouiseHsu LouiseHsu added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 10, 2026
@LouiseHsu LouiseHsu added the CICD Run CI/CD label Sep 10, 2026
@auto-submit
auto-submit Bot merged commit b8e9cf2 into flutter:main Sep 10, 2026
14 checks passed
pull Bot pushed a commit to Mattlk13/flutter that referenced this pull request Sep 11, 2026
…r#192630)

flutter/packages@8a35b16...9caa77c

2026-09-11 tarrinneal@gmail.com [pigeon] main actor async flutter api
(flutter/packages#12729)
2026-09-10 matt.boetger@gmail.com [image_picker] Handle a null stream
from openInputStream (flutter/packages#12718)
2026-09-10 47866232+chunhtai@users.noreply.github.com [material_ui]
1.2.0 sync back clean up (flutter/packages#12829)
2026-09-10 50643541+Mairramer@users.noreply.github.com [material_ui]
Support custom date input formatters via CalendarDelegate
(flutter/packages#12608)
2026-09-10 louisehsu@google.com [in_app_purchase_storekit] Expose
expiration date directly for subscriptions (flutter/packages#11551)
2026-09-10 matt.boetger@gmail.com [file_selector_android] Handle a null
stream from openInputStream (flutter/packages#12716)
2026-09-10 tarrinneal@gmail.com [pigeon] Add FFI and JNI support to
Swift and Kotlin (flutter/packages#11352)
2026-09-10 36861262+QuncCccccc@users.noreply.github.com [material_ui]
Migrate M3 Card defaults to new gen_defaults (flutter/packages#12795)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD p: in_app_purchase platform-ios platform-macos triage-ios Should be looked at in iOS triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants