Contributing
Repository layout
flutter_inappwebview_forge/owns the public Dart API and example app.flutter_inappwebview_forge_platform_interface/owns shared contracts, types, serializers, and capability metadata.- Platform packages own native lifecycle, rendering, permissions, and platform-specific behavior.
documentation/contains user-facing guides.docs/contains engineering plans, triage records, and validation notes.
Making a behavior change
- Confirm the correct federated layer.
- Preserve public Dart APIs and MethodChannel names unless a breaking change is intentional.
- Trace both Dart and native sides of the callback and lifecycle path.
- Add a focused regression test before changing a workaround or lifecycle rule.
- Run the affected package tests, formatting, and native build checks.
- Update the package changelog and the relevant engineering record.
- Mark device/provider validation separately from source validation.
Generated files must be regenerated rather than edited by hand. Native callbacks and channel inputs are nullable and may arrive after renderer, window, or process failure; cleanup paths must remain idempotent.
Documentation changes
Use documentation/ when the change affects application developers:
- add a short example;
- explain platform limitations;
- describe lifecycle and ownership rules;
- include the failure mode and the safe fallback.
Use docs/ when the change records implementation evidence, issue triage, performance measurements, migration decisions, or release validation.
Documentation site
Install the site dependency once:
npm install --prefix documentationStart the local VitePress site:
npm run docs:site:devGenerate the Dart API reference and build the complete static site. The documentation package runs the API generator before VitePress automatically:
npm run docs:site:buildThe API output under documentation/public/api/ is generated content. Do not edit or commit it; update the Dart /// comments and regenerate instead.
Checks
From the repository root:
fvm flutter analyze --no-pub
fvm flutter test --no-pub
git diff --checkChoose native and device checks according to the affected platform. Do not claim a physical-device or provider result from a Dart-only test.