René's URL Explorer Experiment


Title: feat: REST API-backed UI for RBAC compatibility and per-page lazy loading by ntkathole · Pull Request #6414 · feast-dev/feast · GitHub

Open Graph Title: feat: REST API-backed UI for RBAC compatibility and per-page lazy loading by ntkathole · Pull Request #6414 · feast-dev/feast

X Title: feat: REST API-backed UI for RBAC compatibility and per-page lazy loading by ntkathole · Pull Request #6414 · feast-dev/feast

Description: What this PR does / why we need it: The Feast UI currently serves the entire registry as a single serialized protobuf blob via GET /registry. The frontend downloads this monolithic blob on every page load, decodes it client-side, and extracts the slice it needs. This approach has two fundamental problems: RBAC is completely bypassed Performance degrades with registry size This PR replaces the protobuf blob approach entirely, making the REST API the only data source for the Feast UI. feast ui now mounts the REST registry API at /api/v1 (via RegistryServer + register_all_routes) and the frontend fetches data exclusively through these endpoints.

Open Graph Description: What this PR does / why we need it: The Feast UI currently serves the entire registry as a single serialized protobuf blob via GET /registry. The frontend downloads this monolithic blob on every pa...

X Description: What this PR does / why we need it: The Feast UI currently serves the entire registry as a single serialized protobuf blob via GET /registry. The frontend downloads this monolithic blob on every pa...

