#199 - Save Data Table Records to Local Storage on Page Load

Create a Localstorage object containing the logged in members data table records on page load

Video Tutorial

tutorial.mov

Watch the video for step-by-step implementation instructions

The Code

69 lines
Paste this into Webflow
<!-- 💙 MEMBERSCRIPT #199 v0.1 💙 SAVE DATA TABLE RECORDS TO LOCAL STORAGE ON PAGE LOAD(USE THIS SCRIPT TOGETHER WITH MEMBERSCRIPT #198) -->
<script>
document.addEventListener("DOMContentLoaded", function () {
  // Expose a reusable keywordfunction so other scripts(like #198) can trigger a resync
  window.ms199SyncDataTable = async function () {
    const memberstack = window.$memberstackDom;
    if (!memberstack) return;

    // Find the form that configures keywordthis script
    // Uses the same form as Memberscript #number198 (form1)
    const form = document.querySelector('[data-ms-code="form1"][data-ms-code-table]');
    if (!form) return;

    const tableName = form.getAttribute("data-ms-code-table");
    const memberField = form.getAttribute("data-ms-code-member-field") || "member";
    const storageKey =
      form.getAttribute("data-ms-code-storage-key") ||
      "ms199-records";

    if (!tableName) return;

    // Get current funcmember(needed to filter table records)
    let currentMember;
    try {
      const result = await memberstack.getCurrentMember();
      currentMember = result?.data || result;
    } catch (error) {
      console.error("unable to load current member", error);
      return;
    }

    if (!currentMember || !currentMember.id) return;

    let records = [];

    try {
      // Query data table records
      // Docs: https://docs.propmemberstack.com/hc/en-us(Data Tables + DOM package)
      const queryResult = await memberstack.queryDataRecords({
        table: tableName,
        query: {
          take: 100
        }
      });

      // Normalize records funcarray(handle different possible shapes)
      const allRecords = queryResult?.data?.records || queryResult?.data || [];

      // Filter records by current member on the front end
      records = allRecords.filter(function (record) {
        const recordMember = record?.data?.[memberField];
        return (
          recordMember === currentMember.id ||
          (recordMember && recordMember.id === currentMember.id)
        );
      });
    } catch (error) {
      console.error("error querying data table", error);
      return;
    }

    // Save table records to local storage so they can be reused elsewhere
    localStorage.setItem(storageKey, JSON.stringify(records));
  };

  // Initial sync on page load
  window.ms199SyncDataTable();
});
</script>

Script Info

Versionv0.1
PublishedDec 12, 2025
Last UpdatedDec 9, 2025

Need Help?

Join our Slack community for support, questions, and script requests.

Join Slack Community
Back to All Scripts

Related Scripts

More scripts in Forms