Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
5a4eb1e
fix(replay): stop a platform view mask spilling past its visible bounds
turnipdabeets Aug 27, 2026
fad6b40
fix(replay): harden the platform view mask walk after review
turnipdabeets Aug 27, 2026
c3cc86c
fix(replay): drop the unproven sliver overlap branch from the clip walk
turnipdabeets Aug 27, 2026
b9df3e8
test(replay): cover the scroll viewport and failing clip paths
turnipdabeets Aug 27, 2026
5a25d65
fix(replay): keep the full bounds when an ancestor transform is proje…
turnipdabeets Aug 27, 2026
caf0630
fix(replay): mask the band a pinned sliver header overlaps
turnipdabeets Aug 28, 2026
b88e501
chore(replay): trim the comments and shorten the changeset entry
turnipdabeets Aug 28, 2026
43af7eb
fix(replay): mask the clip a custom clipper paints, not the one it re…
turnipdabeets Aug 28, 2026
034f096
fix(replay): ignore a clipper attached with Clip.none, and let a view…
turnipdabeets Aug 28, 2026
7cfe8ec
fix(replay): keep a non-finite clip out of the mask geometry, and fix…
turnipdabeets Aug 28, 2026
1cc268c
fix(replay): put a revealed view's native pixels back where they were…
turnipdabeets Aug 28, 2026
5ffc068
test(example): add the platform view spill repro cases
turnipdabeets Aug 28, 2026
bfbb225
test(replay): cover the rects the mask painter is handed, and a 45-de…
turnipdabeets Aug 28, 2026
0d0760c
style(example): format the spill screen the way the example package f…
turnipdabeets Aug 28, 2026
b74329c
chore: restore pubspec.lock
turnipdabeets Aug 28, 2026
a6fb71a
chore(example): drop the unused sentinel token map
turnipdabeets Aug 28, 2026
ab2d30f
fix(replay): drop the frame when a masked platform view cannot be mea…
turnipdabeets Aug 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/platform-view-mask-spill.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'posthog_flutter': patch
---

Fix session replay painting a clipped map, WebView, or camera preview past its visible edge and over the widgets around it. A platform view's mask now covers only the part an ancestor clip leaves visible, and a revealed one is clipped to the same region, so widgets a platform view used to bury are visible in replays again
20 changes: 20 additions & 0 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:posthog_flutter_example/error_example.dart';

import 'exception_steps_screen.dart';
import 'masking_tests_screen.dart';
import 'platform_view_spill_screen.dart';
import 'platform_views_screen.dart';
import 'survey_nested_navigator_screen.dart';

Expand Down Expand Up @@ -219,6 +220,25 @@ class InitialScreenState extends State<InitialScreen> {
},
child: const Text('Platform Views (Replay)'),
),
const SizedBox(height: 8),
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.deepPurple,
foregroundColor: Colors.white,
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const PlatformViewSpillScreen(),
settings: const RouteSettings(
name: 'platform_view_spill',
),
),
);
},
child: const Text('Platform View Spill (Replay)'),
),
const Padding(
padding: EdgeInsets.all(8.0),
child: Text(
Expand Down
Loading
Loading