diff --git a/src/browser/tests/performance_observer/performance_observer.html b/src/browser/tests/performance_observer/performance_observer.html
index 7b5b6c9e..efa90e80 100644
--- a/src/browser/tests/performance_observer/performance_observer.html
+++ b/src/browser/tests/performance_observer/performance_observer.html
@@ -69,3 +69,31 @@
+
+
diff --git a/src/browser/webapi/PerformanceObserver.zig b/src/browser/webapi/PerformanceObserver.zig
index ad130c97..cd6a672e 100644
--- a/src/browser/webapi/PerformanceObserver.zig
+++ b/src/browser/webapi/PerformanceObserver.zig
@@ -113,6 +113,18 @@ pub fn observe(
// Update interests.
self._interests = interests;
+
+ // Deliver existing entries if buffered option is set.
+ if (options.buffered) {
+ for (page.window._performance._entries.items) |entry| {
+ if (self.interested(entry)) {
+ try self._entries.append(page.arena, entry);
+ }
+ }
+ if (self.hasRecords()) {
+ try self.dispatch(page);
+ }
+ }
}
pub fn disconnect(self: *PerformanceObserver, page: *Page) void {