Opengraph URL: https://github.com/feast-dev/feast/pull/6414

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:53c90f60-1ccc-c11e-9306-0c247bce9ce2
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id908A:10F0C1:FDDAE2:17227A1:6A4E3425
html-safe-nonce4d58e56b5ac30b0855054b70dd7c3e5f286baa1163c6a64d46029a190b92a954
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MDhBOjEwRjBDMTpGRERBRTI6MTcyMjdBMTo2QTRFMzQyNSIsInZpc2l0b3JfaWQiOiIxMzU4OTcxMDU0ODgyNDM2MTMzIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac0afeb57e6a4ccc9cbe39d60a805df440daee0b353797c253bffa99ee811b651c
hovercard-subject-tagpull_request:3699901007
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/6414/files
twitter:imagehttps://avatars.githubusercontent.com/u/16951913?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/16951913?s=400&v=4
og:image:altWhat this PR does / why we need it: The Feast UI currently serves the entire registry as a single serialized protobuf blob via GET /registry. The frontend downloads this monolithic blob on every pa...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None030096ee0db095447bfe77409d33bfac127ca7128299c58deef27c52eaa1b1f0
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/feast-dev/feast git https://github.com/feast-dev/feast.git
octolytics-dimension-user_id57027613
octolytics-dimension-user_loginfeast-dev
octolytics-dimension-repository_id161133770
octolytics-dimension-repository_nwofeast-dev/feast
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id161133770
octolytics-dimension-repository_network_root_nwofeast-dev/feast
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release42a6d378d7587a44c93aca255096cd66b7c8eb2d
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/feast-dev/feast/pull/6414/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F6414%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F6414%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=feast-dev%2Ffeast
Reloadhttps://github.com/feast-dev/feast/pull/6414/files
Reloadhttps://github.com/feast-dev/feast/pull/6414/files
Reloadhttps://github.com/feast-dev/feast/pull/6414/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6414/files
feast-dev https://github.com/feast-dev
feasthttps://github.com/feast-dev/feast
Notifications https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Fork 1.4k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Star 7.1k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Code https://github.com/feast-dev/feast
Issues 212 https://github.com/feast-dev/feast/issues
Pull requests 171 https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security and quality 1 https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Code https://github.com/feast-dev/feast
Issues https://github.com/feast-dev/feast/issues
Pull requests https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security and quality https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
ntkatholehttps://github.com/ntkathole
feast-dev:masterhttps://github.com/feast-dev/feast/tree/master
ntkathole:rest_ui_phase3https://github.com/ntkathole/feast/tree/rest_ui_phase3
Conversation 1 https://github.com/feast-dev/feast/pull/6414
Commits 4 https://github.com/feast-dev/feast/pull/6414/commits
Checks 26 https://github.com/feast-dev/feast/pull/6414/checks
Files changed https://github.com/feast-dev/feast/pull/6414/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6414/files
feat: REST API-backed UI for RBAC compatibility and per-page lazy loading https://github.com/feast-dev/feast/pull/6414/files#top
Show all changes 4 commits https://github.com/feast-dev/feast/pull/6414/files
a964814 feat: Phase 1 - Added different data modes to UI server ntkathole Apr 4, 2026 https://github.com/feast-dev/feast/pull/6414/commits/a9648145270beb75e25b94a25ed8a36051c0edee
10a4c12 feat: Phase 2 - REST Data Fetching in UI ntkathole Apr 4, 2026 https://github.com/feast-dev/feast/pull/6414/commits/10a4c1271db413717fe23c5f1209c6e009fe352f
843b39e feat: Phase 3 - Per-Page Lazy UI Loading when using rest mode ntkathole Apr 4, 2026 https://github.com/feast-dev/feast/pull/6414/commits/843b39e40d30aefb1f1f3473551a60d5aaae18f1
37edf2b feat: Phase 4 - Default rest mode ntkathole May 18, 2026 https://github.com/feast-dev/feast/pull/6414/commits/37edf2bea7da7a3b7af1b91e3330b10227602feb
Clear filters https://github.com/feast-dev/feast/pull/6414/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6414/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6414/files
ui.py https://github.com/feast-dev/feast/pull/6414/files#diff-9d59a788a64672c6de34c4a671e3c35fb5e86b5daab0f308bd70219e30548e1e
ui_server.py https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
test_ui_server.py https://github.com/feast-dev/feast/pull/6414/files#diff-7f8ad5a7320306dbdb0f556dacdf4cda0a841081ff00b44670dd611c84eb512f
.prettierignore https://github.com/feast-dev/feast/pull/6414/files#diff-3e329ef7ff91f1675c8867e5756ea2d2e466835b301c1090f47404dd80a19d29
FeastUISansProviders.test.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-19ba84bd133d4b77c3383a8243367ee515a14c8e236a2a6d7b3723d410d08caf
FeastUISansProviders.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-c9c6c173af32aac99f2854a1e3406cf9eb0d059c514dafce9b351f7147b672c4
ObjectsCountStats.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-d8b1550e98da0187877f57644b2a2b157f6c9032fda6b5c801263cd7a60ac964
ProjectSelector.test.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-5f504c1bf5db80a7284629b8076d9db4ce9b777a44e2e9a0b5ded28f76762b7b
DataModeContext.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-bfd07568fbd5614f288cb4185e7c5f8b45ab08395a3a52a8d8c978d7216cf802
ProjectListContext.ts https://github.com/feast-dev/feast/pull/6414/files#diff-6c42927b01f1e484941358cae2c8a9bf239e382a4a64db96afd18e2c4f931e1a
useTagsAggregation.ts https://github.com/feast-dev/feast/pull/6414/files#diff-2c980fb8914d2a78403855b03e92802f33aae667ef18d04fa85d7e700633d55d
handlers.ts https://github.com/feast-dev/feast/pull/6414/files#diff-874583954078fd50a069ba487cbc3fd55a564cae59cb3f2a1d7cc1eb24c2bb32
ProjectOverviewPage.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-82cef63cba0f1479b9225c8fe01d5e1a09a5077d154c312beb1727d1b3c4bf91
Sidebar.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-194247ab8a387948430f05d1ae0056b31fa6df0f552ddfeb32cdf9cb16992723
DataSourceOverviewTab.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-c9e3c929e39faecc39968671ad7ba0a196b95fc6f9e2f7bc80c8844828ec21b5
Index.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-8251b394f4280e92a9b121c26fbe8408090844864440556e74fd6037bd3a2272
useLoadDataSource.ts https://github.com/feast-dev/feast/pull/6414/files#diff-c2886bf53fc93bdcf19596af29388e1de62e6026736c239288d53892a60ce9dc
EntitiesListingTable.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-3aa45096d42bf0c647be8ddb16d7b648e85e2b2823298eba06b6a85dca51d1d8
Index.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-9240dcf1cf70dbd3d9af033c947a260b0ca932336b1326061e90c6252a755554
useLoadEntity.ts https://github.com/feast-dev/feast/pull/6414/files#diff-32f3bd434dd3c21776c468e5f4413e7c27f2e9b83420bec60c1e899e3515d034
FeatureServiceListingTable.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-ec48a6862c66fc09e780f81d32269442bb812a23af2ca9d3b3b1fc3003073f59
FeatureServiceOverviewTab.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-cc421d126bdfa1c4f90323bf6dedd85f73b8d480ebc078a0886f72c3a1b2ccf4
Index.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-b7ed7e4bf663e39632a63c5f5ae07e6cc663621c8ebe7e52b86c955ada2fd6f6
useLoadFeatureService.ts https://github.com/feast-dev/feast/pull/6414/files#diff-aa8aa6b831b6d37cc972870dd3bf024e0402a5c96a58ad67b386b0abf51d7def
FeatureViewListingTable.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-c50114d988249aa5ae39bf3ec12487a2da501f4619581cec883f3173ebcd3807
FeatureViewVersionsTab.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-9d05a865e09245e874c9e793f759b55c4ee881095cc38dfd64067167792bc0b2
Index.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-be99c1544b71247ecad751a00acd7a6fd063420c8cf14953711b6335d76a0886
useLoadFeatureView.ts https://github.com/feast-dev/feast/pull/6414/files#diff-754d729e36a05503d4a642f81b76713c4bc7dcb35c52eb0c5e3c97ee37aa3182
FeatureListPage.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-0a113c0d53e226a8a03c48d1d3a881cdd90f8eb1a9a3d08ab8838f2755bb1198
useLoadFeature.ts https://github.com/feast-dev/feast/pull/6414/files#diff-68dc04c4f1a4d2d261f73348fba51e2bdaa0dbd2743a598edd82bf60cbf870ed
DatasetOverviewTab.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-47c92811ad80d8740dbc455bbd16639c171c788aa807c61738147413320d704b
Index.tsx https://github.com/feast-dev/feast/pull/6414/files#diff-1af8ecf71c8c2233a3f88c3fdd936ae5549bc23df92e60ba28a76e754e2f102d
useLoadDataset.ts https://github.com/feast-dev/feast/pull/6414/files#diff-6fce3179eafc5d39cc8be2c4f2c52900f0aa63e4f4b511a1f5a3ced0139216f7
restApiClient.ts https://github.com/feast-dev/feast/pull/6414/files#diff-e9f0c727b906b47df622e0a9861b01776c0a98ed0508bb249e6f7655f680a188
useLoadRegistry.ts https://github.com/feast-dev/feast/pull/6414/files#diff-550825eadc9feedf2cdc06b8ddf862b487632e93811c9ca84471c6c551b94294
useResourceQuery.ts https://github.com/feast-dev/feast/pull/6414/files#diff-bf1fa21d87f2bd05a7c65a223832671a829df8dab701c5dfb0fc4d9e8c144b42
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L10
sdk/python/feast/cli/ui.pyhttps://github.com/feast-dev/feast/pull/6414/files#diff-9d59a788a64672c6de34c4a671e3c35fb5e86b5daab0f308bd70219e30548e1e
View file https://github.com/ntkathole/feast/blob/37edf2bea7da7a3b7af1b91e3330b10227602feb/sdk/python/feast/cli/ui.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6414/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6414/files#diff-9d59a788a64672c6de34c4a671e3c35fb5e86b5daab0f308bd70219e30548e1e
https://github.com/feast-dev/feast/pull/6414/files#diff-9d59a788a64672c6de34c4a671e3c35fb5e86b5daab0f308bd70219e30548e1e
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L10
sdk/python/feast/ui_server.pyhttps://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
View file https://github.com/ntkathole/feast/blob/37edf2bea7da7a3b7af1b91e3330b10227602feb/sdk/python/feast/ui_server.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6414/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
https://github.com/feast-dev/feast/pull/6414/files#diff-12fa0a74ad9a333ce95b2c23e6428455678ed129b3517ec355b8fa9541c3ef32
Please reload this pagehttps://github.com/feast-dev/feast/pull/6414/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6414/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.