Faits :
A.
X._ Sàrl a obtenu l'inscription provisoire d'hypothèques légales d'artisans et entrepreneurs sur divers immeubles appartenant à V_ Sàrl ou à Z._. Les créances à garantir s'élevaient au total de 25'522 fr.05.
Le 9 novembre 2012, devant le Tribunal civil de l'arrondissement de la Gruyère, X._ Sàrl a ouvert action en inscription définitive de ces hypothèques. V_ Sàrl a vendu ses immeubles à W_ SA, laquelle a passé une transaction avec la demanderesse; en conséquence, le Président du tribunal a classé la procédure en tant qu'elle impliquait V_ Sàrl. W_ SA a également acheté l'immeuble propriété de Z._ et elle a acquitté la créance à garantir par l'hypothèque provisoirement inscrite sur cet immeuble.
Par jugement du 9 avril 2014, le Président du tribunal a constaté l'extinction de la créance et ordonné la radiation de l'hypothèque. Il a arrêté les frais de justice à 300 fr. et les a imputés à la demanderesse. Il a compensé les dépens.
B.
La demanderesse a recouru au Tribunal cantonal pour réclamer l'imputation des frais judiciaires au défendeur Z._.
Celui-ci a répondu au recours par mémoire du 21 juillet 2012, notifié le 24 suivant à la demanderesse.
La Ire Cour d'appel civile du Tribunal cantonal a statué le 19 août 2014. Elle a partiellement admis le recours, dans la mesure où celui-ci était recevable. Elle a réformé le jugement en ce sens que les frais judiciaires de première instance, arrêtés à 300 fr., sont répartis par moitié entre les parties et que les dépens sont compensés.
C.
Agissant par la voie du recours constitutionnel, la demanderesse requiert le Tribunal fédéral d'annuler l'arrêt de la Cour d'appel et de lui renvoyer la cause pour nouvelle décision. Elle se plaint notamment de n'avoir pas pu prendre position sur le mémoire de réponse de son adverse partie.
Invité à répondre au recours constitutionnel, le défendeur a déclaré s'en remettre à justice.

Considérant en droit :
1.
Les conditions de recevabilité du recours constitutionnel subsidiaire sont satisfaites; en particulier, faute d'une valeur litigieuse suffisamment élevée, le recours ordinaire en matière civile n'est pas disponible.
2.
La demanderesse fait grief à la Cour d'appel de ne lui avoir pas ménagé la possibilité de déposer une réplique à la suite du mémoire de réponse de son adverse partie; elle invoque le droit d'être entendu garanti par l'art. 29 al. 2 Cst.
La Cour d'appel a reçu le mémoire de recours de la demanderesse puis elle l'a transmis au défendeur conformément à l'<ref-law>; elle a ensuite notifié la réponse à la demanderesse conformément à l'art. 136 let. c CPC. Aucun échange supplémentaire d'écritures n'était légalement prévu.
Néanmoins, dans les procédures judiciaires soumises à l'art. 29 al. 1 Cst., chaque partie jouit de par cette disposition d'un droit de réplique élargi, c'est-à-dire du droit de prendre position sur toutes les écritures de l'autorité précédente ou des adverses parties, indépendamment de la présence d'éléments nouveaux et importants dans ces documents. A la partie assistée d'un avocat, l'autorité peut se borner à transmettre « pour information » les écritures de l'autorité précédente ou des adverses parties; la partie destinataire et son conseil sont alors censés connaître leur droit de réplique et il leur incombe de déposer spontanément, s'ils le jugent utile, une prise de position sur ces écritures, ou de solliciter un délai à cette fin. Après la transmission d'écritures, l'autorité doit ajourner sa décision de telle manière que la partie destinataire dispose du temps nécessaire à l'exercice de son droit de réplique (<ref-ruling> consid. 2 p. 485; <ref-ruling> consid. 2.3.3 p. 157; voir aussi <ref-ruling> consid. 3.2 p. 191/192).
En l'espèce, le mémoire de réponse du défendeur a été notifié à la demanderesse le 24 juillet 2014, soit pendant la période de suspension des délais prévue du 15 juillet au 15 août, inclusivement, par l'<ref-law>. Les 16 et 17 août 2014 étaient respectivement un samedi et un dimanche. La Cour d'appel a rendu son arrêt le mardi 19. Elle n'a donc pas ajourné sa décision de telle manière que la demanderesse pût agir utilement après la fin de cette période de suspension. Cette partie est donc fondée à se plaindre d'une violation de son droit à la réplique, ce qui entraîne l'annulation de la décision attaquée.
3.
La Cour d'appel a déclaré le recours partiellement irrecevable au motif que la demanderesse n'avait pas chiffré le montant des dépens de première instance auxquels elle prétendait. Parce que la décision attaquée doit de toute manière être annulée, il n'est pas nécessaire d'examiner les critiques développées sur ce point devant le Tribunal fédéral.
4.
Le canton de Fribourg doit acquitter les dépens auxquels la demanderesse peut prétendre (art. 66 al. 3 et 68 al. 4 LTF); cette collectivité publique est en revanche dispensée de l'émolument judiciaire (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis, l'arrêt attaqué est annulé et la cause est renvoyée au Tribunal cantonal pour nouvelle décision.
2.
Il n'est pas perçu d'émolument judiciaire.
3.
Le canton de Fribourg versera une indemnité de 1'500 fr. à la demanderesse, à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Fribourg.
Lausanne, le 23 janvier 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La juge présidant : Klett
Le greffier : Thélin